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
「ElixirでIoT!!」のこれまでとこれから
takasehideki
0
370
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
46
31k
Systèmes distribués, pour le meilleur et pour le pire - BreizhCamp 2025 - Conférence
slecache
0
110
プロダクト志向なエンジニアがもう一歩先の価値を目指すために意識したこと
nealle
0
110
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
240
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
360
プロダクト志向ってなんなんだろうね
righttouch
PRO
0
160
関数型まつり2025登壇資料「関数プログラミングと再帰」
taisontsukada
2
850
datadog dash 2025 LLM observability for reliability and stability
ivry_presentationmaterials
0
110
すべてのコンテキストを、 ユーザー価値に変える
applism118
2
800
0626 Findy Product Manager LT Night_高田スライド_speaker deck用
mana_takada
0
110
Create a website using Spatial Web
akkeylab
0
300
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
17
940
A Modern Web Designer's Workflow
chriscoyier
694
190k
Building Applications with DynamoDB
mza
95
6.5k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
Side Projects
sachag
455
42k
How to Think Like a Performance Engineer
csswizardry
24
1.7k
Speed Design
sergeychernyshev
32
1k
A designer walks into a library…
pauljervisheath
207
24k
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