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
Terraform で作る Amazon ECS の CI/CD パイプライン
Search
hiyanger
January 18, 2025
Programming
0
20
Terraform で作る Amazon ECS の CI/CD パイプライン
栃木ゆる勉強会(2025/1/18)
https://tochigi-study.connpass.com/event/337526/
登壇 / 20分
hiyanger
January 18, 2025
Tweet
Share
More Decks by hiyanger
See All by hiyanger
【AWS】EC2 基本アーキテクチャ(ハンズオン付き)
hiyanger
0
31
もういっそ AWS できなくても AWS できるようになるシステム作った
hiyanger
2
220
Terraform CI/CD パイプラインにおける AWS CodeCommit の代替手段
hiyanger
1
430
AWS 構成図を S3 にアップするだけで Terraform のコードを git push / pull request から terraform plan まで自動で動作するシステム
hiyanger
10
2.8k
テックブログのレベルを上げるために 抑えておくべき3つのポイント
hiyanger
0
95
もくもく会はなぜ良いのか?
hiyanger
0
77
AWS Codeシリーズ Terraformパイプライン 勉強会/ハンズオン
hiyanger
0
140
AWS Codeシリーズで構築したTerraformパイプラインのユーザー側IAM
hiyanger
0
150
AWS Codeシリーズを使った TerraformのCICDパイプラインの作り方
hiyanger
1
650
Other Decks in Programming
See All in Programming
各クラウドサービスにおける.NETの対応と見解
ymd65536
0
240
PHPで作るWebSocketサーバー ~リアクティブなアプリケーションを知るために~ / WebSocket Server in PHP - To know reactive applications
seike460
PRO
2
750
watsonx.ai Dojo #6 継続的なAIアプリ開発と展開
oniak3ibm
PRO
0
150
Внедряем бюджетирование, или Как сделать хорошо?
lamodatech
0
910
Androidアプリのモジュール分割における:x:commonを考える
okuzawats
1
270
shadcn/uiを使ってReactでの開発を加速させよう!
lef237
0
280
Androidアプリの One Experience リリース
nein37
0
980
非ブラウザランタイムとWeb標準 / Non-Browser Runtimes and Web Standards
petamoriken
0
420
快速入門可觀測性
blueswen
0
490
週次リリースを実現するための グローバルアプリ開発
tera_ny
1
1k
生成AIでGitHubソースコード取得して仕様書を作成
shukob
0
610
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
soi013
0
360
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
96
5.3k
Fireside Chat
paigeccino
34
3.1k
Typedesign – Prime Four
hannesfritz
40
2.5k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Speed Design
sergeychernyshev
25
730
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.5k
Thoughts on Productivity
jonyablonski
68
4.4k
Adopting Sorbet at Scale
ufuk
74
9.2k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2.1k
jQuery: Nuts, Bolts and Bling
dougneiner
62
7.6k
Agile that works and the tools we love
rasmusluckow
328
21k
Transcript
Terraform で作る Amazon ECS の CI/CD
自己紹介 名前 / 檜山 準(ひやんが / hiyanger) 職種 / AWS
エンジニア 所属 / クラウド系 SIer 出身 / 栃木県 宇都宮市 趣味 / ギター 🎸 @hiyanger
自己紹介 出身 / 宇都宮 錦小学校 陽北中学校 宇都宮北高
自己紹介 名前 / 檜山 準(ひやんが / hiyanger) 職種 / AWS
エンジニア 所属 / クラウド系 SIer 出身 / 栃木県 宇都宮市 趣味 / ギター 🎸 @hiyanger
自己紹介 AWS でやってきたこと 現 SIer には 2022/12 入社 そこから AWS
をさわり始める
自己紹介 本日は改めて ご参加ありがとうございます! うーたんさんとの初回は東京の LT会、めぐろ LT 会にて。 その後、企画からお誘いいただ きました🙏
Terraform で作る Amazon ECS の CI/CD
はじめに ※補足 各用語の概要 Terraform コードでインフラが作れる IaC のひとつ。コードはインフラエ ンジニアにも優しい。 ECS AWS
で使われるコンテナの代 表格。オーケストレーション的 なこともできちゃう。 CI/CD コードの変更からビルド、テス ト、デプロイまで自動化。
もくじ 1. どのような CI/CD パイプラインを作るかの検討 2. 実際に CI/CD パイプラインを構築
1.どのような CI/CD パイプライン を 作るかの検討
どのような CI/CD パイプラインを作るかの検討 もくじ 1. GitHub Actions のみ 2. AWS
Code シリーズ のみ 3. GitHub Actions + AWS Code シリーズ
どのような CI/CD パイプラインを作るかの検討 1. GitHub Actions のみ メリット .yml 1つで完結する
デメリット ・AWS との複数の API 連携で処理が増える ・Blue/Green が できなさそう
どのような CI/CD パイプラインを作るかの検討 2. AWS Codeシリーズ のみ メリット ・他サービスと 連携しやすいし柔軟
・Blue/Green、ロール バックも可能 デメリット IAM ロールの管理が 増える
どのような CI/CD パイプラインを作るかの検討 3. GitHub Actions + AWS Codeシリーズ メリット
・単独で使う場合の 煩雑性を解消できる ・アプリとインフラの境 界を明確にできる💡 デメリット 両方の管理が必要
どのような CI/CD パイプラインを作るかの検討 アプリとインフラの境界を明確化(例) アプリは GitHub Actions!インフラは Code シリーズ! appspec.yml
migrations.sql dockerfile 等 pipeline.tf
2. 実際に CI/CD パイプラインを 構築
実際に CI/CD パイプラインを構築 構成図 💡ポイント💡 ・アプリとインフラが いる ・GHA と Code
シリーズ が混在
実際に CI/CD パイプラインを構築 構築のながれ 1. GitHub Actions 2. 基本リソースの作成 3.
AWS Code シリーズ
実際に CI/CD パイプラインを構築 1. GitHub Actions ・dockerfile から docker image
をビルド ・docker image を ECR に push (💡OIDC 接続 / AWS クレデンシャル配置不要) ・migrations.sql を S3 へ配置 OIDC
はじめに 1. GitHub Actions / Terraform(IAMロール) OIDC で GitHub からの
アクセスを許可💡
実際に CI/CD パイプラインを構築 2.基本リソースの作成 ・ECS ・VPC ・RDS ・ALB ・S3 VPC
VPC
はじめに 2.基本リソースの作成 / Terraform(ECS) deployment_conrroller は CODE_DEPLOY💡
実際に CI/CD パイプラインを構築 3. AWS Code シリーズ ・CodePipeline ・CodeBuild 💡RDS
が プライベートサブネットに あると VPC への配置と NAT GW が必要 ・CodeDeploy 💡ログがないのでエラーがでるとつらい
実際に CI/CD パイプラインを構築 3. AWS Codeシリーズ / Terraform(CodeDeploy) ロールバックや、 Blue/Green
はここで設定💡
実際に CI/CD パイプラインを構築 パイプラインを流してみる ECR へプッシュ DB マイグレーション ECS デプロイ
ECR からトリガー
参考 ・より詳細な自分の Qiita 記事(GHA やTerraformのコードはこちらから) 【AWS】ECS CI/CD の作り方(GitHub Actions /
Code シリーズ / Terraform) https://qiita.com/hiyanger/items/05d9203048d09da28288 ・ECS用のCDパイプラインに対する考察 https://zenn.dev/reireias/articles/8e987af2762eaa#3.-image-build%E3%81%AE%E3%81% BFgithub-actions%E3%81%A7%E3%82%84%E3%82%8B ・AWSとGitHubを用いたパターン別CI/CD構成解説 https://speakerdeck.com/tsukuboshi/cdgou-cheng-jie-shuo?slide=29 ・GitHub Actions から ECR に Docker イメージを push する https://zenn.dev/kou_pg_0131/articles/gh-actions-ecr-push-image#1.-github-actions-%E 7%94%A8%E3%81%AE-id-%E3%83%97%E3%83%AD%E3%83%90%E3%82%A4%E3%83%80 %E3%81%A8-iam-%E3%83%AD%E3%83%BC%E3%83%AB%E3%82%92%E4%BD%9C%E6%88 %90%E3%81%99%E3%82%8B
以上です。 ありがとうございました! 今後とも「栃木ゆるIT勉強会」を よろしくおねがいします!