AWS関連のことを調べてみた2021年11月10日

AWS関連のことを調べてみた2021年11月10日

Go | MySQL | EC2 | RDS の環境構築

## 追記
この記事を書き終わってから、他の方々の記事を検索してみたのですが、AWS SDK for Goを使うのが一般的みたいです。
https://aws.amazon.com/jp/sdk-for-go/

この記事は、EC2を手動で作って、GoのコードをコンパイルしたバイナリファイルをEC2にアップロードする方法です。よろしくお願いします。

## やりたいこと
ゴールは、GoをEC2に、MySQLをRDSに配置して、GoからMySQLに接続できることです。

## Goアプリ
ローカルにGoは既にインストールされている前提です。
ちなみに、僕のGoのバージョンは1.16.6でした。
### ファイル構成
“`
.
├── go.mod
├── go.sum
├── init.sql
└── main.go
“`
### ファイル作成
usernameとappnameは適宜変更してください。

“`zsh:zsh
$ go mod init github.com/username/appname
$ go get github.com/go-sql-driver/mysq

元記事を表示

【Terraform】Terraformを使用したECS Webアプリ構築

[【AWS】AWS CLIとECS CLIを使用したECS Webアプリ構築 ~バッチ化まで~](https://qiita.com/Shoma0210/items/3eaad5d53d88b87362f3)の記事では、ECSのリソースをバッチで作成しました。
しかし、異常系を考慮できていないことやリソース管理が難しいという問題があります。
そこで、設定ファイルを作成することで作成・更新・削除などの管理を簡略化できるTerraformを利用します。

また、Terraformの実行環境についてもコンテナ化しています。この記事では説明を省略しますので、ご興味のある方は詳細は[こちら](https://qiita.com/Shoma0210/items/7178284e4fdbcd5f9dc2)の記事でご確認ください。

# AWS構成図

![ecs_alb_webapp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1166959/97f5cbfe-be76-b62a-7643-4b2a92845849

元記事を表示

Add custom header to S3 CreateBucket request

Sample code for adding custom header to CreateBucket request.
AWS-SDK’s [CreateBucket](https://docs.aws.amazon.com/sdk-for-go/api/service/s3/#S3.CreateBucket “CreateBucket”) does not let you add custom headers so you have to create your own http request.

“`golang

import (
“fmt”
“log”
“net/http”
“time”

“github.com/aws/aws-sdk-go/aws/credentials”
v4 “github.com/aws/aws-sdk-go/aws/signer/v4”
)

