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
770
MITRE ATT&CK入門~攻撃者はAWSの侵害をどう進めるのか~
_takahash
1
300
コンテナでLambdaをデプロイするときに知っておきたかったこと
_takahash
2
820
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
知らん間に、回ってる
ming_ayami
0
330
AI駆動開発におけるQAエンジニアの役割事例 〜AI駆動開発の現場から〜
kobayashiyorimitsu
0
400
CIで使うClaude
iwatatomoya
0
170
Baseline対応のDOMの型定義を作った
uhyo
3
720
金融の未来を考える / Thinking About the Future of Finance
ks91
PRO
0
180
Foxgloveについて 実際にExtensionを開発して公開するまでの話 / About Foxglove: The Story of Developing and Releasing an Extension
ry0_ka
0
180
Text-to-SQLをAgentCoreで実現し、生成されるSQLの精度を定量的に評価する
yakumo
2
670
SRE依存からの脱却 運用を開 発チームへ移す、 フルサイ クル開 発体制の実践
joooee0000
0
1.9k
Why is RC4 still being used?
tamaiyutaro
0
310
なぜ私たちのSREプラクティスはなかなか機能しないのか 〜システムより先に組織を見る〜 / Why our SRE practices aren't really working
vtryo
1
2.6k
アカウントが増えてからでは遅い? ~ マルチアカウント統制の勘所 ~
kenichinakamura
0
190
認証認可だけじゃない! ID管理の構成要素と ライフサイクルを意識しよう
ritou
1
520
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
220
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
180
GitHub's CSS Performance
jonrohan
1033
470k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
550
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.6k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
460
Designing for Performance
lara
611
70k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
The Pragmatic Product Professional
lauravandoore
37
7.4k
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