Slide 1

Slide 1 text

JAWS-UG 名古屋 AWS Demo-1グランプリ 2023/05/29 あきた(yoyoyo_pg) CDK + ecspresso でお手軽 コンテナ3分クッキング

Slide 2

Slide 2 text

● あきた(@yoyoyo_pg) https://qiita.com/yoyoyo_pg ● 名古屋在住 ● Javaのバックエンド開発を2年 ● AWS歴は1年半 ● 好きなAWSサービス:AWS CDK ● 社外のLT初登壇です! 自己紹介

Slide 3

Slide 3 text

● 5/20(土)にCDK Conferenceに現地参加してきました! ● CDKの盛り上がりが凄い...! 発表の前に👀

Slide 4

Slide 4 text

● パブリックサブネットにALB ● プライベートサブネットにECSコンテナ(nginx) 本日の献立🍽

Slide 5

Slide 5 text

● AWS CDK v2 ○ ECSサービス、タスク以外を定義 ○ VPC,SG,ALB,TG,ECSクラスター,各種ロール etc… ● コンテナデプロイツールのecspresso☕ ○ ECSサービス、タスクを定義 本日の材料🍽

Slide 6

Slide 6 text

● AWS Cloud Development Kit (AWS CDK) ○ 既存のプログラミング言語を利用し、AWSインフラ リソースの定義が可能 ○ cdk deploy スタック名でコードを基に CloudFormationスタックがデプロイ ● 個人的に便利だと感じる点 ○ リソースに応じたIAMロール、ポリシーが自動生成 される点 ○ 条件分岐やコンストラクトを利用する事で、複数環 境・アプリケーションの展開が容易な点 AWS CDKとは

Slide 7

Slide 7 text

● Amazon ECSのデプロイツール(OSS) ○ ECSサービス、タスクに関わる最小限のリソースを コード管理する事が可能 ○ ecspresso initで既存サービス、タスク定義を設定 ファイルとしてインポート ○ ecspresso deployで、ファイルを基にデプロイ ● 個人的に便利だと感じる点 ○ ファイル内でCloudFormationのスタックのOutput やSSMパラメータストアの参照が可能 ecspressoとは☕

Slide 8

Slide 8 text

● AWS CDK + ecspressoの構成ファイルを用意します。 ● devcontainerの設定ファイルを準備した上で、 Github Codespacesを立ち上げます。 ● Github Codespaces上でクレデンシャルを設定しま す。 ● cdk deploy と ecspresso deploy を実行すれば完成! 構築レシピ📖

Slide 9

Slide 9 text

➔ AWS CDK + ecspressoの構成ファイルを用意します。 ● devcontainerの設定ファイルを準備した上で、 Github Codespacesを立ち上げます。 ● Github Codespaces上でクレデンシャルを設定しま す。 ● cdk deploy と ecspresso deploy を実行すれば完成! 構築レシピ📖

Slide 10

Slide 10 text

➔ AWS CDK + ecspressoの構成ファイルを用意します。 構築レシピ📖

Slide 11

Slide 11 text

構築のポイント ● AWS CDK側:生成した各種リソースのパラメータを SSMパラメータストアに格納 ● ecspresso側:SSMパラメータストアの値を参照

Slide 12

Slide 12 text

構築のポイント ● AWS CDK側:生成した各種リソースのパラメータを SSMパラメータストアに格納 ● ecspresso側:SSMパラメータストアの値を参照 ➔ CDKでコンテナ関連リソースを構築し直しても、 ecspresso deploy時に動的に参照先を切り替えられる

Slide 13

Slide 13 text

構築のポイント ● AWS CDK側:生成した各種リソースのパラメータを SSMパラメータストアに格納 ● ecspresso側:SSMパラメータストアの値を参照 ➔ CDKでコンテナ関連リソースを構築し直しても、 ecspresso deploy時に動的に参照先を切り替えられる ➔ CDKベストプラクティスの1つである「自動で生成され るリソース名」が使いやすくなる

Slide 14

Slide 14 text

