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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
850
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
AIエージェントの知識表現と推論に なぜグラフが使われるのか - 記号的AIの復権とニューラルAIとの統合
yohei1126
1
250
それでも、技術なブログを書く理由 #kichijojipm / Why I Still Write Tech Blogs Even Now
shinkufencer
0
1.5k
Claude Code並行開発環境の ムダ‧ムラ‧ムリを見直した話
muranakaaa
1
390
脱Jenkins、インターン生が挑んだCIツールGitHubActions移行
mixi_engineers
PRO
1
300
【CEDEC2026】ゲームシナリオライターを支援するAIツール開発の実践 ― 設計とプロンプトの工夫 ―
cygames
PRO
1
160
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
53k
大 AI 時代におけるC# の事情 ~ぶっちゃけトークを交えながら~
nenonaninu
1
620
LLMリーダーボードアップデートに向けたAgentic Math_SWEのトレースについて
nejumi
0
190
『モンスターストライク』 の運営に伴走する! データ民主化への 解析グループの3つのアプローチ
mixi_engineers
PRO
0
200
AIがAPIを書く時代に、私たちは何を設計すべきか
nagix
0
200
データ組織の転換期 一足飛びしない段階的戦略
leveragestech
PRO
0
140
なぜ、あなたのAPIは使われないのか? AX時代の設計原則、ガードレール、運用体制
yokawasa
1
1.2k
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
How to Ace a Technical Interview
jacobian
281
24k
sira's awesome portfolio website redesign presentation
elsirapls
0
310
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Speed Design
sergeychernyshev
33
2k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
650
Documentation Writing (for coders)
carmenintech
77
5.4k
Exploring anti-patterns in Rails
aemeredith
3
450
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
370
Optimizing for Happiness
mojombo
378
71k
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