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
AWSFargateHandsOnStartingWithTerraform
Search
keita-koga
September 24, 2019
Programming
0
210
AWSFargateHandsOnStartingWithTerraform
See below to get started.
https://github.com/keitakn/my-terraform/wiki/2019-09-Fargate-Hands-on
keita-koga
September 24, 2019
Tweet
Share
More Decks by keita-koga
See All by keita-koga
Nuxt.js And TestCode
keitakn
2
4.7k
Development of authorization system using Authlete and AWS
keitakn
0
1.4k
Other Decks in Programming
See All in Programming
0626 Findy Product Manager LT Night_高田スライド_speaker deck用
mana_takada
0
110
童醫院敏捷轉型的實踐經驗
cclai999
0
200
NPOでのDevinの活用
codeforeveryone
0
440
「ElixirでIoT!!」のこれまでとこれから
takasehideki
0
370
PicoRuby on Rails
makicamel
2
110
AIエージェントはこう育てる - GitHub Copilot Agentとチームの共進化サイクル
koboriakira
0
450
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
260
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
230
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
550
システム成長を止めない!本番無停止テーブル移行の全貌
sakawe_ee
1
150
プロダクト志向ってなんなんだろうね
righttouch
PRO
0
170
Node-RED を(HTTP で)つなげる MCP サーバーを作ってみた
highu
0
110
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Practical Orchestrator
shlominoach
188
11k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.8k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Statistics for Hackers
jakevdp
799
220k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
490
Transcript
Terraformで始めるAWS Fargateハンズオン keitakn(古賀圭太)
自己紹介 古賀圭太 フリーランスエンジニア(主にWeb系) Twitter: https://twitter.com/keita_kn_web GitHub: https://github.com/keitakn Qiita: https://qiita.com/keitakn
今日の内容 • AWS Fargateの概要 • AWS FargateのリソースをTerraformで作成する方法
AWS Fargateの概要 ECSのコンピューティングエンジンの1つです。 最大の特徴はクラスター管理が不要な点です。 https://aws.amazon.com/jp/fargate/
AWS Fargateの料金 ECSのEC2モードと比較すると多少割高です。 しかし2019年1月以降値下げを行っています。 EC2リソースを管理する手間を考えたら、安いと言えると思います。 (参考)AWS FargateとEC2の料金比較 https://dev.classmethod.jp/cloud/aws/compare-fees-for-fargat-and-ec2-2019-1/
Kubernetesとの比較 コンテナの実行環境としてはKubernetesがデファクトスタンダードになっています。AWS にはEKS、GCPにはGKEとそれぞれマネージドサービスが存在します。 これらはKubernetesの知識があれば扱えます。 それと比較してFargateに出てくる用語や概念はAWS独自の物になります。 よって独自概念を知識として身につける必要があります。 ただ将来的にはFargateからKubernetesが起動出来るようになる可能性もあります。
TerraformでFargateに入門する 以下にサンプルコードを用意しました。 https://github.com/keitakn/my-terraform 以下のGoLang製の2つのアプリケーションをFargateで起動させています。 https://github.com/keitakn/go-rest-api https://github.com/keitakn/go-graphql
基本的に全てのリソースはTerraformで管理出来ます。 • Dockerイメージを格納するECRのリポジトリ • FargateにアタッチするIAMロール • Fargateクラスタ • Fargateのサービス定義 •
Fargateタスク定義 • Fargateアプリケーションが利用するALB • Fargateをデプロイする為のCodeDeploy Terraformで管理しているFargate関連リソース
Dockerイメージを格納するECRのリポジトリ privateイメージを扱うのであればECRのリポジトリを作るのが早いです。 こんな感じでECRへのプッシュscriptを用意しておきます。 CodeBuildからこれらを実行するように設定しておくと良いでしょう。
FargateにアタッチするIAMロール こんな感じです。 SSMへのアクセス権を付与して おくとParameterStoreから 環境変数を取得出来るので 便利です。
Fargateクラスタ
Fargateのタスク定義
Fargateのタスク定義 コンテナの設定はこんな感じです。
Fargateのサービス定義 こんな感じです。 ポイントとしては下記の通りです。 • マルチAZになるようサブネットを割り当て • デプロイによって変化する値はignoreする
Fargateアプリケーションが利用するALB 以下の点を意識して作成します。 • Blue/Green Deployment用に2つのターゲットグループを用意 • ターゲットグループのタイプはIPにする https://github.com/keitakn/my-terraform/blob/master/modules/aws/api/alb.tf
Build&デプロイの仕組み 1. ECRへ最新のDockerイメージをプッシュ 2. タスク定義からECSサービスの更新 3. CodeDeployでデプロイが行われる 全体の流れはこの記事が参考になります https://qiita.com/kobayashi-m42/items/59cfe693670d930f7522 これらの流れはCodePipeline等を使って自動化する事が可能です。
Fargateのログ収集について かつてはCloudWatchLogsにログを送るしか選択肢がありませんでした。 しかし今はSplunkにログを送信出来るようになっています。 CloudWatchLogsだけだと検索がツライので以下のように少し工夫をすると良いでしょ う。 • Splunkをログドライバーに指定する • CloudWatchLogsのsubscriptionFilter +
Lambdaを使って任意の場所に送信
監視について とりあえず最低限Container Insightsを有効にしておきましょう。 https://dev.classmethod.jp/cloud/aws/container-insights-ga/ あとは外形監視を導入しておくと良いです。 (参考)Datadogを使った例 https://docs.datadoghq.com/ja/synthetics/api_tests/?tab=httptest (参考)Datadogの外形監視をTerraformで設定 https://github.com/kobayashi-m42/datadog-terraform-sample/pull/6/files
デモ 以下のコードを使って実際にFargateのアプリケーションを起動させてみます。 デプロイも行ってみます。 https://github.com/keitakn/my-terraform