構築のポイント ● AWS CDK側:生成した各種リソースのパラメータを SSMパラメータストアに格納 cdk-ecspresso-stack.ts

Slide 15

Slide 15 text

構築のポイント ● ecspresso側:SSMパラメータストアの値を参照 ecspresso.yml ecs-service-def.json

Slide 16

Slide 16 text

● AWS CDK + ecspressoの構成ファイルを用意します。 ➔ devcontainerの設定ファイルを準備した上で、 Github Codespacesを立ち上げます。 ● Github Codespaces上でクレデンシャルを設定しま す。 ● cdk deploy と ecspresso deploy を実行すれば完成! 構築レシピ📖

Slide 17

Slide 17 text

● AWS CDK + ecspressoの構成ファイルを用意します。 ➔ devcontainerの設定ファイルを準備した上で、 Github Codespacesを立ち上げます。 構築レシピ📖

Slide 18

Slide 18 text

Dockerfile🐋 ● Codespaces立ち上げ時に、CDKとecspressoの環境構 築

Slide 19

Slide 19 text

● AWS CDK + ecspressoの構成ファイルを用意します。 ● devcontainerの設定ファイルを準備した上で、 Github Codespacesを立ち上げます。 ➔ Github Codespaces上でクレデンシャルを設定しま す。 ● cdk deploy と ecspresso deploy を実行すれば完成! 構築レシピ📖

Slide 20

Slide 20 text

● AWS CDK + ecspressoの構成ファイルを用意します。 ● devcontainerの設定ファイルを準備した上で、 Github Codespacesを立ち上げます。 ➔ Github Codespaces上でクレデンシャルを設定しま す。 事前に設定済! 構築レシピ📖

Slide 21

Slide 21 text

本日Demoするのは...🍽 ● AWS CDK + ecspressoの構成ファイルを用意します。 ● devcontainerの設定ファイルを準備した上で、 Github Codespacesを立ち上げます。 ● Github Codespaces上でクレデンシャルを設定しま す。 ➔ cdk deploy と ecspresso deploy を実行すれば完成! Github Codespacesの立ち上げ後、3コマンドで構築 完了 cdk deploy CdkEcspressoStack cd ecspresso ecspresso deploy

Slide 22

Slide 22 text

Demo内容

Slide 23

Slide 23 text

● Code > Codespaces > 準備したコンテナを選択 Github Codespacesの立ち上げ

Slide 24

Slide 24 text

cdk deploy(確認で'y'を選択しEnter)

Slide 25

Slide 25 text

cdk deploy(デプロイ中)

Slide 26

Slide 26 text

cdk deploy(デプロイ完了)

Slide 27

Slide 27 text

cdk deploy(CloudFormation上で結果を確認) ※ SSMパラメータ数が多いと、案外リソース数も多くなるので注意

Slide 28

Slide 28 text

ecspresso deploy(デプロイ完了) ※ ecs-task-def.jsonでdesiredCount:1としているので、タスクが1 台起動

Slide 29

Slide 29 text

ecspresso deploy(デプロイ完了) ※ ALBのDNS名:8080でnginxコンテナへアクセス

Slide 30

Slide 30 text

● 実行コマンドを逆順に実行していくのみ ● まず、ECSタスク`nginx`の停止(マネコン上) ● 次に、ecspresso deleteの実行 ● 最後に、cdk destroy CdkEcspressoStackの実行 おまけ:片付け手順

Slide 31

Slide 31 text

● Githubでサンプルコードを公開しています。 ● 今回のデモと同様の手順を試せる状態となっています ので、宜しければお試しください! https://github.com/yoyoyo-pg/cdk-ecspresso おまけ:サンプルコード

Slide 32

Slide 32 text

● AWS CDKでクラウドアプリケーションを開発するため のベストプラクティス - Amazon Web Services ブログ https://aws.amazon.com/jp/blogs/news/best-prac tices-for-developing-cloud-applications-with-aws- cdk/ ● ecspresso handbook v2対応版 - Zenn https://zenn.dev/fujiwara/books/ecspresso-handb ook-v2 参考文献