func createBucket() {

endpoint := “https://xxx.xxx.xxx/”
region := “region-1”
bucketName :

元記事を表示

起動時ボリュームアタッチできない

現象:
AWS上Windowsのあるボリュームをオフラインにした後にデタッチし、
再起動したら、他のボリュームがオフラインにしてしまった。

原因:
NVMe ドライバーを使用するインスタンスタイプ において、過去に OS 上でディスクをオフラインにした情報がレジストリに残ることが原因で、インスタンスの停止・起動を行う際、アタッチされたディスクがそのレジストリ情報を参照することでディスクがオフラインとなることがございます。
※https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html#ec2-nitro-instances

対策:
. デタッチしたらデバイスマネージャー (devmgmt.msc) を起動
. “表示” -> “非表示デバイスの表示” にチェック
. “Storage controllers” を開く
. アイコンの色が薄くなっている “AWS NVMe Elastic Block Storage Adapter” を右クリックし、”場所” の番号が起動時オフラインであったディス

元記事を表示

pandas 辞書にバリュー(値)を追加する

#やりたいこと
決まったキーを持つデータをfor文で回して1つのデータにしたい。
APIで毎分データを取得する。それを1つのデータにしたかった。

#方法

“`python
df_all = pd.DataFrame([])

def func(year,month,day,hour,minute):
#引数により、取得するデータを指定
object_key_name = f'{year}/{month}{day}/{hour}/{minute}.json’
#アクセスキー入力
s3 = boto3.resource(
‘s3′,
region_name=’ap-northeast-1’,
aws_access_key_id = ‘xxx’,
aws_secret_access_key = ‘xxx’,
)

bucket = s3.Bucket(buc

元記事を表示

DatabricksにおけるAWS PrivateLinkのフロントエンド接続の設定(実践編)

本書では、AWS Workspaces上の仮想マシンからPrivateLink構成のDatabricksにアクセスできるようにフロントエンド接続の設定を行います。バックエンド接続の設定に関しては、[DatabricksにおけるAWS PrivateLinkの有効化](https://qiita.com/taka_yayoi/items/c6bdbb6452f6a0895961)、および、[DatabricksにおけるAWS PrivateLinkのバックエンド接続の設定\(実践編\)](https://qiita.com/taka_yayoi/items/1ca54463469df05dd3ee)をご覧ください。

# AWS Workspacesの設定

公衆回線経由でアクセスしないように、念のために**インターネットへのアクセス**を**無効**にしておきます。こちらの**VPC**と**サブネット**をメモしておきます。

![Screen Shot 2021-11-09 at 21.39.56.png](https://qiita-image-store.s3.ap-north

元記事を表示

パブリックなALBからプライベートなEC2にアクセスしてみた

「なんだかEC2をプライベートに置きたいなあ」
なんてことないですか?
僕はよくあります。
そんな時に、NATゲートウェイなどを使う方法もありますが、今回はALBを使用してプライベートなEC2にアクセスしてみたいと思います。

# 構成図
![temp-ALB.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1162215/036703c8-b18a-60ee-4974-18aecc3fdb29.png)

– パブリックサブネットにALBを設置
– プライベートサブネットにEC2を設置
– EC2にはALBからのアクセスを許可
– せっかくなのでマルチAZにしてみる

# 前提
– VPCは`10.0.0.0/16`で作成済み
– パブリックサブネットは`10.0.1.0/24`と`10.0.2.0/24`で作成済み
– プライベートサブネットは`10.0.10.0/24`と`10.0.11.0/24`で作成済み
– AmazonSSMManagedInstanceCore」ポリシーをアタ

元記事を表示

terragruntの使い方

##はじめに
この記事は、terragruntについて学習する機会があった投稿者の備忘録として記したものである。

###terragruntって何?
+ 複数のディレクトリで定義したterraformのコードを一括でデプロイ出来るようにする為のツール
+ ラップツールと呼ばれたりする

###どうやって使うの?
使い方は簡単。パッケージをインストールして、`terragrunt.hcl`で定義をつけるだけ。

####①インストールする。(投稿者はmac環境なので`brew`コマンドでインストールする)

“`
# brew install terragrunt
“`

####②全ディレクトリを一括で叩く為の場所をつくる
何を言っているのかわけがわからないと思うので、以下にディレクトリの構成図を例として記す
例として挙げているのはネットワークのデプロイ部分である。
従来の場合(terragruntを使用しない場合)、環境ごとのディレクトリを構成し、その配下にモジュールを配置し、そのディレクトリへ移動して_apply_を実行する形となっている。

_従来のterraform構

元記事を表示

ターミナルでのawsコマンドを入れるのに困った

tips的な記事。

awsの学習をする際にCLI(command line interface: アクセスキーで保護)を使おうと思ったのですが、

そもそもAWS初学者であるためターミナルから[aws]コマンドのパスが通ってないので、調べました。
(いわゆる zsh: command not found: awsのやつ)
# やったこと
## 手順1
最新版でいいや!っ思ったので、

“`
pip3 install awscli –upgrade –user
“`
を実行

これでおけぃ!ったなりましたが、
`aws –version` は普通にエラーでました(公式チュートリアルの意向に従ったのに。。)

## 手順2
PATHを通さないと行けないのですが、

“`
export PATH=~/.local/bin:$PATH
“`
で行けました

### エラーでハマったこと
記事の中には

“`
export PATH=/Users/ユーザーのなまえ/Library/Python/3.7/bin:$PATH
“`
でいけるパターンもあるそうですが、自分はうまく

元記事を表示

【AWS】踏み台サーバの構築方法について(SSH転送)

#踏み台サーバとは
踏み台サーバとは、SSH接続を利用し特定ポートの転送をすることで、目的のサーバにアクセスする技術。(SSHポートフォワーディングとも)
AWSなどクラウド環境ではよく利用する技術。

#流れ

1.EC2インスタンスを作成する。
2.セキュリティグループを設定する。
3.接続確認

※VPC作成等については別に記載する。

以上、非常に簡単。

#具体的な手順

①インスタンス生成
とりあえず、Linuxで作成する。
一例としてCentOS
※最小構成でよい

②作成したEC2のセキュリティの編集
接続させるポートのインバウンドを編集する

③接続出来たら完成

接続に失敗してる場合はクライアントツールなどの設定を見直すと解決する。

元記事を表示

AWS ECS on Fargateを使ってコンテナ構築~コンテナレジストリ構築編~

# はじめに

[機械学習モデルの推論結果を返す Web API を FastAPI で作成](https://qiita.com/honda28/items/1cef6e3ac63077aa893e)で作成したものを AWS 環境でデプロイする。Docker を用いた開発環境で作成したアプリであるため、そのままコンテナイメージを活用して AWS ECS on Fargate 上で稼働させる。[AWSコンテナ設計・構築[本格]入門](https://www.amazon.co.jp/gp/product/4815607656/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1)を参考にした。全体の流れは以下である。

1. [ネットワーク構築](https://qiita.com/honda28/items/94ff481fb9256b339944)
1. コンテナレジストリ構築
1. オーケストレーション構築

構築はすべて AWS CloudFormation を用いて実行する。CloudFormation で使用するテンプレートファイ

元記事を表示

AWS ECS on Fargateを使ってコンテナ構築~ネットワーク構築編~

# はじめに

[機械学習モデルの推論結果を返す Web API を FastAPI で作成](https://qiita.com/honda28/items/1cef6e3ac63077aa893e)で作成したものを AWS 環境でデプロイする。Docker を用いた開発環境で作成したアプリであるため、そのままコンテナイメージを活用して AWS ECS on Fargate 上で稼働させる。[AWSコンテナ設計・構築[本格]入門](https://www.amazon.co.jp/gp/product/4815607656/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1)を参考にした。全体の流れは以下である。

1. ネットワーク構築
1. コンテナレジストリ構築
1. オーケストレーション構築

構築はすべて AWS CloudFormation を用いて実行する。CloudFormation で使用するテンプレートファイルは、[AWSコンテナ設計・構築[本格]入門](https://www.amazon.co.jp/gp/prod

元記事を表示

AWS上でデータの収集、加工、分析を行う

#はじめに
kaggleなどでデータ分析の勉強を行う際は、既に加工されて分析しやすい形になったデータに対して分析を行うことが多いと思います。しかし実務ではデータの収集から行う必要性があったり、分析に適さない生データを扱うことになると思います。

そこで一からデータの入手・加工・分析までの流れをやってみようということと、AWSの経験値を積むために、AWS上で一連の流れを処理するためのアーキテクチャを作成しました。

#学習方法
AWSについてはネットで調べつつ繋げていくのがメインでした。
個々の実装やサービス同士の繋げ方については、別で記事をあげていきたいなぁと思ってます。

スクレイピングについては、udemyの「【4つの実案件で学ぶ】Python Webスクレイピング完全パック」で学びました。実案件を交えつつ、非常に分かりやすい内容となっています。

#作ったもの

一週間に一回、バイク王さんの中古バイクのデータを取得し、データ分析を行える状態まで持っていくアーキテクチャです。
下図が今回作成したものになります。

![image.png](https://qiita-image-s

元記事を表示

AWS CP単語

自己学習用メモ

【ユーザ】

AWS マネジメントコンソール

アカウント登録して最初に利用するGUI

AWSマネジメントコンソールを利用する際に、ユーザーIDとパスワードによるログインを実施

IAM AWS Identity and Access Management

アクセス権限管理を行うサービス

各開発者に対してAWSリソースの利用を制御できるサービス

IAMポリシー

最小限のアクセス権として、タスクの実行に必要なアクセス許可のみ付与

IAMユーザグループ

「1000人などの多数のユーザーがいる会社などで各部署ごとにアクセスする場合に有効」

オンプレミス環境では運用チームがID管理をし、AWSで同じ役割を実行するのに役立つサービス

MFA

多要素認証

「ログインするときに、ユーザー名とパスワードに加えて、高いセキュリティ」

EC2 for MySQL

管理はユーザーにゆだねられる

AMI(Amazon マシンイメージ)

EC2インスタンスのイメージを取得して、そのイメージから新しいインスタンスを作成   

さまざまな設定のインスタン

元記事を表示

AWS認定 ソリューションアーキテクトアソシエイト(SAA)に合格するまで

AWS認定**ソリューションアーキテクトアソシエイト(SAA)**に合格しました。合格までの道のりを記録しておきます。

※この記事ではオンライン試験の詳細など、クラウドプラクティショナーの記事と重複していて、不要な箇所は省略してあります。
https://qiita.com/hiyanger/items/a36c6a20e4a8876b737f

###概要
・AWSの**中級**の試験で、**アーキテクト**の他には**デベロッパー**、**運用**と全3種類ある。
・アーキテクトなので**設計分野**がメインの試験です。
・受験料は**15,000円**
・試験時間は**140分**
・出題数**65問**
・合格は0~1000点間で**720点以上(72%以上)**
・合格率は**50%程度**(実際の数値なしなので噂レベル)
・受験はピアソンかPSI(オンライン受験可能)

###予備知識
AWSへの移行や、既存AWS環境の保守などを片手間レベルでやったりしてたので、若干知識はありました。EC2、RDS、ELB、S3等主要なシステムはざっくり把握していた感じです。また、クラウ

元記事を表示

Serverless入門で作りたいと思っている簡単なサービス

# 書き始め
まず最初に記事にしてしまえば、やるであろうという願望のもと、書き始めています。

# 目標
AWSの以下のブログから、1日に1度、スクレイピングしてきて、新しいブログが発見できたら、そのブログのタイトルとURLを一緒に自分のアカウントにツイートさせる。

以下のアーキテクチャを目指します。
![Architecture.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593337/1c2a8e88-1972-39e8-3bdd-8593148acfa5.png)

# 環境
– MacOS 11.6
– VisualStudio Code
– Python3.9
– Serverless Framework 2.65.0
– エンジニア二年目

# 参考にするサイト
– Tweeter APIの使い方:

https://qiita.com/bakira/items/00743d10ec42993f85eb

– Scrapy(スクレイピング)の使い方:

https://ai-inter

元記事を表示

CloudFront単体でレスポンスヘッダを付与できるようになった!!(Lambda@Edgeなしでのレスポンスヘッダ設定)

今までCloudFront+S3で公開しているシステムはレスポンスヘッダを付与したい場合にLambda@Edge等で設定してやる必要がありました。
しかし、今回のリリースでCloudFrontだけでレスポンスを付与できるようなったらしいので、調べてみました。

https://aws.amazon.com/jp/about-aws/whats-new/2021/11/amazon-cloudfront-supports-cors-security-custom-http-response-headers/

# レスポンスヘッダーポリシーについて

ポリシーメニューから`レスポンスヘッダー`を選択します
デフォルトでいくつか登録されているのが分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/325108/7f81bc36-4d90-94b8-4b65-cd8272df8455.png)

### デフォルトで登録されているポリシーを開いてみる

デフォルトで登録されているポ

元記事を表示

プライベートなEC2にSSMセッションマネージャーで接続してみた

AWSのセキュリティ関連の話で、
「EC2やRDSはプライベートサブネットに配置しましょう」
という話がよく出てきますが、プライベートなEC2へのアクセスにはプラスαの作業が必要です。
NATゲートウェイを使用するという方法がありますが、今回はSSMセッションマネージャーを使用したプライベート接続をやってみたいと思います。

# 構成図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1162215/b5d43e4f-550a-d039-81dd-37502aa1eb3d.png)

## 軽く説明
やることは結構シンプルです。
1. EC2にアタッチするIAMロールを作成する
2. プライベートサブネットにEC2インスタンスを構築する
3. VPCにプライベートリンクを設置する
4. SSMセッションマネージャーでEC2インスタンスに接続する

# 前提
– VPCは`10.0.0.0/16`で作成済み
– DNSホスト名の解決を「有効」に変更しておく(デフォルトでは無効)
![imag

元記事を表示

CloudFormationで出会ったエラー集【随時更新】

###Circular dependency between resources: [xx,yy,zz]

循環依存でループになってしまい発生するエラー。
回避するには下記を追記

“`yml
Transform: AWS::Serverless-2016-10-31
“`

https://aws.amazon.com/jp/premiumsupport/knowledge-center/cloudformation-circular-dependency-sam/

ただ、IAMが関わると少し注意が必要らしい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469267/d71a332f-c29c-1cef-ced8-8379fc7ffcc9.png)

####Template format error: Every Default member must be a string.

パラメータの値として関数は使えないみたいなので、文字列リテラルにし解決。
また、下記の

元記事を表示

はじめてのAWS CloudFormation -S3バケット作成編-

# はじめに
AWSのCloudFormationに対して、なんとなくとっつきにくいイメージを持っていたので、手始めによくある設定のS3バケットをテンプレート化してみました。

# CloudFormationテンプレート作成環境を整える
VScodeでCloudFormationテンプレートを書くにあたって、以下の記事を参考に環境を整えました。

– 参考記事:[DevelopersIO:VS Code拡張機能を追加してCloudFormation開発環境をレベルアップする](https://dev.classmethod.jp/articles/20211008-vscode-extention-settings/)

拡張は”CloudFormation support for Visual Studio Code”と”cfn-lint”のみ導入しました。”pydot”と”indent-rainbow”は現状必要なさそうだったので導入していません。

# S3バケットのパラメータ設計
作成するバケットのパラメータを一度GUIベースで考えてみます。
AWSインフラ環境を新規構築する

元記事を表示

OTHERカテゴリの最新記事