- 1. DynamoDBのトランザクション処理についてAWS CLIで検証してみた
- 2. Terraform でAWS 環境にDockle + git-secrets を組み込んだCIを構築する
- 3. EC2のインスタンス接続にて、Apacheを起動する
- 4. [AWS] [EC2] 踏み台サーバーに秘密鍵を送る方法
- 5. さっくり解説するAmazon API Gateway
- 6. 【2022年6月】AWS Amplify CLI セットアップマニュアル
- 7. aws-vault で AWS Profile に対応していない AWS ツールを使おう!
- 8. 【AWS】LaravelアプリをEC2デプロイ⑥【S3編】
- 9. 個人的 CloudFormation ベストプラクティスまとめ
- 10. インターネットと通信するLambda関数はプライベートサブネットに配置する必要があるという一見矛盾した話
- 11. AWSマルチアカウント管理:スイッチロール
- 12. 【Airflow Summit 2022 東京】オフライン参加レポ
- 13. AWSソリューションアーキテクトプロフェッショナル合格記
- 14. Amazon CognitoとLibertyをOpenID Connect Clientで連携してみる
- 15. AWS CDKをDenoで動かす4 CDK CLIも編
- 16. CloudCraftとは
- 17. 【AWS-CDK】CodePipelineでGithubにpush⇨ビルド⇨ECSにデプロイを自動化する
- 18. AWS-CDK pipelinesでCloudFormation templateが一定のサイズを超えるとエラーになる
- 19. 【AWS】LaravelアプリをEC2デプロイ⑤【SNS / Chatbot編】
- 20. 【AWS】LaravelアプリをEC2デプロイ④【CircleCI / CodeDeploy編】
DynamoDBのトランザクション処理についてAWS CLIで検証してみた
## はじめに
業務で、DynamoDBで2つのテーブルを扱う必要がでてきたのでトランザクション処理について動作検証しました。## DynamoDBのトランザクションについて
DynamoDBが公式に機能として提供しています。
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/transactions.html
CLIの場合は、transact-write-itemsを使うことでデータ更新時のトランザクション処理を実装できるようだったので、ためしてみました。
https://docs.aws.amazon.com/cli/latest/reference/dynamodb/transact-write-items.html
https://amazon-dynamodb-labs.workshop.aws/hands-on-labs/explore-cli/cli-transactions.html
## 準備
2つのテーブルを作成
CLI用のアクセスキー取得及び設定
以下コマ
Terraform でAWS 環境にDockle + git-secrets を組み込んだCIを構築する
# はじめに
コンテナセキュリティのガイドライン [NIST SP800-190(アプリケーションコンテナセキュリティガイド)](https://www.ipa.go.jp/files/000085279.pdf) では、イメージのリスクの1つとして **「イメージの設定の不備」** について言及されています。
さらに、NIST SP800-190 では、このリスクへの対策として、 **「セキュアな設定のベストプラクティスへの準拠を検証および実施するためのツールとプロセスを採用すること」** を推奨しています。本記事では、この **「イメージの設定の不備」** へのリスク対策ツールとして、**Dockle** と**git-secrets** を採用し、このツール群を組み込んだCI パイプライン(ビルドのプロセス)をTerraform でAWS 環境に構築する方法を記載しています。
コンテナイメージのセキュリティ対策の一例として参考になれば幸いです。
# Terraform で構築する全体構成図
EC2のインスタンス接続にて、Apacheを起動する・EC2にてインスタンスを起動→画面上部の接続を押す
・EC2 Instance Connectから接続
・Amazon Linuxのコマンドラインにて下記コマンドを入力
“`
$ sudo systemctl start httpd
“`
(https://www.youtube.com/watch?v=xXuAX1ctg9E&list=PLh6V6_7fbbo8gYuNbxWXuZhTmfxzYcL9A&index=2より)EC2入門を動画にて勉強中なので、動画中を探し直さなくて良いように自分用メモ。
前回でpart5くらいまで続けて進めていたので、インスタンスを再起動したらApacheも止まることを知らずpart1から見直して探しました(・_・`)
よく考えたらxamppだって再起動後はstartを押さないと起動できないので、それと同じでしょうか。
[AWS] [EC2] 踏み台サーバーに秘密鍵を送る方法
### 今回やりたかったこと
AWSについて勉強中です。
踏み台サーバー(パブリックサブネットに作成したEC2)に
秘密鍵(〇〇.pem)をコピーし、
バッチサーバー(プライベートサブネットに作成したEC2)にSSHで入りたい### 前提
環境はcloud9です。
VPC内にパブリックサブネットとプライベートサブネット、EC2は既に構築してあります。### 結論
注意:cloud9側で!
“`terminal:terminal
scp -i ~/.ssh/〇〇.pem ~/.ssh/〇〇.pem ec2-user@踏み台サーバーのパブリックipアドレス:.ssh/〇〇.pem
“`
上記コマンドで自分はできました。
cloud9側の秘密鍵が違うディレクトリにある場合は適宜変えてください!
scpはcp(コピー)をs(シークレット)にするコマンドです。大事なものはこのコマンドで送ります。例↓
“`terminal:terminal
scp -i ~/.ssh/test.pem ~/.ssh/test.pem ec2-user@35.77.102.64:.ssh/tes
さっくり解説するAmazon API Gateway
## はじめに
今回はAmazon API Gateway編です。
今まで以上に用語が多いですが、なるべく分かりやすい解説をしてみようと思います。# Amazon API Gatewayとは
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392337/417f63ac-7cfc-b52a-a95a-949bd3636ac1.png)
公式ドキュメントによると、
>フルマネージド型サービスの Amazon API Gateway を利用すれば、デベロッパーは規模にかかわらず簡単に API の作成、公開、保守、モニタリング、保護を行えます。API は、アプリケーションがバックエンドサービスからのデータ、ビジネスロジック、機能にアクセスするための「フロントドア」として機能します。API Gateway を使用すれば、リアルタイム双方向通信アプリケーションを実現する RESTful API および WebSocket API を作成することができます。API Gateway は、コ
【2022年6月】AWS Amplify CLI セットアップマニュアル
# はじめに
いままでのAmplifyCLIのセットアップは下記の記事を参考にずっと行ってきましたが、そろそろバージョンも新しくなってきたので最新版でのセットアップ方法をまとめていきたいと思います。
[AWS Amplify CLIの使い方〜インストールから初期セットアップまで〜](https://qiita.com/Junpei_Takagi/items/f2bc567761880471fd54)
こちらの記事は、2018年に書かれており、Amplifyの始まりたての頃の記事ですが、初期の頃から本当にお世話になりました。ありがとうございます!!
# 環境
Amplify CLI 8.3.1
Node.js 14.19.2
npm 6.14.17# セットアップ方法
## インストール
今回は、`8.3.1`のバージョンで設定を行っていきます。“`console
$ npm install -g @aws-amplify/cli@8.3.1
“`## AWSアカウントの紐付け
まずは以下のコマンドを実行します。
“`console
$ amplify co
aws-vault で AWS Profile に対応していない AWS ツールを使おう!
## 困りごと
最近では AWS アカウントは MFA が有効化されてたり、Assume role でクロスアカウントで認証をしてたりします。
その為、AWS CLI では以下の様に `–profile {profile-name}` を用いて認証をしています。“`shell
aws s3 ls –profile your-aws-profile
“`しかし、世の中の AWS にアクセスするツールの全てが「AWS Profile を指定する機能」に対応している訳ではありません。
Terraform CLI 等、多くのツールは実行シェル上に、ただ単に以下の環境変数がセットされている事を期待しています。“`shell
AWS_REGION=ap-northeast-1
AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxx
AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxx# Switch role (Assume role) の場合は、以下も必要.
AWS_SESSION_TOKEN=xxxxxxxxxxxxxxxx
`
【AWS】LaravelアプリをEC2デプロイ⑥【S3編】
# 0. はじめに
大阪のLaravel初学者サウナーこと、kazumakishimoto([@kazuma_dev](https://twitter.com/kazuma_dev))です!
Laravelで`S3`へ画像アップロードする方法です。## 0-1. 前回記事
– 【AWS】LaravelアプリをEC2デプロイ【まとめ編】https://qiita.com/kazumakishimoto/items/e0e109fca443a4acd2a1
– 【AWS】LaravelアプリをEC2デプロイ①【CloudFormation / EC2 / RDS編】
https://qiita.com/kazumakishimoto/items/0859a5a365b226c1b43a
– 【AWS】LaravelアプリをEC2デプロイ②【Route53編】
https://qiita.com/kazumakishimoto/items/825f8c5f94d0160b2364
– 【AWS】LaravelアプリをEC2デプロイ③【ACM / ELB編】
https:/
個人的 CloudFormation ベストプラクティスまとめ
# はじめに
最近よく耳にする IaC (Infrastructure as Code)であるCloudFormation を触る機会があったため、使用するにあたりベストプラクティスをまとめました。# CloudFormation概要
テンプレートを使用してAWSリソースの環境構築を行うサービスです。
テンプレート化しておけば、同じ環境構成を何度も作ることができます。## スタックとテンプレート
– テンプレート
– スタックを構成する AWS リソースの定義されたファイルをテンプレートと呼びます。
– スタック
– テンプレートから作成されたリソースの集合のことをスタックと呼びます。1つのテンプレートから1つのスタックが生成されます。
![スクリーンショット 2022-06-02 22.10.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2612883/b6760f44-c4fb-c4e1-4165-950254ed4401.png)## IaCのメリットとデメリット
インターネットと通信するLambda関数はプライベートサブネットに配置する必要があるという一見矛盾した話
正確には「VPC内に配置したLabmda関数がインターネットと通信する場合」の話しです。
Lambda関数をVPC内に配置するときはこうしろっていうのは検索すればすぐ出てくるのですが、理由が書かれてない記事が多いので取り上げてみました。## 背景
Security Hubを導入したところ準拠すべきセキュリティルールの中に「Lambda関数はVPC内に配置せよ」とあったので、適当なVPCの適当なパブリックサブネットに配置した。## 事象
EC2を自動起動停止させるLambda関数が「Task timed out after XX.XX seconds」で動かなくなった。## 対応1 (解決せず)
タイムアウトを伸ばしてみた。→解決せず
元々タイムアウト3秒で正常に動いていたが、エラーメッセージがタイムアウトなので30秒まで伸ばしてみたが、それでもタイムアウトする。## 原因
今回言いたかったのはこれ。
実はLambda関数はパブリックサブネットに配置してもパブリックIPが払い出されないらしい。
AWSのドキュメントに下記の記述があった。[VPC 内のリソースにアクセス
AWSマルチアカウント管理:スイッチロール
## 課題
日常の仕事でこのようなシーンがございますでしょうか。
Aさんはプロジェクト開発者です。aws iamアカウントをお持ちしてます。
プロジェクトはテスト、ステージング,本番という三つ環境があります。
Aさんの役割により、本番環境に参照権限だけ付与します。
以下の方法でどっちが一番良い方法でしょうか。1. Aさんに環境によ毎に三つアカウントを用意する
1. 環境により、三つロールを作成して、Aさんはこのロールをスイッチするお勧めとしてはロールをスイッチすることです。2番目です。
## 概要
AWSのIAMのスイッチロールについて、手順をご説明させて戴きます。
## 手順
### 1. iamユーザーを新規作成
![截屏2022-06-03 15.17.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2531066/7c19eacf-a10c-3e28-8b02-ecfb77d42e55.png)
作成### 2. iamユーザーを登録して、S3コンソール画面に遷移してみ
【Airflow Summit 2022 東京】オフライン参加レポ
![AirflowSummit2022.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2525579/5e2168e9-8b68-3429-b4c0-59a4c5ec6027.jpeg)
# はじめに
Airflow Summit は、[Apache Airflow](https://airflow.apache.org/) のユーザーと開発者のグローバルコミュニティのための年次イベントです。2022年は2回目の開催で、東京では実際に集まって講演を聴講する local event が行われました。
https://airflowsummit.org/
ここ数年、コロナ禍でイベントが一斉にオンライン化され、他の開発者とリアルで会う機会が少なかったので、いい気分転換でしたし、**オフラインイベントに参加する重要さ** を感じさせられました。開催は Tokyo Apache Airflow Meetup が行い、今後も Airflow に関するイベントを開催していくそうなので、少しでも Airflow
AWSソリューションアーキテクトプロフェッショナル合格記
# はじめに
2021年末にAWSソリューションアーキテクトプロフェッショナルを受験し、合格したので
備忘録も兼ねて勉強した内容、教材などをまとめたいと思います。# AWS認定試験とは?
AWS認定とはAWS上におけるサービスの知識やアーキテクチャなどを問う試験になります。
下記のような種類があります。|区分 | 難易度 | 試験名 | 詳細 |
|:–|:-:|:–|:–|
|基礎レベル|低|Cloud Practitioner|6 か月間の基礎的な AWS クラウドと業界知識|
|アソシエイトレベル|中|・Solutions Architect(Associate)
・SysOps Administrator
・Developer |1 年間の AWS クラウドを使用した問題解決と
解決策の実施における経験|
|プロフェッショナルレベル|高|・Solutions Architect(Professional)
・DevOps Engineer|2 年間の AWS クラウドを使用した
ソリューションの設計、運用、
およびトラブルシュー
Amazon CognitoとLibertyをOpenID Connect Clientで連携してみる
# はじめに
– App IDとLibertyをOpenID Connect Clientで連携して、認証部分をそれっぽく実装したことはあったのですが、Cognitoでも同じことできるんだっけ??と思ったので試してみたという話です。
– 基本はApp IDのドキュメントに記述されている[Liberty for Java SDK の構成](https://cloud.ibm.com/docs/appid?topic=appid-web-apps&locale=ja#web-configuring-liberty)と同じ手順で問題ありませんでしたが、当然ながらApp IDとCognitoでURLの指定など異なる部分もありますので、本記事ではLibertyとCognitoを連携するにあたって必要な部分のみを記述します。# 注意
– この例では、ユーザープールをus-east-2に作っています。us-east-2と記述されている部分については、ご自身の環境に合わせて適宜読み替えてください。
– この例では、ローカル環境のLibertyからCognitoへの接続を例として記載しています。ドメ
AWS CDKをDenoで動かす4 CDK CLIも編
https://qiita.com/rinfield/items/284fae0e1e55b28789e0
の続きでDenoでCDKを動かしていきます
## 要約
– CDK CLIをDenoで動かすのは**ダメでした**。
– 問題を回避しても非対応なNode APIが使われているため現状Denoでは動かなそう
– 以下書いてあるのは試行錯誤のメモです## CDK CLIもDenoにしたい
現状の構成ではCDKコード(なんと言うのが正しいのか不明)はDenoでしたが、
CDK CLIはNodeで動作しています。
CDK CLIもCDKコードの移行と同じノリで動かせないか試してみます。## トライアンドエラーの記録
### 素朴なインポート
確認のため単純に https://esm.sh/aws-cdk@2.26.0 をブラウザで開いてみます
“`js
/* esm.sh – error */
throw new Error(“[esm.sh] ” + “Could not resolve \”aws-cdk\””);
export default null;
CloudCraftとは
## Cloudcraftとは
CloudCraftは、[CloudCraft Inc](https://www.cloudcraft.co/ “CloudCraft”) が提供しているダイアグラム作成(作図)製品です。
### CloudCraftの機能一覧
:::note info
ドラッグ&度ラップによる操作様々なオブジェクトをダイアグラム上へ配置し、組織図などを簡単に編集できる
::::::note info
テンプレート各種フローチャートなどのテンプレートを利用して、効率的に図を作成できる
::::::note info
ダッシュボード全ての図を一元管理するダッシュボードを提供し、チームで利用するパーツなどを共有フォルダで管理できる
::::::note info
ファイルのインポート・エクスポート他の作図ツールから図形ファイルをインポートしたり、作成した図をPDF、画像、ベクター形式などのファイルとしてエクスポートしたりできる
::::::note info
変更履歴変更履歴を保存し、改訂前のバージョンに戻したり、参照した
【AWS-CDK】CodePipelineでGithubにpush⇨ビルド⇨ECSにデプロイを自動化する
# はじめに
前回記事[「お名前.comで購入したドメインを使ってALBでECSにホストベースルーティングする」](https://qiita.com/theFirstPenguin/items/fb223859d6e7b31b192c)を拡張してデプロイパイプラインまで作ります。# 全体図
![スクリーンショット 2022-06-03 10.30.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/572098/ca158b66-164d-a881-0b1a-cb49e046ba70.png)# 前提
- お名前.comでドメイン(example.com)を購入済み
- Route53でexample.comのホストゾーンを作成し、そのNSレコードをお名前.comで設定
- ECRのプライベートリポジトリを作成後、アプリのイメージをpush済
- (今回追加)GithubのトークンなどをSecretManagerに保存済https://blog.i-tale.jp/2020/04/13_
AWS-CDK pipelinesでCloudFormation templateが一定のサイズを超えるとエラーになる
aws-cdkの以下issueで言及されている内容で、かなり前から話題になっているようです。
https://github.com/aws/aws-cdk/issues/12372
### 事象
CDKに機能追加をして、生成されるテンプレートが一定のサイズを超えると、以下のようなエラーが発生しました。
“`
Template format error: YAML not well-formed. (line 2528, column 49) (Service: AmazonCloudFormation; Status Code: 400; Error Code: ValidationError
“`
手元の環境では51KBまでは問題なく、それを超えるとエラーになるようでした。
エラーメッセージの`line`が指しているのはファイルの末端箇所で、そこが特段変わっているような感じはありません。
以下のコメントで言われている通りです。https://github.com/aws/aws-cdk/issues/12372#issuecomment-797494427
### 環境
【AWS】LaravelアプリをEC2デプロイ⑤【SNS / Chatbot編】
# 0. はじめに
大阪のLaravel初学者サウナーこと、kazumakishimoto([@kazuma_dev](https://twitter.com/kazuma_dev))です!
自動デプロイ(CodeDeploy)の開始と終了を`SNS / Chatbot`で`Slack通知`させる方法です。## 0-1. 前回記事
– 【AWS】LaravelアプリをEC2デプロイ【まとめ編】https://qiita.com/kazumakishimoto/items/e0e109fca443a4acd2a1
– 【AWS】LaravelアプリをEC2デプロイ①【CloudFormation / EC2 / RDS編】
https://qiita.com/kazumakishimoto/items/0859a5a365b226c1b43a
– 【AWS】LaravelアプリをEC2デプロイ②【Route53編】
https://qiita.com/kazumakishimoto/items/825f8c5f94d0160b2364
– 【AWS】Laravelアプリ
【AWS】LaravelアプリをEC2デプロイ④【CircleCI / CodeDeploy編】
# 0. はじめに
大阪のLaravel初学者サウナーこと、kazumakishimoto([@kazuma_dev](https://twitter.com/kazuma_dev))です!
`CircleCI / CodeDeploy`の自動デプロイ方法です。## 0-1. 前回記事
– 【AWS】LaravelアプリをEC2デプロイ【まとめ編】https://qiita.com/kazumakishimoto/items/e0e109fca443a4acd2a1
– 【AWS】LaravelアプリをEC2デプロイ①【CloudFormation / EC2 / RDS編】
https://qiita.com/kazumakishimoto/items/0859a5a365b226c1b43a
– 【AWS】LaravelアプリをEC2デプロイ②【Route53編】
https://qiita.com/kazumakishimoto/items/825f8c5f94d0160b2364
– 【AWS】LaravelアプリをEC2デプロイ③【ACM / ELB編】