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
Lightsail container + terraform + github actions
Search
h-taniuchi
November 28, 2022
Technology
0
290
Lightsail container + terraform + github actions
AWSのLightsail containerをterraformとgithub actions(とaws cli)を使って作成した時の流れをまとめた説明資料です。
h-taniuchi
November 28, 2022
Tweet
Share
Other Decks in Technology
See All in Technology
AIとともに進化するエンジニアリング / Engineering-Evolving-with-AI_final.pdf
lycorptech_jp
PRO
0
110
CursorによるPMO業務の代替 / Automating PMO Tasks with Cursor
motoyoshi_kakaku
1
440
Liquid Glass革新とSwiftUI/UIKit進化
fumiyasac0921
0
250
生まれ変わった AWS Security Hub (Preview) を紹介 #reInforce_osaka / reInforce New Security Hub
masahirokawahara
0
260
【TiDB GAME DAY 2025】Shadowverse: Worlds Beyond にみる TiDB 活用術
cygames
0
1.1k
Witchcraft for Memory
pocke
1
500
低レイヤを知りたいPHPerのためのCコンパイラ作成入門 完全版 / Building a C Compiler for PHPers Who Want to Dive into Low-Level Programming - Expanded
tomzoh
4
3.3k
急成長を支える基盤作り〜地道な改善からコツコツと〜 #cre_meetup
stefafafan
0
130
Node-RED × MCP 勉強会 vol.1
1ftseabass
PRO
0
160
Claude Code Actionを使ったコード品質改善の取り組み
potix2
PRO
6
2.4k
Understanding_Thread_Tuning_for_Inference_Servers_of_Deep_Models.pdf
lycorptech_jp
PRO
0
140
Yamla: Rustでつくるリアルタイム性を追求した機械学習基盤 / Yamla: A Rust-Based Machine Learning Platform Pursuing Real-Time Capabilities
lycorptech_jp
PRO
4
150
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
94
6.1k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Done Done
chrislema
184
16k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Navigating Team Friction
lara
187
15k
Being A Developer After 40
akosma
90
590k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
24k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Transcript
CARECON ENGINEER TECH-MEETUP Lightsail container + terraform+ github actions ⾕内隼⽃
⾃⼰紹介 ⾕内隼⽃ 何でも出来るエンジニア ・モンスターは⽩派。 ・斧、投げれます。 ・ボードゲームのゲームマスターできます。
本⽇のお題 これ作る→
本⽇のお題 簡単ですね︕︕︕はい、スタート︕︕
本⽇のお題 冗談です。。。 ちゃんと解説しないと企画部に怒られる。。。
本⽇のお題① ・ terraform + github actions を使ってLightsail containerの⼊れ物を作る
本⽇のお題② ・ aws cli + github actions を使ってLightsail containerの中⾝を作る
補⾜ Q. なんでterraformで作る部分と、aws cliで作る部分わけたの︖ A. れ、練習がてら両⽅触ってみたかったから(震え声 Q. この規模だとterraformって本当に⼊ります︖ A. ドボジデゾン゛ナ゛ゴドイ゛ウ゛ノ゛ォ゛ォ゛
諸説ある(不要っちゃ不要だと思う)
改めて、本⽇のお題(+少し全体解説) これ作る→
簡単な技術解説 「Lightsail container」, 「terraform」, 「github actions」, 「aws cli」
AWS Lightsail container ・Amazon Lightsailの中にあるコンテナサービス ・AWSの類似サービス(ECS)に⽐べて⼿軽に出来る ・コンテナは10個まで⾏ける ・ノードは20まで(但しノード数分、⽉額が加算される) ・割と安い(⼀番安いと「7USD/⽉」) →
安い割にはロードバランサとかも⼊っててる(らしい)
terraform ・インフラ構成をソースコードで管理できるツール ・クラウドのコンソールからポチポチやる作業をコードで書ける︕︕カッコいいね︕︕ → コードの書き⽅は公式ドキュメントを⾒るのが最善っぽい ・AWS以外にも⼤体のクラウドサービス(Azure, GCP)に対応してる
github actions ・⾔わずとしれたgithubのCI/CDツール ・特定のブランチの変更を検知した時の処理を実⾏可能 → ⼿動実⾏も可能 ・⼤きな流れは下記の通り 1. github actionsの実⾏時に仮想環境が作られる
2. 仮想環境にソースコードを取り込む 3. デプロイに必要なミドルウェアをインストールする 4. デプロイ作業を実⾏する
aws cli ・⾔わずとしれたAWSのサービスをコマンド実⾏形式で管理できる便利な奴 ・AWSのコンソールで出来ない作業も出来たりする便利で凄い奴 ・特定のプログラミング知識というよりAWSの知識の⽅が必要にはなる
技術の組み合わせ解説 「Lightsail container」, 「terraform」, 「github actions」, 「aws cli」
terraform + github actions ・terraformにLightsail containerを構成するための記述を作成する ・github actionsでawsへの通信を確⽴する ・githubからterraformを実⾏する ①
② ③
aws cli + github actions ・github actionsでawsへの通信を確⽴する ・github actionsでdockerのイメージをデプロイする ・aws
cliでデプロイしたイメージをLightsail containerにpushする ・aws cliでdeploy⽤のjsonを⽤いたデプロイを実⾏する ① ② ③ ④
作業詳細 Todayʼs もくもく task!!
terraformにLightsail containerを構成するための記述を作成する ・「terraform lightsail container」でgoogle検索︕︕ ・「Terraform Registroy」に辿り着いたら左下のリスト確認 ・リストから「awslightsail_container_service」を選択 ・選んだら画⾯の英語をreading!!! ※全部読まなくても下記を読んで理解できればオッケー
・Example Usage ・Argument Reference ・読んだらterraformのファイルを作成してコードを書こう︕︕
terraformにLightsail containerを構成するための記述を作成する ・先ほどの記述でLightsail containerを作る準備はオッケー ・次は…Lightsailを使うためのおまじないを書く ・左下のリストから「awslightsail provider」を選ぶ ・選んだら画⾯の英語をreading!!! ※全部読まなくても下記を読んで理解できればオッケー ・Example
Usage
github actionsでawsへの通信を確⽴する ・terraformの記述が完了したらgithub actionsで実⾏しよう ・github actionsでawsに対して実⾏する際、下記どちらかで実⾏できる 1. 「access-key」や「secret-access-key」を使ってアクセス(よくある奴) 2. OIDC(OpenID
Connect)を使う(何かカッコいい奴) ・何かカッコいい奴でやりたいよね︕︕︕︕︕ → という事で今回はOIDCを利⽤します。
github actionsでawsへの通信を確⽴する(OIDC) ・AWS側で下記の設定を⾏う(ググれば⼤体同じ感じの出てくるZE︕) 1. IAMからIDプロバイダを選んでOpenID Connect⽤のプロバイダを追加する → URLには「https://token.actions.githubusercontent.com」を⼊れる → 対象者には「sts.amazonaws.com」を⼊れる
2. 適当にgithub actionsで利⽤するためのロールを作成する 3. 作成したロールにIDプロバイダをアタッチする → 信頼されたエンティティを編集する 4. Lightsail containerを作成出来るような許可ポリシーを与えとく(ここはググっても出てこないかも) → CreateContainerServiceを筆頭に権限ポチポチと有効にしておく
github actionsでawsへの通信を確⽴する ・github側で下記の設定を⾏う(ググれば⼤体同じ感じの出てくる気もする) 1. github actionsを実⾏するためにWorkflowファイルを作成する → 「.github/workflows/xxxxxx.yml」に作ってpushすれば出てくる 2. onの記述をworkflow_dispatchにして⼿動実⾏出来るようにしておこう
3. permissionsの記述にid-token:writeとかcontents:readとか追加しとこう 4. AWS OIDC⽤の記述を忘れずに追加する → 「uses: aws-actions/configure-aws-credentials@v1」的な奴とか → 「role-to-assume」でAWS側で作成したアカウントのIDとRole指定したりとか 5. terraformのinit、planまで書いて動作確認をする(applyやると作られちゃうからね︕︕)
本⽇のお題① ・ ここまでの作業で上⼿く⾏くと下記が完成する
本⽇のお題② ・ 次はこっち(詳細は次のページに再掲)
aws cli + github actions(再掲) ・github actionsでawsへの通信を確⽴する ・github actionsでdockerのイメージをデプロイする ・aws
cliでデプロイしたイメージをLightsail containerにpushする ・aws cliでdeploy⽤のjsonを⽤いたデプロイを実⾏する ① ② ③ ④
github actionsでawsへの通信を確⽴する ・さっきやった(OIDC使う)ので詳細割愛︕︕︕ ①
github actionsでdockerのイメージをデプロイする ・Workflowファイルの中でdocker-compose buildするだけ(簡単) ②
aws cliでデプロイしたイメージをLightsail containerにpushする ・「lightsail container push」あたりでググって公式の記述を探しに⾏こう。↓こんな奴 ・「push-container-image」のコマンドがあるので利⽤する ③
aws cliでdeploy⽤のjsonを⽤いたデプロイを実⾏する ・「lightsail container deploy」あたりでググって公式の記述を探しに⾏こう。↓こんな奴 ・右の図にあるコマンド(※)を利⽤する ※create-container-service-deployment ④
aws cliでdeploy⽤のjsonを⽤いたデプロイを実⾏する(json) ・create-container-service-deploymentを利⽤する際、jsonを使うと⼀度に処理できて楽 → コンテナ名、image、enviroment、ports辺りをサービスに合わせて設定 → Lightsail containerの設定としてpublicEndpoint関連の設定も追加する ④
本⽇のお題② ・ここまでの作業で上⼿く⾏くと下記が完成する(やったね︕︕)
質疑応答&作業開始 Letʼs もくもく time!!
作業成果物(コード) ・githubに今回の成果物を公開しています。 https://github.com/taniuchi-carecon/deploy_lightsail_container
終わりに おつかれさまでした
俺たちの戦いはこれからだ…(次回作にご期待ください) ・Lightsail containerに対し、terraform+ github actionsというインフラ構築でした ・ここから更にドメインの細かい設定やったり、node増やしてみたり⾊々できる(はず)…︕ ・もくもく会としては今⽇はこれで終了ですが、これをキッカケに⾊々挑戦頂ければ幸いです︕︕
最後に…(成果物) これ作った→