2023-05-29(月)AWS-UG名古屋 のLT資料です。
JAWS-UG 名古屋 AWS Demo-1グランプリ2023/05/29 あきた(yoyoyo_pg)CDK + ecspresso でお手軽コンテナ3分クッキング
View Slide
● あきた(@yoyoyo_pg)https://qiita.com/yoyoyo_pg● 名古屋在住● Javaのバックエンド開発を2年● AWS歴は1年半● 好きなAWSサービス:AWS CDK● 社外のLT初登壇です!自己紹介
● 5/20(土)にCDK Conferenceに現地参加してきました!● CDKの盛り上がりが凄い...!発表の前に👀
● パブリックサブネットにALB● プライベートサブネットにECSコンテナ(nginx)本日の献立🍽
● AWS CDK v2○ ECSサービス、タスク以外を定義○ VPC,SG,ALB,TG,ECSクラスター,各種ロール etc…● コンテナデプロイツールのecspresso☕○ ECSサービス、タスクを定義本日の材料🍽
● AWS Cloud Development Kit (AWS CDK)○ 既存のプログラミング言語を利用し、AWSインフラリソースの定義が可能○ cdk deploy スタック名でコードを基にCloudFormationスタックがデプロイ● 個人的に便利だと感じる点○ リソースに応じたIAMロール、ポリシーが自動生成される点○ 条件分岐やコンストラクトを利用する事で、複数環境・アプリケーションの展開が容易な点AWS CDKとは
● Amazon ECSのデプロイツール(OSS)○ ECSサービス、タスクに関わる最小限のリソースをコード管理する事が可能○ ecspresso initで既存サービス、タスク定義を設定ファイルとしてインポート○ ecspresso deployで、ファイルを基にデプロイ● 個人的に便利だと感じる点○ ファイル内でCloudFormationのスタックのOutputやSSMパラメータストアの参照が可能ecspressoとは☕
● AWS CDK + ecspressoの構成ファイルを用意します。● devcontainerの設定ファイルを準備した上で、Github Codespacesを立ち上げます。● Github Codespaces上でクレデンシャルを設定します。● cdk deploy と ecspresso deploy を実行すれば完成!構築レシピ📖
➔ AWS CDK + ecspressoの構成ファイルを用意します。● devcontainerの設定ファイルを準備した上で、Github Codespacesを立ち上げます。● Github Codespaces上でクレデンシャルを設定します。● cdk deploy と ecspresso deploy を実行すれば完成!構築レシピ📖
➔ AWS CDK + ecspressoの構成ファイルを用意します。構築レシピ📖
構築のポイント● AWS CDK側:生成した各種リソースのパラメータをSSMパラメータストアに格納● ecspresso側:SSMパラメータストアの値を参照
構築のポイント● AWS CDK側:生成した各種リソースのパラメータをSSMパラメータストアに格納● ecspresso側:SSMパラメータストアの値を参照➔ CDKでコンテナ関連リソースを構築し直しても、ecspresso deploy時に動的に参照先を切り替えられる
構築のポイント● AWS CDK側:生成した各種リソースのパラメータをSSMパラメータストアに格納● ecspresso側:SSMパラメータストアの値を参照➔ CDKでコンテナ関連リソースを構築し直しても、ecspresso deploy時に動的に参照先を切り替えられる➔ CDKベストプラクティスの1つである「自動で生成されるリソース名」が使いやすくなる
構築のポイント● AWS CDK側:生成した各種リソースのパラメータをSSMパラメータストアに格納cdk-ecspresso-stack.ts
構築のポイント● ecspresso側:SSMパラメータストアの値を参照ecspresso.yml ecs-service-def.json
● AWS CDK + ecspressoの構成ファイルを用意します。➔ devcontainerの設定ファイルを準備した上で、Github Codespacesを立ち上げます。● Github Codespaces上でクレデンシャルを設定します。● cdk deploy と ecspresso deploy を実行すれば完成!構築レシピ📖
● AWS CDK + ecspressoの構成ファイルを用意します。➔ devcontainerの設定ファイルを準備した上で、Github Codespacesを立ち上げます。構築レシピ📖
Dockerfile🐋● Codespaces立ち上げ時に、CDKとecspressoの環境構築
● AWS CDK + ecspressoの構成ファイルを用意します。● devcontainerの設定ファイルを準備した上で、Github Codespacesを立ち上げます。➔ Github Codespaces上でクレデンシャルを設定します。● cdk deploy と ecspresso deploy を実行すれば完成!構築レシピ📖
● AWS CDK + ecspressoの構成ファイルを用意します。● devcontainerの設定ファイルを準備した上で、Github Codespacesを立ち上げます。➔ Github Codespaces上でクレデンシャルを設定します。事前に設定済!構築レシピ📖
本日Demoするのは...🍽● AWS CDK + ecspressoの構成ファイルを用意します。● devcontainerの設定ファイルを準備した上で、Github Codespacesを立ち上げます。● Github Codespaces上でクレデンシャルを設定します。➔ cdk deploy と ecspresso deploy を実行すれば完成!Github Codespacesの立ち上げ後、3コマンドで構築完了cdk deploy CdkEcspressoStackcd ecspressoecspresso deploy
Demo内容
● Code > Codespaces > 準備したコンテナを選択Github Codespacesの立ち上げ
cdk deploy(確認で'y'を選択しEnter)
cdk deploy(デプロイ中)
cdk deploy(デプロイ完了)
cdk deploy(CloudFormation上で結果を確認)※ SSMパラメータ数が多いと、案外リソース数も多くなるので注意
ecspresso deploy(デプロイ完了)※ ecs-task-def.jsonでdesiredCount:1としているので、タスクが1台起動
ecspresso deploy(デプロイ完了)※ ALBのDNS名:8080でnginxコンテナへアクセス
● 実行コマンドを逆順に実行していくのみ● まず、ECSタスク`nginx`の停止(マネコン上)● 次に、ecspresso deleteの実行● 最後に、cdk destroy CdkEcspressoStackの実行おまけ:片付け手順
● Githubでサンプルコードを公開しています。● 今回のデモと同様の手順を試せる状態となっていますので、宜しければお試しください!https://github.com/yoyoyo-pg/cdk-ecspressoおまけ:サンプルコード
● AWS CDKでクラウドアプリケーションを開発するためのベストプラクティス - Amazon Web Services ブログhttps://aws.amazon.com/jp/blogs/news/best-practices-for-developing-cloud-applications-with-aws-cdk/● ecspresso handbook v2対応版 - Zennhttps://zenn.dev/fujiwara/books/ecspresso-handbook-v2参考文献