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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
290
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
590
AWS Network Firewall Proxyを触ってみた
nagisa53
1
230
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
560
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.5k
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
180
レガシー共有バッチ基盤への挑戦 - SREドリブンなリアーキテクチャリングの取り組み
tatsukoni
0
220
会社紹介資料 / Sansan Company Profile
sansan33
PRO
15
400k
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
260
Azure Durable Functions で作った NL2SQL Agent の精度向上に取り組んだ話/jat08
thara0402
0
190
Bill One 開発エンジニア 紹介資料
sansan33
PRO
5
17k
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
WCS-LA-2024
lcolladotor
0
450
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
170
Designing for Performance
lara
610
70k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
640
My Coaching Mixtape
mlcsv
0
48
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.9k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
53
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
120
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増やしてみたり⾊々できる(はず)…︕ ・もくもく会としては今⽇はこれで終了ですが、これをキッカケに⾊々挑戦頂ければ幸いです︕︕
最後に…(成果物) これ作った→