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
220
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.8k
Development of authorization system using Authlete and AWS
keitakn
0
1.4k
Other Decks in Programming
See All in Programming
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
230
高速開発のためのコード整理術
sutetotanuki
1
410
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
6.1k
2026年 エンジニアリング自己学習法
yumechi
0
140
日本だけで解禁されているアプリ起動の方法
ryunakayama
0
240
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
1
990
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
440
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
200
Apache Iceberg V3 and migration to V3
tomtanaka
0
170
CSC307 Lecture 08
javiergs
PRO
0
670
Honoを使ったリモートMCPサーバでAIツールとの連携を加速させる!
tosuri13
1
180
SourceGeneratorのススメ
htkym
0
200
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Designing Experiences People Love
moore
144
24k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
sira's awesome portfolio website redesign presentation
elsirapls
0
150
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
410
WENDY [Excerpt]
tessaabrams
9
36k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Six Lessons from altMBA
skipperchong
29
4.2k
Odyssey Design
rkendrick25
PRO
1
500
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
57
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