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
310
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
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
360
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
380
Agile Leadership Summit Keynote 2026
m_seki
1
620
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.4k
変化するコーディングエージェントとの現実的な付き合い方 〜Cursor安定択説と、ツールに依存しない「資産」〜
empitsu
4
1.4k
AI駆動開発を事業のコアに置く
tasukuonizawa
1
200
CDKで始めるTypeScript開発のススメ
tsukuboshi
1
430
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
570
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.1k
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
290
プロダクト成長を支える開発基盤とスケールに伴う課題
yuu26
4
1.3k
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
240
Featured
See All Featured
Writing Fast Ruby
sferik
630
62k
Odyssey Design
rkendrick25
PRO
1
500
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
130
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
720
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
300
Code Review Best Practice
trishagee
74
20k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
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増やしてみたり⾊々できる(はず)…︕ ・もくもく会としては今⽇はこれで終了ですが、これをキッカケに⾊々挑戦頂ければ幸いです︕︕
最後に…(成果物) これ作った→