- 1. AWS SAM Pipelineを試す
- 2. AWS Organizationsを使って、AWSメンバーアカウントを登録し、ある組織単位に所属させる
- 3. AWS Systems Manager Calendarの癖
- 4. AWS Step FunctionsとAmazon Pinpointでプッシュ通知処理を実装した
- 5. AWSで基本的なネットワークを構築してみた
- 6. AWSアカウント初期準備
- 7. CloudFormationで構築したリソースの削除
- 8. AWSでUbuntu Serverを立てるときはキーペアに要注意
- 9. IAM Roles Anywhereのハンズオンを通して、OpenSSLとか証明書とかについて勉強できたのでメモ
- 10. AWSでdocker-composeを動かすまで
- 11. 第6回 The Twelve-Factor App on AWS & Django(AWSで初期設定をしようー後編)
- 12. IoT Core で 永続的セッションと QoS 1 を使ったメッセージの送受信方法を確認してみた
- 13. Flutter × Firebase Cloud Messaging × AWS Lambdaでリモートプッシュ通知を送りたい(2022/08)
- 14. AWS DynamoDBのローカルセカンダリインデックス(LSI)とグローバルセカンダリインデックス(GSI)をまとめる
- 15. Amazon Rekognition とは
- 16. M2 MacでCodeBuildをローカルで実行する。
- 17. CloudFrontとlambda@EdgeでS3にcognito認証をつけた
- 18. AWSでLINE LIFF Inspector環境を構築してみた
- 19. ソリューションアーキテクト対策_S3あれこれ篇
- 20. [AWS]AWS SAP チートシート(その他編) part1
AWS SAM Pipelineを試す
# はじめに
AWS SAMを用いてLambdaを作ることはやっていましたが、CI/CDの環境を構築してみたく、SAM Pipelineを試してみました。# 概要
– 「Git(今回はCodeCommit)にPUSHすると自動でデプロイする環境」を構築してくれる
– SAMのファイルがあればよい
– 今回は事前に、Lambda関数のPythonスクリプトと、SAMのテンプレートファイルの2つのみ用意
– パイプラインはテンプレートが用意されている
– 一度ファイルに出力されるためカスタマイズ可能ではあるが、かなり大変そう# 参考
## SAM Pipelineの例https://aws.amazon.com/jp/builders-flash/202110/new-lambda-container-development-6/?awsf.filter-name=*all
https://dev.classmethod.jp/articles/sam-cli-pipeline/
## 用語
参考やほかのページにはパイプライン特有の用語が頻出しますので、以下
AWS Organizationsを使って、AWSメンバーアカウントを登録し、ある組織単位に所属させる
# AWS Organizationsの組織を作る
AWSマネジメントコンソールにログインします。
AWS Organizationsダッシュボードを表示します。
[組織を作成する]をクリックしてください。
![スクリーンショット 2022-09-11 6.44.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14202/9ecd02ae-a889-e3b3-8c08-01875ed0c893.png)組織が作成され、管理アカウント(マスターアカウント)が表示されます。
![スクリーンショット 2022-09-11 6.46.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14202/f7976253-1558-9680-24eb-68cc9c4ce968.png)# メンバーアカウントを登録する
AWS Organizationsダッシュボードの[招待]をクリックしてください。
![スクリーンショット
AWS Systems Manager Calendarの癖
# AWS Systems Manager Calendar で何ができるか
+ 実行して良いタイミングかどうかを判定するために参照するもの
+ スケジュールの開始終了時間になったらイベント発行するもの
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185989/5ec119d8-7677-ee26-2dcd-01cfaac2b6bc.png)AWS管理コンソール画面:カレンダーの種類をデフォルトCLOSEDにしたもの![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185989/c7bd8cae-ce3d-2189-33ec-bdd4831d4ed6.png)
スケジュールイベント時間になったら、カレンダーのステータスがOPEN・CLOSEDに切り替わる
※ 1つのカレンダーには、複数のスケジュールイベントが登録できるが、カレンダー状態は一つ(OPENかCLOSED)# まず
AWS Step FunctionsとAmazon Pinpointでプッシュ通知処理を実装した
## 概要
複数の通知をそれぞれの対象者に向けてプッシュ通知する流れを実装しました。### 使用したサービス
– AWS Step Functions
– Amazon Pinpoint
– AWS Lambda## アーキテクチャ
[AWS workshop](https://catalog.us-east-1.prod.workshops.aws/workshops/070a93a2-3373-4736-8af0-f7a08c9eb08a/en-US/marketing-automation#use-cases)にあったものを参考にしています。
![push_notice_qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192406/e2e91cc9-1ccb-f195-c12d-cd0e6a548f5e.png)
## 処理の流れ
流れとしては先程のとおりなのですが
1. 通知対象のリストを取得
1. (各通知に対して)対象ユーザーリストを取得、S3にファイル保存
AWSで基本的なネットワークを構築してみた
AWSでのネットワーク構築ですが実務でもやったことがあります。
先日、改めてAWSの学習をしていて「そういえばどうやってネットワークの構築ってどうだっけ?」と思う節があったので
自宅PCで基本的なネットワークを構築してみました。
VPCやAWSでネットワーク構築で行う基本的な知識をアウトプットしながら、ネットワークを構築していきたいと思います。
## まずそもそもVPCとは?
AWSのネットワーク構築では、よく使われるVPC。実は最近までよく理解していませんでした。
VPCとは巨大なAWSのネットワークの中からユーザ専用の領域を切り出すことのできる仮想ネットワークのサービスのことを言います。イメージでいうと広大な土地があって、そこでそれぞれに自分達が使う領地を決めているといったイメージです。
## VPCには上限がある
VPCはリージョンあたりの上限が5つまでと決まっており、VPCは6つ以上必要になる場合は上限緩和申請といって上限を増やすことができます。でも今回は特に作る予定はありません。
## 一つ設定すると自動で他の設定をやってくれる
実際に構築をやっているときは
AWSアカウント初期準備
# 準備
## AWSアカウント契約
今まで使用していたアカウントもありましたが、今回のシステム構築を機に個人のAWSアカウントを作成しました。今から12か月は無料枠を使用できます。### 無料枠について
最初のころはよくある動画、音楽サブスクのように12か月は完全に無料と思っていましたが、そうではないらしいです。
EC2ならt2,t3.microが750時間、S3は5GBまでと各々のサービスに上限があるようです。
確かに完全に無料となったら高いインスタンスタイプでEC2をつくれちゃいますもんね。。[AWS無料利用枠](https://aws.amazon.com/jp/free/?all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=*all&awsf.Free%20Tier%20Categories=*all
)ちなみに750時間は約31日(750/24=31.25)。使用するときだけEC2を起動させておけば月
CloudFormationで構築したリソースの削除
## はじめに
CloudFormationで構築した不要なリソースを削除する機会があったので、対応方法について記事を書きたいと思います。## 事前確認
– AWS Console から CloudFormation のダッシュボードを開く。
– Stacks内から削除対象のStackを開く。
– Templateのタブを開き、Templateが以下の状態であることを確認する。
– `DeletionPolicy` が設定されていないこと
– もし設定されていれば、`Template`から`DeletionPolicy`の記述を外す。![スクリーンショット 2022-09-10 21.03.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/d9e12ab4-7348-953f-04a3-c7ec53218bc6.png)
## リソースの削除方法
削除対象のStack を削除する。![スクリーンショット 2022-09-10 21.05.38.png
AWSでUbuntu Serverを立てるときはキーペアに要注意
AWSでUbuntu Serverを構築したときに、なぜかSSH接続できなくて困ったため備忘録として残します
# 結論
– Ubuntu ServerのキーペアはRSAタイプではなく、ED25519タイプで作成する必要がある
– Ubuntu 22.04で採用されているOpen SSHのバージョンでは、RSAタイプの鍵が無効化されたため
– Ubuntu 20.04まではRSAタイプのキーペアが使える| | RSAタイプのキーペア | ED25519タイプのキーペア|
|—|—|—|
|Ubuntu 22.0.4 | **デフォルトでは使用不可** | デフォルトで使用可|
|Ubuntu 20.0.4 | デフォルトで使用可 | デフォルトで使用可|# やってみる
## Ubuntu 22.04にRSAタイプのキーペアでアクセスしてみる
Ubuntuが載ったインスタンスを作成します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1471959/9fd
IAM Roles Anywhereのハンズオンを通して、OpenSSLとか証明書とかについて勉強できたのでメモ
AWSエバンジェリストシリーズの特別編でIAM Roles Anywhereのハンズオンに参加したときに、OpenSSLやら証明書やら使用したので非常に勉強になりました。
https://awsbasics.connpass.com/event/254836/?utm_campaign=event_message_to_selected_participant&utm_source=notifications&utm_medium=email&utm_content=title_link
ハンズオンの後に色々調べてみたので、個人的なメモとして残しておきます。
# IAM Roles Anywhereとは
本筋とは外れるので詳細は調べていただくとして、IAM Roles Anywhereについてザクっと説明しておきます– オンプレ機器からAWSのサービスを使う時に、IAMロールによるアクセス制御ができるサービス
– IAM Roles Anywhereは主に、以下の2つのコンポーネントから成り立つ
– 信頼アンカー:オンプレとAWSの間の信頼関係
–
AWSでdocker-composeを動かすまで
dockerもAWSも「触ったことがある」程度の僕が、自分でEC2インスタンスを立て、そこでdocker-composeする必要が出たので、その際にやったことのメモです。
## 概要
+ AWSにdocker-composeを入れる
+ git cloneするためにGitHubにSSH keyを設定する### 前提
+ EC2を立てられる人向けです
+ docker-composeで動くモノをGitHubにおいている人向けです# 参考
+ [【AWS】EC2にDockerとDocker Composeをインストール](https://kacfg.com/aws-ec2-docker/)# AWSの基本設定
### セキュリティグループ
EC2のセキュリティグループでSSHを許可しましょう。
IPアドレスはわかるなら自分のものにしましょう。僕は実験用なら0.0.0.0にしてしまっています。
ウェブサーバーならHTTP・HTTPSも許可しておきましょう。# AWSにdockerを入れる
### dockerのインストール
“`bash
sudo amazon-linux
第6回 The Twelve-Factor App on AWS & Django(AWSで初期設定をしようー後編)
# 目次
– [第1回 The Twelve-Factor App on AWS & Django(The Twelve-Factor Appとは)](https://qiita.com/satsuma0711/items/3b928d0e5670a633f9d8)
– [第2回 The Twelve-Factor App on AWS & Django(バックエンドAPIを作ろう)](https://qiita.com/satsuma0711/items/850d57ad1557d0f8dddb)
– [第3回 The Twelve-Factor App on AWS & Django(フロントエンドSPAを作ろう)](https://qiita.com/satsuma0711/items/67d35253a237c976415f)
– [第4回 The Twelve-Factor App on AWS & Django(AWSのアカウントを作成しよう)](https://qiita.com/satsuma0711/items/1482be82882652e6d314)
– [第5回
IoT Core で 永続的セッションと QoS 1 を使ったメッセージの送受信方法を確認してみた
# はじめに
AWS IoT には、MQTT 永続的セッション (MQTT persistent sessions) と呼ばれる仕組みがあります。QoS レベル 1 を指定することで利用ができるものになります。IoT デバイスがなんらかの障害で通信が出来なかった期間にパブリッシュされたデータを再度取得することが出来ます。
– https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/mqtt.html#mqtt-qos
文章だけだとよくわからないと思うので図解で説明をしてみます。まず、通常の IoT Core メッセージブローカを使ったメッセージのやりとりを見てみましょう。
![image-20220910141341638.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/6cda4425-c788-3a74-72ae-07858c5a566e.png)
データを送信する IoT デバイス、IoT Core、デ
Flutter × Firebase Cloud Messaging × AWS Lambdaでリモートプッシュ通知を送りたい(2022/08)
# はじめに
初投稿です。Flutterでアプリ制作を行っていた際にプッシュ通知機能を実装しようとして色々調べた際、様々な情報が錯綜しており、どの記事が正しいのかが分からなくなって色んなことを試した結果、大口の沼にはまり込んでしまったため、自分用の備忘録として残します。
同じ問題に直面している人の助けとなれば幸いです。
# 前提条件
リモートプッシュ通知を送る方法は様々あると思いますが、今回はプロジェクトの要件として利用していたAWS Lambda(以下Lambda)からFirebase Cloud Messaging(以下FCM)を利用してAndroid端末にプッシュ通知を送っていきます。今回は、LambdaはNode.js(TypeScript)で実装します。iOS端末にプッシュ通知を送る際は、Appleの開発者サイトやXCodeで追加設定が必要になるのですが、今回は割愛します。
この記事では以下のことを行っている前提で説明していきます。
– AWSアカウント・Firebaseアカウント作成済み
– Flutterプロジェクト作成済み# 事前準備
### Fir
AWS DynamoDBのローカルセカンダリインデックス(LSI)とグローバルセカンダリインデックス(GSI)をまとめる
AWS DVA試験勉強で、DynamoDBのローカルセカンダリインデックス(LSI)とグローバルセカンダリインデックス(GSI)が分からなかったので、理解をするためにまとめる。
## そもそもDynamoDBとは
NoSQLでサーバーレス。即時一貫性と操作の原子性(トランザクション処理が完了か未処理かどっちかの状態)と検索条件の自由を捨て、可用性と拡張性に特化したデータベース。“table” “item(項目、行)” “attribute(属性、列)”の3つの概念にプラスして、”key”(=ハッシュキー) “index”という概念がある。
“key”は”item”を検索するために必要な値で、それ故にユニークである必要がある。(逆に言うと、Dynamoではkeyのみユニークにできる)
なので{“key”:”1″,”food”:”トマト”}と{“key”:”1″,”game”:”ドラクエ”}は同じtableに保存できない。
また、”key”にはパーティションキーとソートキーの種類がある。この2つのキーを使ったものが複合キーテーブルと呼ばれる。
ちなみに、”key”で検索する時の動
Amazon Rekognition とは
## 勉強前イメージ
認識?
## 調査
### Amazon Rekognition とは
機械学習の専門知識が不要で画像認識やビデオの分析機能を使えるサービスになります。
物体を特定したりシーンの認識、顔やテキストの検出などの行うことができます。機能としては以下の様なことができます。
– 物体の特定
画像内に写っている物体を特定します。
車や家、人などを検出します。– シーンの特定
どこが写っているのか、屋内なのか特徴的などこの都市なのか判定します。
– カスタムラベル
カスタムラベルはユーザが画像データを準備してRekognitionに学習させることで
特定の商品などAWSで準備されていないものを認識させることができます。逆に物体やシーンはAWSがすでに準備している学習データを使用します。
– 顔の検出
画像の中の人を検出します。
性別や大体の年齢などの情報を取得することができます。– テキストの検出
画像内に含まれているテキストを検出することができます。
曲がってたりしても読み取りが可能です。### Amazon Rekognitio
M2 MacでCodeBuildをローカルで実行する。
# はじめに
勉強のため、`AWS`の`CodeBuild`を使ってみようと思ってドキュメントを見ていたところ、いちいちマネジメントコンソール画面から`CodeBuild`を実行しなくてもローカルマシンにビルド環境を構築することができるとのことなので、`M2 Mac`のマシンでローカルビルド環境を構築してみました。# CodeBuildとは
アプリケーションを開発して動作させるようにするには、ソースコードをコンパイルしたり、必要なファイル等をまとめて資材を作成したりする必要がありますが、そのような面倒な作業を`AWS`側のサービスとして提供して、開発者の手間を減らしたり、`CodeDeploy`や`CodePipeline`等の他サービスと連携することでアプリケーションのリリース作業を自動化したりするためのサービスです。実際にどのファイルをどのようなコマンドオプションでコンパイルする等の`CodeBuild`で行う作業は`buildspec.yml`というファイルに記述して、その内容を`CodeBuild`で実行することで、指定のビルドが行えるようになっております。
# Co
CloudFrontとlambda@EdgeでS3にcognito認証をつけた
## やったこと
S3内で複数のhtmlを管理しており、それぞれのページにアクセスできるユーザーは異なるため、アクセスする際に認証処理をする、という実装をしました。ユーザはcognitoで管理されているため、今回はCloudFront→Lambda@Edge→S3というアーキテクチャで実装することにしました。実装自体はAWS CDK(ts)を使用しています。## 実装環境
AWS CDK: 2.23.0
Python: 3.7
typescript: 3.5.1## アーキテクチャについて
![access_to_message_webview_qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192406/08a449b4-a085-7064-ecf5-41f2204660c0.png)
大まかなアーキテクチャは上図です。
lambdaの内容もざっくり記載しています。
先程の概要をそのまま図にした感じです:sweat:
(一部、実際のものから省略しています、以降も同様)##
AWSでLINE LIFF Inspector環境を構築してみた
# はじめに
2022/04にLINE LIFFの開発を効率的にする[LIFF Inspector](https://github.com/line/liff-inspector)がリリースされました。
公式ドキュメントに記載がある通り、[ngrok](https://ngrok.com/)を使用すれば比較的楽にLIFF Inspectorを利用することができますが、例えば業務の都合上、ツールの利用に制限があるなど、そういった場合を考慮して、今回は、AWS上にLIFF Inspectorサーバーを構築し、実際に動かすことができたので、ご紹介したいと思います。基本的な使い方や、詳しい仕様などは、[公式ドキュメント](https://github.com/line/liff-inspector)を参照いただければと思います。
# LIFF Inspector
LIFF Inspectorの構成は以下の通りです。
>LIFF Inspector は LIFF(LNE Frontend Framework)専用の公式 DevTools です。LIFF Inspector は Chrom
ソリューションアーキテクト対策_S3あれこれ篇
## はじめに
試験勉強した際のメモを自分用に記事化。
内容は公式やBlack Beltの写経ですので目新しいことはありません:pray:## S3あれこれ
### S3の静的ホスティングでWebサイトを作る時のデメリット
httpsできない。ただしS3とCloudFrontを組み合わせれば実現できる。### S3のパフォーマンスを向上させるには
オブジェクトキー名に日付などのPrefixを利用する。
日付ベースでアップロードを分散することで、パフォーマンスを自動的に向上することができる。### S3のライフサイクル管理
– 一定期間で自動アーカイブしたい場合
S3(Standard)からGlacierへアーカイブする– 一定期間で自動で安価な保存場所へデータを移動させたい場合
S3(Standard)からS3(Standard-IA)に移動させる– 一定期間で自動で削除したい場合
S3(Standard)のデータを一定期間で削除するようライフサイクルを設定する### S3の整合性
S3は強い整合性モデルを使用しているため、新規登録、更新、削除全てにおいて
[AWS]AWS SAP チートシート(その他編) part1
rolling update
→稼働中のインスタンスを一気には停止させずに、徐々に新しいものに入れ替えていく方式。通常アプリ用。WebIDフェデレーション
→WebIDで一度認証を通れば許可されているすべてのサービスを使えるようにするSSOを使用できるようにする
→SAML2.0準拠のIDプロバイダを使用しSSOエンドポイントを介してアクセスIDS・IPS導入方法
→リバースプロキシ層もしくは各インスタンスにエージェントを入れるADでSSO
→1.IAMロール設定
2.フェデレーションかIDPを設定
3.AWS STS でトークン生成パイロットライト
→リードレプリカを別リージョンに作成
障害時にメインに昇格出来るEBS-backed AMI のimpaired復旧方法
→再起動ではなく停止して起動しないとインスタンスが切り替わらないステートレス
→EC2を使い捨てられるようにする(スケーリング出来る)Assumerole
→1.DynamoDBにユーザー情報を保存
2.ログインIAMロールを仮定
3.STSで一時認証情報取得
4.サービス