Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CDK + ecspressoでお手軽コンテナ3分クッキング
Search
akita
May 28, 2023
Technology
0
890
CDK + ecspressoでお手軽コンテナ3分クッキング
2023-05-29(月)AWS-UG名古屋 のLT資料です。
akita
May 28, 2023
Tweet
Share
More Decks by akita
See All by akita
CDKを活用した 大規模コンテナ移行 プロジェクトの紹介
yoyoyopg
0
440
AWSやJAWS-UGとの出会いを振り返る
yoyoyopg
1
380
AWS Control Tower で マルチアカウント運用を試した話
yoyoyopg
0
70
Other Decks in Technology
See All in Technology
Scale Security Programs with Scorecarding
ramimac
0
310
さくらのクラウド 開発の挑戦とその舞台裏
kazeburo
0
690
GigaViewerにおけるMackerel APM導入の裏側
7474
0
150
熱々🔥のUDN🍜を喰らえ❗マルチテナントもVM統合も思いのまま❗新機能で切り拓くk8sネットワークの未来
tsukaman
0
190
AIのための オンボーディングドキュメントを整備する - hirotea
hirotea
8
1.9k
Introduction to Bill One Development Engineer
sansan33
PRO
0
230
OTel meets Wasm: プラグイン機構としてのWebAssemblyから見る次世代のObservability
lycorptech_jp
PRO
0
200
VueUseから学ぶ実践TypeScript #TSKaigi #TSKaigi2025
bengo4com
3
5.3k
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
8
65k
Project Referencesを活用した実行環境ごとのtsconfig最適化
itatchi3
1
230
RDRA3.0を知ろう
kanzaki
2
330
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
37k
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Code Review Best Practice
trishagee
68
18k
GitHub's CSS Performance
jonrohan
1031
460k
Agile that works and the tools we love
rasmusluckow
329
21k
YesSQL, Process and Tooling at Scale
rocio
172
14k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.8k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Making Projects Easy
brettharned
116
6.2k
A Tale of Four Properties
chriscoyier
159
23k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Transcript
JAWS-UG 名古屋 AWS Demo-1グランプリ 2023/05/29 あきた(yoyoyo_pg) CDK + ecspresso でお手軽 コンテナ3分クッキング
• あきた(@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 CdkEcspressoStack cd ecspresso ecspresso 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-prac
tices-for-developing-cloud-applications-with-aws- cdk/ • ecspresso handbook v2対応版 - Zenn https://zenn.dev/fujiwara/books/ecspresso-handb ook-v2 参考文献