- 1. Go | MySQL | EC2 | RDS の環境構築
- 2. 【Terraform】Terraformを使用したECS Webアプリ構築
- 3. Add custom header to S3 CreateBucket request
- 4. 起動時ボリュームアタッチできない
- 5. pandas 辞書にバリュー(値)を追加する
- 6. DatabricksにおけるAWS PrivateLinkのフロントエンド接続の設定(実践編)
- 7. パブリックなALBからプライベートなEC2にアクセスしてみた
- 8. terragruntの使い方
- 9. ターミナルでのawsコマンドを入れるのに困った
- 10. 【AWS】踏み台サーバの構築方法について(SSH転送)
- 11. AWS ECS on Fargateを使ってコンテナ構築~コンテナレジストリ構築編~
- 12. AWS ECS on Fargateを使ってコンテナ構築~ネットワーク構築編~
- 13. AWS上でデータの収集、加工、分析を行う
- 14. AWS CP単語
- 15. AWS認定 ソリューションアーキテクトアソシエイト(SAA)に合格するまで
- 16. Serverless入門で作りたいと思っている簡単なサービス
- 17. CloudFront単体でレスポンスヘッダを付与できるようになった!!(Lambda@Edgeなしでのレスポンスヘッダ設定)
- 18. プライベートなEC2にSSMセッションマネージャーで接続してみた
- 19. CloudFormationで出会ったエラー集【随時更新】
- 20. はじめてのAWS CloudFormation -S3バケット作成編-
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インフラ環境を新規構築する