- 1. [AWS CloudFormation][AWS SAM] FleetProvisioningテンプレート定義
- 2. AWS Lamp環境構築
- 3. AWSにDBサーバーの構築とWebサーバーとの接続を行う
- 4. AWS日記20 (Amazon Elasticsearch Service)
- 5. CloudFormationを使ってCloudFront+S3の静的サイトを構築
- 6. DynamoDB Transactionsをgolangで実装してみる
- 7. amplify init で403エラーの対処法
- 8. RDS Snapshotと既存コードからElastic Beanstalk環境を複製
- 9. AWS用語集
- 10. Aws に VPNサーバをリモートの環境を作る(SoftEtherVPN)
- 11. Laravel+SESでメールを送信する
- 12. “Beyond the Twelve-Factor App” & “The Twelve-Factor App”から学びAWSで実践する (3)依存関係管理 / 依存関係 – 依存関係を明示的に宣言し分離する
- 13. AWS SAM CLIでHttpApiのローカルエミュレートがサポートされたのでWSL2のDocker上で使ってみた
- 14. [aws] CloudFormationによるインスタンスの作成
- 15. インフラエンジニアのAI(ML)入門、そしてMLOpsへ【AWS DeepRacerで学ぶ】
- 16. Firewall Manager で使ってないセキュリティグループを監視
- 17. AWS CLI v2のTips
- 18. S3へのEndpointが設定されているVPCでECS(Fargate)を使う場合の注意点
- 19. 【Docker × ECS入門】docker compose upでECSデプロイ
- 20. AWSのVPC Lambdaからエンドポイント経由でSQSにアクセスする際の注意
[AWS CloudFormation][AWS SAM] FleetProvisioningテンプレート定義
# 構文
以下が[公式ドキュメント](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-provisioningtemplate.html#cfn-iot-provisioningtemplate-preprovisioninghook)に記載されている構文
“`yaml
Resources:
ProvisioningTemplate: # 任意の名前
Type: AWS::IoT::ProvisioningTemplate
Properties:
Description: String # 説明
Enabled: Boolean # フリートプロビジョニングテンプレート有効/無効
PreProvisioningHook: # プロビジョニング時にフックするLambda
ProvisioningHook
ProvisioningRoleArn: String # [必須] デバイスをプロ
AWS Lamp環境構築
# やること
AWS上にLamp環境構築## EC2(Linux)環境構築
1.AWSコンソールからEC2を選択し、インスタンスを起動を選択
2.Amazon Linux 2 AMI (HVM), SSD Volume Typeを選択し、残りの設定はお好みで設定する
3.ssh通信をするためのキーペアを作成し、ダウンロードしておく
4.作成したEC2のセキュリティタブからセキュリティグループを選択し、**インバウンド通信にsshを追加することで、外部からのssh通信を許可**する
5.ターミナル上でダウンロードしたキーペアのあるディレクトリに移動し、ssh接続を行う“`
ssh -i {ダウンロードした証明書} ec2-user@{作成したEC2のパブリック IPv4 DNS}
“`※パブリック IPv4 DNSはインスタンス概要から確認できる
## Apache環境構築
1.EC2の**インバウンド通信にhttp**を追加し、外部からのhttp接続を許可する
2.以下のコマンドでapacheをインストールし起動する“`
sudo yum -y install
AWSにDBサーバーの構築とWebサーバーとの接続を行う
# はじめに
AWSはAmazon Web Servisesの略で、Amazonが提供しているクラウドサーバーのサービスです。
AWSへの理解度を高めるために、学んだことをアウトプットします。
今回はネットワークとの関係を記載します。# 今回の流れ
前提として、AWSにVPCとパブリックサブネットはすでに作成している状態とします。
VPCのIP範囲 => 10.0.0.0/16
パブリックサブネットのIP範囲 => 10.0.1.0/24
参考) https://qiita.com/daisuke30x/items/7501f9018386240c09a8* プライベートサブネットの作成
* DBサーバーの作成
* DBサーバーとWebサーバーとの接続
* DBサーバーへ接続する設定# プライベートサブネットの作成
### プライベートサブネットとは
インターネットから接続できないサブネットのことです。
インターネットから直接接続してほしくないサーバーを作りたい時に作成します。
例えば、DBはインターネットから直接接続してほしくないものの典型です。### プライベー
AWS日記20 (Amazon Elasticsearch Service)
# はじめに
今回は Amazon Elasticsearch Service を試します。
DynamoDBからデータをロードする方式を試します。
[Lambda関数・SAMテンプレート]
(https://github.com/tanaka-takurou/serverless-elastic-search-page-go)# システム構成図
![20201031.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586707/bc7ba83f-4d5d-3f63-a96e-06304ee49b8c.jpeg)# 準備
[AWS SAM の準備をします](https://qiita.com/tanaka_takurou/items/cae7c19fc3aaf0031abb)[Amazon Elasticsearch Serviceの資料]
[Amazon Elasticsearch Service](https://aws.amazon.com/jp/elasticsearch-serv
CloudFormationを使ってCloudFront+S3の静的サイトを構築
## 目標
– 静的サイトをS3に用意し、CloudFrontから公開する
– S3はCloudFrontからのアクセスのみ許可する
– アクセスログをS3バケットに格納する
– 独自ドメインは使用しない
– CloudFormationで作成する![static-site.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123946/0d17e7ef-32ab-8b8b-b446-fa3e46d385e3.png)
### 静的ウェブサイトの設定について
そもそも静的ウェブサイトの設定方法は2020年10月6日時点では、以下の設定があるようです。– アクセスがオリジンアクセスアイデンティティ(OAI) で制限されたオリジンとして、REST API エンドポイントを使用する
– 匿名 (パブリック) アクセスを許可して、ウェブサイトのエンドポイントをオリジンとして使用する
– アクセスが Referer ヘッダーで制限されたオリジンとして、ウェブサイトのエンドポイントを使用する
– AWS Cl
DynamoDB Transactionsをgolangで実装してみる
# はじめに
もう、この記事のタイトルからして「トランザクション管理するならDynamoDBなんて使わないでRDB使いやがれ!」って言われそうなんだけど、必要になってしまったのだから仕方ない。まあ、基本的な動作検証については以下の記事がよくまとまっているので、ほぼこれをなぞったような感じではあるのだけど……。ひとまずいくつか動かしてみたので、記録しておく。
【Qiita】[DynamoDBでのトランザクションを実際に使って考えてみる。](https://qiita.com/silverbox/items/18036bb08f16618c21f5)
# DynamoDBの構成
ひとまず、やりたいことはGSIとかLSIはあまり関係ないのだけど、たまに「使わなかったら問題ないけど使ったら想定通りに動かない」⇒「調べてみたら制限事項でしたー!」なことがあるので、最初からGSIもLSIも定義して動かしてみる。IdとNameで構成された入った普通のテーブルだ。
都合上、Idを同じにしてNameを別にするというデータ投入をしているが、あまり気にしないでもらいたい。“`HCL
res
amplify init で403エラーの対処法
# AWS Amplify の初期化操作でエラーが発生
amplify init を実行すると、403(権限エラー)が返される。“`
$ amplify init
・・・設定操作・・・
UnrecognizedClientException: The security token included in the request is invalid.
code: ‘UnrecognizedClientException’,
time: 2020-10-31T10:41:52.312Z,
requestId: ‘XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX’,
statusCode: 403,
retryable: false,
retryDelay: 67.97450344209615
}
“`#原因
~/.aws/credentialの情報が古かったのが原因。(すでに存在しないIAMユーザが設定されていた。)#対応
amplify configure を実行。(実行過程でamplifyで使用するIAMユーザが作成され
RDS Snapshotと既存コードからElastic Beanstalk環境を複製
## 目標
最近ステージング環境が壊れたのですが、DBは残っているのでスナップショットから復元して新たなElastic Beanstalkの環境を作成しようと思います。## 手順
Applicationを選んで、そこから新たなEnvironmentを作成します。Consoleから作成したほうがいいと思います。コマンドラインだとスナップショットからの復元などはできなかった気がする。
![Screen Shot 2020-10-31 at 15.56.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/3daa7a0e-90eb-9333-7385-1064d12d578d.png)
Web Server Environmentを選びます。
![Screen Shot 2020-10-31 at 15.56.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396623/5e831f7c-4d5c
AWS用語集
# AWS用語集
アソシエーション試験対策で調べた試験に出てきそうな用語を並べて、簡潔に書いてみました。
できるだけ簡潔にざっと理解できるように書いたつもりですので詳細は書いていません。
備忘録的な感じで使用つもりで書いたので、かなり見にくい内容になってしまっています。
申し訳ございません。### AWS well-Architectedフレームワークの概念
ユーザーに様々なサービスを提供してきた経験をベストプラクティス集として整理したもの。
これにより、AWSのユーザーが設計、構築、運用の各工程でAWSにおけるクラウドのノウハウを効率よく体験できるようになったもの。### リージョン
地理的に離れた領域### **アライベラビリティーゾーン**
各リージョン内の複数の独立した場所### エッジロケ-ション
コンテンツの配布のためのデータセンターの世界的なネットワークを介して AWS によって維持される場所です。—
### AWSサービスの範囲
### グローバル・サービス
リージョンに存在しない共通のサービスを指します。
IAM, CloudFront,
Aws に VPNサーバをリモートの環境を作る(SoftEtherVPN)
リモートワーク時に制限しているawsでIPを開放する際に個人宅だとIPを固定化をするのは難しかったりするので、
VPNサーバを経由させることによりawsのサービスにアクセスさせるために使用します。#前提条件(awsでの説明は今回しません)
・aws t2.micro Linuxのインスタンスを用意
(無料枠を使用しているだけなので、必要に応じたインスタンスにしてください)
・EIPを設定(IPの固定、テストで建てたいだけであれば不要)
・鍵を設定
・セキュリティグループを設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/771936/268532a2-3d2b-b6bb-befd-263621739acc.png)#必要なツールをインストール
SSHでawsにアクセスして下記の作業を行います
####タイムゾーンを東京で設定“`
sudo timedatectl set-timezone Asia/Tokyo
“`####updateしgitをインストールしま
Laravel+SESでメールを送信する
# 結論
以下の手順で実装しよう?1. AWSコンソールでアクセスキーとシークレットを取得
2. 1で取得した値をプロジェクトの環境変数に設定
3. 2で設定した環境変数をサードパーティサービスの認証情報としてconfigで設定## 具体的な手順
### 1. 認証情報取得
– 下記手順で作成したAccess key IDとSecret access keyを控えておく
`IAM > ユーザー > (SES権限のある任意のユーザー) > 認証情報 > アクセスキーの作成`### 2. 認証情報を環境変数に設定
“`:.env
SES_KEY=XXXXXXXXXXXXXXXXXXXX # 1で取得したAccess key ID
SES_SECRET=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX # 1で取得したSecret access key
SES_REGION=us-east-1 # SESのリージョン
“`### 3. 環境変数をサードパーティサービスの認証情報として設定
“`:config/serv
“Beyond the Twelve-Factor App” & “The Twelve-Factor App”から学びAWSで実践する (3)依存関係管理 / 依存関係 – 依存関係を明示的に宣言し分離する
#解説
本ファクターはオリジナルにもBeyondにもある依存関係の管理に関するファクターです。今どきの開発言語であればnpm、pip、gradleといったライブラリの参照等を解決するためのパッケージ管理ツールはほぼ供えられています。アプリケーションの依存関係をそういったパッケージ管理を利用し解決することで、どんな環境でも適切に構成されたアプリケーションの一式が構築でき動作させることが保証されます。また、依存という意味では、アプリケーションのライブラリだけでなく、ビルドスクリプトやデプロイスクリプトなどにも注意が必要です。これらスクリプトが特定のシステムにインストールされているライブラリやコマンドなどに暗黙的に利用してしまわないようにする必要があります。さらに言うと、私のようにWindows環境でアプリを作っていたりすると、スクリプトがシェルで書かれていたら、それはシステム依存だよなと感じてしまいます。どんなOS上でもランタイムのバージョンさえ揃えられれば。イコールコンディションでアプリケーションの開発・テスト・実行がすべて賄えるという状態になるようことを目標に努力をするべきだと思い
AWS SAM CLIでHttpApiのローカルエミュレートがサポートされたのでWSL2のDocker上で使ってみた
# はじめに
みなさんAWS SAM CLIを使用されていますでしょうか?
[AWS SAM CLI](https://github.com/aws/aws-sam-cli)と言えば今年の7月に[正式リリース](https://aws.amazon.com/jp/about-aws/whats-new/2020/07/announcing-aws-serverless-application-model-cli-generally-available-production-use/)されて間もありませんが、AWS Lambdaのローカルエミュレートから環境構築まで出来るAWS Lambdaを使う上で強力なツールです。そんなAWS SAM CLIですが、本日(2020年10月30日)にリリースされた[v1.7.0](https://github.com/aws/aws-sam-cli/releases/tag/v1.7.0)で下図の様なHttpApiとLambdaを組み合わせた環境のローカルエミュレートが出来るようになりました。
![httpapi.png](https://qii
[aws] CloudFormationによるインスタンスの作成
## 概要
awsの`CloudFormatinon`を使用し、テスト用にインスタンスを一つ作成します。
## CloudFormationとは
AWSのシステム構成を`JSON`や`YAML`で書かれたテンプレートを使用し、管理・修正・編集などを自動で行うことができる機能です。
テンプレートによって作成された環境は`スタック`と呼ばれます。
ファイルを作成しておくことで環境を使いまわせる点が非常に便利です。### テンプレートについて
今回作成する環境のテンプレートは以下の通りです。
テスト用のインスタンスを一つ立ち上げる構成となっています。
組み込み関数である`Ref`で構成を紐づけているイメージとなります。
なお以下例ではsshのSGを`0.0.0.0/0`としているので、各自の環境に合わせ修正してください。“`yaml
# デフォルト記述
AWSTemplateFormatVersion: ‘2010-09-09’
# Key pair の指定。
# AWSコンソールでパラメータを指定
Parameters:
KeyPair:
Descriptio
インフラエンジニアのAI(ML)入門、そしてMLOpsへ【AWS DeepRacerで学ぶ】
AWS Summit Online(2020)に参加したのですが、AI関連のセッションが多かったです。
AIが徐々に気になってきましたので、下記についてまとめました。
・インフラエンジニアがAIを学ぶ価値が分かる
・流行ワード「MLOps」のイメージが分かる
・AIの勉強の仕方がわかる私はインフラエンジニア経験は10年以上ありますが、AIは初学者です。
本記事を読むことで下記の様な悩みが解決できると思います。
・AIについてどうやって学習していけばよいか分からない
・ITエンジニアの仕事はAIに奪われるのではないか心配(AIが仕事を奪うのは事実です)## インフラエンジニアのスペシャリストとしてのキャリアを考える
### 第4次産業革命とは
[第4次産業革命のインパクト](https://www5.cao.go.jp/keizai3/2016/0117nk/n16_2_1.html)内閣府のページに技術革新としてIoTやビッグデータ、AI、ロボット技術が利用されていくとあります。
2017年の時点で政府主体で上記の技術を推していたことが分かります。![image.png
Firewall Manager で使ってないセキュリティグループを監視
## やりたいこと
SGが増えてきたので整理したい。まずは使ってないSGをリストアップしたい。
## 環境
* AWSアカウントA : Firewall Managerの親、Organizationの親
* AWSアカウントB : Firewall Managerの子、Organizationの子※ Organizationの親とFirewall Managerの親は別々のAWSアカウントでも構いませんが、Organizationに参加しているアカウントがFirewall Managerの対象になります。
※ AWSアカウントA,BでAWS Configを有効にしておく
※ 両AWSアカウントで既にSGがいくつか作成されている## シナリオ
* 使ってないSG(リソースにアタッチされてない)のリストアップ
* 同じルールが書かれたSGのリストアップアカウントBで「アタッチされてないSG」 or 「同じルールが設定されているSG」を監視しリストアップします。
これらは不要なSGなので見つけたいですよね。自動的なアクションも行えますが今回はやりません。## 手順
AWS CLI v2のTips
2020年2月に[AWS CLI v2](https://aws.amazon.com/jp/blogs/news/aws-cli-v2-is-now-generally-available/)がリリースされましたね :tada:
個人的にはこれまでAWS CLIを使う機会が少なかったこともあり、v1からアップグレードした当初は変化に気付かなかったのですが、数ヶ月使ってみてv1から挙動が変わった点や進歩を感じた点があったのでまとめました。
## TL;DR
– すべてのプロファイルでページャを無効にするには環境変数 `AWS_PAGER` に空文字をセットする
– Lambda実行のペイロードに通常の文字列を渡してエラーになる場合は `cli_binary_format=raw-in-base64-out` を設定する
– AWS CLI v2からAWS側のリソース名の入力時にタブ補完が効くようになった## すべてのプロファイルでページャを無効にする
AWS CLI v2では出力が長い場合に[クライアント側で指定したページャを出力に使用できるようになった](https:/
S3へのEndpointが設定されているVPCでECS(Fargate)を使う場合の注意点
# はじめに
先日、S3に向けたVPC Endpointが設定されているVPCにてECS(Fargate)を実行しようとした際、少々ハマったので備忘録です。
# 起こった事象
S3に向けたVPC Endpointが設定されているVPCにてECS(Fargate)を実行しようとしたところ、下記のようなErrorが発生してFargateの起動が失敗した。“`
CannotPullContainerError: error pulling image configuration: error parsing HTTP 403 response body: invalid character ‘<' looking for beginning of value: "\nAccessDenied
Access Denied …..
“`
どうやら、何らかの理由でECRからのコンテナイメージの取得に失敗している模様。
## 確認し
【Docker × ECS入門】docker compose upでECSデプロイ
DockerのECS Pluginがリリースされ、Docker for MacのStable版にも対応したみたいなので、試してみました。
公式ドキュメントや解説サイトもありますが、所々つまづいた点もありましたので、
(いつの間にかdocker ecs composeコマンドがdocker composeに統合されてたり…)
ECS初心者の自分用メモとしてまとめてみました。# 検証環境
– macOS Catalina 10.15.7
– [Docker for Mac](https://hub.docker.com/editions/community/docker-ce-desktop-mac/) (Docker version 19.03.13)
– [AWS CLI](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-mac.html) (aws-cli/2.0.59)AWS CLIはバージョン2系が必須です。
Docker、AWS CLIともに最新版にアップデートしておくことを
AWSのVPC Lambdaからエンドポイント経由でSQSにアクセスする際の注意
# 結論
AWSでLambdaをVPCに配置して、エンドポイント経由でboto3 SQSを使用する際にはendpoint_urlオプションが必要。“`python
import boto3
sqs = boto3.client(“sqs”, endpoint_url=”https://sqs.ap-northeast-1.amazonaws.com”)
sqs.send_message(…)
“`このオプションを付けないと、接続できなくてタイムアウトします。
# 詳細
AWSでLambaをVPCに配置してプライベート接続でSQSを使用する際にめちゃはまったので注意点をメモします。
詳細は以下のサイトが詳しいのでそちらを参照して下さい。私が試した時はLambda上でboto3を使用した際にのみ現象が発生しました。私の発生条件ではLambdaのboto3はバージョン1.14.48でした。また、EC2を立てて試したバージョンは1.16.8でしたが、こちらでも同様の現象が発生しました。
1. AWS CLI等でSQS VPC Endpointを利用するときの注意点 —