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
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.3k
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
390
Bill One 開発エンジニア 紹介資料
sansan33
PRO
5
17k
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
250
Amazon Bedrock Knowledge Basesチャンキング解説!
aoinoguchi
0
140
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
270
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
660
小さく始めるBCP ― 多プロダクト環境で始める最初の一歩
kekke_n
1
420
レガシー共有バッチ基盤への挑戦 - SREドリブンなリアーキテクチャリングの取り組み
tatsukoni
0
220
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
770
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
120
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
410
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.5k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
50k
Abbi's Birthday
coloredviolet
1
4.7k
The Cult of Friendly URLs
andyhume
79
6.8k
4 Signs Your Business is Dying
shpigford
187
22k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
340
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
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増やしてみたり⾊々できる(はず)…︕ ・もくもく会としては今⽇はこれで終了ですが、これをキッカケに⾊々挑戦頂ければ幸いです︕︕
最後に…(成果物) これ作った→