Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Lightsail container + terraform + github actions
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
h-taniuchi
November 28, 2022
Technology
330
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Lightsail container + terraform + github actions
AWSのLightsail containerをterraformとgithub actions(とaws cli)を使って作成した時の流れをまとめた説明資料です。
h-taniuchi
November 28, 2022
Other Decks in Technology
See All in Technology
【技術的負債conf】事業成長に伴う技術的負債の説明責任とAIによるモニタリング、認知的負債について
i35_267
4
2.2k
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
3
2.7k
Hermes Agentで、AIが調べて記事を書くブログを作った話
blueb
0
110
Amazon Bedrock Agents ClassicからAmazon Bedrock AgentCoreへ移行した際、ガードレール設定が2箇所に割れた話
matsunobu
0
100
品質と信頼性を地続きにする
grimoh
2
1k
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
16
120k
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
5
740
なぜ「決定性」が 決定的に重要なのか? Durable Execution 基盤の数理的理解 #serverlessjp / ServerlessDays Tokyo 2026
ytaka23
4
1.3k
作って終わりじゃないサーバーレス 〜9年運用する大規模EC物流API基盤の設計・運用のリアル〜
zozotech
PRO
0
520
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
5
1.1k
時うどん〜Socket.getifaddrsで学ぶネットワーク編 / Tokiudon: The Socket.getifaddrs Edition
coe401_
4
270
あけおめLINE 傾向とその対策
nasa9084
0
330
Featured
See All Featured
Making Projects Easy
brettharned
120
6.8k
How STYLIGHT went responsive
nonsquared
100
6.3k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Believing is Seeing
oripsolob
1
220
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
530
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
880
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Discover your Explorer Soul
emna__ayadi
2
1.3k
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増やしてみたり⾊々できる(はず)…︕ ・もくもく会としては今⽇はこれで終了ですが、これをキッカケに⾊々挑戦頂ければ幸いです︕︕
最後に…(成果物) これ作った→