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
AWS Copilotを CDKでカスタマイズする
Search
takahash
May 20, 2023
Technology
4.3k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS Copilotを CDKでカスタマイズする
takahash
May 20, 2023
More Decks by takahash
See All by takahash
ECS Managed Instanceをキャッチアップしよう!
_takahash
2
790
MITRE ATT&CK入門~攻撃者はAWSの侵害をどう進めるのか~
_takahash
1
310
コンテナでLambdaをデプロイするときに知っておきたかったこと
_takahash
2
840
EKS Auto ModeではじめるEKS / lets-start-eks-auto-mode
_takahash
1
1k
Seekable OCI (SOCI) によるコンテナ起動の高速化
_takahash
4
1.1k
Other Decks in Technology
See All in Technology
Amazon Bedrock Managed Knowledge BaseDive Deep
ren8k
0
280
Claude Code並行開発環境の ムダ‧ムラ‧ムリを見直した話
muranakaaa
0
340
AI時代の強いチームの作り方
yuukiyo
14
7.9k
システム監視を 「システムを監視するだけ」で 終わらせないために
seiud
0
150
実践が先生だった— 新卒サーバーエンジニア1年目のリアル
mixi_engineers
PRO
0
210
NetBoxを利用した作業効率化の試み_NetDevNight4
tnoha
0
390
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
8
1.9k
現場で使える AWS DevOps Agent 活用ノウハウ - Release Management 機能の検証結果を添えて / AWS DevOps Agent Release Management and Know-How
kinunori
5
790
信頼できるテスティングAIをどう育てるか?
odan611
0
170
最高のシステムプロンプトを作るためにフィードバック機能を導入した話
alchemy1115
1
240
QA・ソフトウェアテスト研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
3
1.8k
論語・武士道・産業革命から見る かわるもの、かわらないもの
ichimichi
8
1.8k
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
350
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The Language of Interfaces
destraynor
162
27k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
930
Faster Mobile Websites
deanohume
310
32k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Embracing the Ebb and Flow
colly
88
5.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
160
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
460
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Transcript
AWS Copilotを CDKでカスタマイズする AWS CDK Conference Japan 2023 @_takahash 1
自己紹介 • takahash (@_takahash) • CoEのテックリード • 社内AWS基盤の運用 • ガイドライン整備
• Like • AWS CDK, AWS CLI 2
Agenda • AWS Copilotについて • AWS CopilotのCDK Overridesについて • まとめ
想定聴衆: AWS Copilotは触ったことないけど、 CDKはある人 3
AWS Copilotについて 4
AWS Copilotとは • コマンドラインからコンテナ環境や CI/CDパイプライン等を対話形式 で容易に作成可能 • 次スライド以降に利用イメージ • マニフェスト(manifest.yml)に
よる宣言的なアーキテクチャの定義 が可能 AWS App Runnerまたは Amazon ECS on AWS Fargate上の コンテナアプリケーションのビルド、リリース、運用のためのCLIツール 注: Amazon ECSはAmazon Elastic Container Serviceの略称です 5 AWS Copilot
copilot app init # アプリケーションの作成 $ copilot app init [--domain
example.com] # アプリケーション名を指定 Application: app 6
copilot env [init|deploy] --name dev # dev環境の作成 $ copilot env
init –-name dev # 利用するAWS Profileを指定 # VPCの構成を指定 # - デフォルト構成 # - カスタマイズ # - 既存VPCのインポート # dev環境のデプロイ $ copilot env deploy --name dev Application: app Environment: dev VPC(Virtual Private Cloud) 7
copilot svc [init|deploy] --name frontend # frontendサービスの作成 $ copilot svc
init --name frontend # サービスタイプの指定 # - Request-Driven Web Services (App Runner) # - Load Balanced Web Service (ECS/Fargate) # - Backend Service (ECS/Fargate) # - Worker Service (SQS + ECS/Fargate) # Dockerfileの指定 # - ローカル # - カスタムパス # - 既存イメージの利用 # frontendサービスのデプロイ $ copilot svc deploy --name frontend Application: app Environment: dev VPC Cluster Service: frontend Amazon ECR 8
copilot svc [init|deploy] --name backend # backendサービス作成 $ copilot svc
init --name backend #(割愛) # ストレージの作成 $ copilot storage init –t DynamoDB --name ddb # Storageにアクセスするサービスの指定 # Storageをサービス削除時に削除するか指定 # PartitionKeyの指定 # SortKeyの指定 # backendサービスのデプロイ $ copilot svc deploy --name backend Application: app Environment: dev VPC Cluster Service: frontend Amazon ECR Service: backend Amazon ECR Amazon DynamoDB 注: Amazon ECRはAmazon Elastic Container Registryの略称です 9
copilot env [init/deploy] --name prod # prod環境の作成 $ copilot env
init –-name prod # frontendサービスのデプロイ $ copilot svc deploy --name frontend –-env prod # backendサービスのデプロイ $ copilot svc deploy --name backend --env prod Application: app Environment: dev VPC Cluster Service: frontend Amazon ECR Service: backend Amazon ECR Environment: prod Amazon DynamoDB 10
AWS Copilotの CDK Overridesについて 11
CDK Overridesとは • AWS Copilot v1.27でリリース(2023/3/28) • AWS Copilotによって生成されたCFnテンプレートの任意のプロパティを AWS
CDKで変更できるようになった • これまでユーザはAWS Copilotのマニフェストを編集することで、生成されるCFn テンプレートの内容をある程度は変更できたが手が届かないところもあった • 例えば、Copilotが作成したNLBに独自に作成したEIPを紐づけるようなことは難しかった • env/svc/jobリソースに対応(v1.27現在) AWS Copilotがデプロイするリソースとプロパティをカスタマイズする 12 AWS Cloud Development Kit (AWS CDK)
# オーバライド用CDKアプリケーションの生成 $ copilot svc override –n frontend –tool cdk
# CDK Stackの編集 $ vi frontend/overrides/stack.ts # 差分を確認 $ copilot svc [deploy|package] --diff # デプロイまたはCFnテンプレートの出力 $ copilot svc [deploy|package] TypeScriptのみ対応(2023/5現在) 利用イメージ 13
stack.ts (1/2) L18-20: cloudformation-includeモジュールで Copilotが生成したCFnテンプレート を読み込み CFnテンプレートは copilot svc [deploy|package]のたびに生成
L23: オーバーライド処理の実行 (定義は次スライドへ) 14
stack.ts (2/2) L31: 独自リソースの定義 L36: 既存プロパティの削除 L37-43: プロパティの追加 15
まとめ/所感 16
まとめ/所感 • CDK OverridesによってAWS Copilotのより柔軟なカスタマイズが可能 になった • 一方でカスタマイズが多くなるとCopilotが管理するmanifest.ymlとの 乖離が大きくなりどこで何が設定されているか見通しが悪くなるので注意 •
特にチームで開発を行う場合はstack.tsの記述は最小限に抑えるなどの決めごと は必要か • 今後も他のツールとCDKの連携が広がることに期待 ❤ 17