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
20241204_ビヨンド勉強会_44_AWS_Service_Catalogを利用したI...
Search
nezumisannn
December 04, 2024
Technology
0
270
20241204_ビヨンド勉強会_44_AWS_Service_Catalogを利用したIaCのテンプレート化とTerraformによるデプロイ.pdf
nezumisannn
December 04, 2024
Tweet
Share
More Decks by nezumisannn
See All by nezumisannn
20250930_Conohaウェビナー_生成AI_Terraform_ConoHa_VPSサーバー_セットアップ入門編
nezumisannn
1
11
20250723_Conohaウェビナー_高騰する海外クラウド費用を劇的カット_サーバーコスト最適化のポイント解説と成功事例のご紹介.pdf
nezumisannn
0
27
20240828_ビヨンド勉強会_42_EKS_on_FargateでWebサービスを公開するために覚えておきたいこと.pdf
nezumisannn
0
88
20240530_ビヨンド勉強会#41_ビヨンドのエンジニア新卒研修における取り組み
nezumisannn
0
120
20230511_AWSにおけるコンテナサービスの選択とIaC実装例.pdf
nezumisannn
0
1.2k
リーダーになって1年経過して_取り組んできたことと大事にしている考え方_の裏側_.pdf
nezumisannn
0
66
20211118_GKEにおける高負荷時のPodとWorker_Nodeの挙動について.pdf
nezumisannn
0
150
20211014_Alibaba_Cloud_Container_Service_for_KubernetesにおけるServerless_Kubernetesの概要とManaged_Kubernetesとの違い.pdf
nezumisannn
0
83
20211008_ApsaraDB_for_PolarDBとAWS_Auroraの機能比較.pdf
nezumisannn
1
140
Other Decks in Technology
See All in Technology
多様な事業ドメインのクリエイターへ 価値を届けるための営みについて
massyuu
0
110
「Verify with Wallet API」を アプリに導入するために
hinakko
1
230
[2025-09-30] Databricks Genie を利用した分析基盤とデータモデリングの IVRy の現在地
wxyzzz
0
470
BtoBプロダクト開発の深層
16bitidol
0
270
ユニットテストに対する考え方の変遷 / Everyone should watch his live coding
mdstoy
0
120
それでも私はContextに値を詰めたい | Go Conference 2025 / go conference 2025 fill context
budougumi0617
4
1.2k
PLaMo2シリーズのvLLM実装 / PFN LLM セミナー
pfn
PRO
2
970
LLMアプリケーション開発におけるセキュリティリスクと対策 / LLM Application Security
flatt_security
7
1.8k
生成AI_その前_に_マルチクラウド時代の信頼できるデータを支えるSnowflakeメタデータ活用術.pdf
cm_mikami
0
110
Shirankedo NOCで見えてきたeduroam/OpenRoaming運用ノウハウと課題 - BAKUCHIKU BANBAN #2
marokiki
0
130
"複雑なデータ処理 × 静的サイト" を両立させる、楽をするRails運用 / A low-effort Rails workflow that combines “Complex Data Processing × Static Sites”
hogelog
3
1.9k
OpenAI gpt-oss ファインチューニング入門
kmotohas
2
950
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
Context Engineering - Making Every Token Count
addyosmani
5
180
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
850
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Done Done
chrislema
185
16k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
4 Signs Your Business is Dying
shpigford
185
22k
GraphQLとの向き合い方2022年版
quramy
49
14k
Transcript
AWS Service Catalogを利用した IaCのテンプレート化と Terraformによるデプロイ ビヨンド勉強会 #44 【大阪】AWS構築・開発の技術勉強会【リアル開催】 2024/12/04 株式会社ビヨンド
寺岡 佑樹
resource “my_profile” “nezumisannn” { name = “Yuki.Teraoka” nickname = “ねずみさん家。”
company = “beyond Co., Ltd.” job = “Infra Engineer + HR” X = “@yktr_sre” favorite = [“Terraform”,”Packer”] } × ねずみさん家。のインフラエンジニア道場 自己紹介 Youtube Udemy
今日のゴール AWS Service Catalogを使って Terraformのコードを元に AWS上に リソースを構築する
Service Catalogとは
Service Catalogとは • 承認された AWSサービスのカタログを作成、管理することができるサービス • 公開されたカタログを用いて、 AWSの各種サービスに精通していない人でも簡 単にAWS上にインフラを構築できる •
カタログ = IaCのコード(テンプレート )
Service Catalogを利用する シチュエーション
Service Catalogを利用するシチュエーション • AWS(以外のクラウドもそうだが )のサービスを利用する場合、作りたいシステム の特徴や必要な機能に応じて、複数あるサービスの中から取捨選択して必要な ものだけを組み合わせる必要がある
全てのサービスの特徴や仕様に 全員が深く精通していくことは 現実的に厳しい
基盤チーム インフラ サービス 開発チーム ユーザー アプリケーション AWS + ① 基盤チームが必要な技術を集約してAWS上のインフラを設計・構築する
② サービス開発チームがAWS上にデプロイするアプリケーションを開発する ③ ユーザーが実際に利用する ① ② ③
基盤チーム インフラ サービス 開発チーム AWS ① 複数サービスの開発チームに構成や設定が統一されたインフラを提供したい ② 開発者自身が必要なインフラ構成を必要なときにデプロイしたい ①
②
基盤チーム サービス 開発チーム AWS ① 必要な設定が定義されたIaCのテンプレートを公開できる ② Service Catalog経由で基盤チームが公開したテンプレートを利用できる ①
② Service Catalog
実際に利用してみる
やること EC2インスタンスとそれに必要な VPCネットワークを構築する
やること • Terraform Reference Engineのプロビジョニング • Terraformのコード記述 • 製品の作成 •
ポートフォリオの作成 • ポートフォリオと製品の紐付け • 製品に制約を追加 • ポートフォリオにアクセス権限を付与 • 製品を起動 • 起動後確認
Service Catalogの構成要素 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ
起動制約 設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築
Terraform Reference Engineのプロビジョニング 基盤チー ム サービス 開発チーム Service Catalog tfファイル
ポートフォリオ 起動制約 設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築
Terraform Reference Engineのプロビジョニング • Service CatalogからTerraform Community Editionを利用するために必要な 環境を構築する必要がある •
AWS公式からGitHubのリポジトリで必要なファイル一式が提供されている ◦ https://github.com/aws-samples/service-catalog-engine-for-terraform-os
Terraform Reference Engineのプロビジョニング • 事前にいくつかのツールのインストールが必要 • 作業としてはリポジトリを cloneしてシェルスクリプトを実行するだけ • 裏側ではsam
deployでcfnのスタックが実行される Terraform実行用のEC2インスタンスやNATGateway含みVPCが作成されるので 維持費が若干お高めかもしれない・・・
Terraformのコード記述 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ 起動制約
設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築
Terraformのコード記述 • 必要なコードを書いていく (aws_vpc とか aws_instanceとか) ※コードは GitHubで公開します
製品の作成 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ 起動制約
設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築
製品の作成 • Service Catalog > 製品リスト > 製品を作成 > 製品の詳細
TRE経由でTerraform Community Edition を利用するため 外部 を選択 その他は任意の値で OK
製品の作成 • Service Catalog > 製品リスト > 製品を作成 > バージョンの詳細
tfファイル群を tar.gzで圧縮してアップロードす る(GitHub等の外部リポジトリと連携することも もちろん可能 ) > 製品の作成ボタンをクリック
ポートフォリオの作成 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ 起動制約
設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築
ポートフォリオの作成 • Service Catalog > ポートフォリオ > ポートフォリオの作成 任意の値を入力 >
作成ボタンをクリック
ポートフォリオと製品の紐付け 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ 起動制約
設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築
ポートフォリオと製品の紐付け • Service Catalog > ポートフォリオ > ポートフォリオを選択 > アクション
> ポート フォリオに製品を追加
ポートフォリオと製品の紐付け ① 一旦チェックを外す (後で設定する ) ②ボタンをクリック
製品に制約を追加 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ 起動制約
設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築
製品に制約を追加 • Service Catalogの信頼ポリシーを持った IAMロールを作成する (SCLaunch-か ら始まるロール名である必要がある ) • ロールに紐づけるポリシーは
Terraformで作成するリソース作成に必要なもの 権 限を持ったものを作成して紐づける
製品に制約を追加
製品に制約を追加 • ポートフォリオ > ポートフォリオを選択 > 制約タブ > 制約を作成 •
製品を選択、起動タイプは「起動」にしておく
製品に制約を追加 • 起動の制約 > IAMロールを選択 > IAMロールのプルダウンで出てきたものを選 択 > 作成ボタンをクリック
ポートフォリオにアクセス権限を付与 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ 起動制約
設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築
ポートフォリオにアクセス権限を付与 • ポートフォリオ > ポートフォリオを選択 > アクセスタブ > アクセス権の付与 Service
Catalogを利用して製品 を起動する IAMリソース(グループ or ロール or ユーザー)を指定 > アクセス権を付与ボタンをクリック
製品を起動 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ 起動制約
設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築
製品を起動 • プロビジョニング > 製品 • アクセス権限が付与されていれば製品が一覧に表示されているはず • 製品を選択 >
製品を起動 製品の名前を入力して製品バー ジョンを選択する
製品を起動 • Terraformのコード内で variableで変数を定義しておくと Service Catalogの画 面からパラメータとして値をセットできる > 製品を起動ボタンをクリック
起動後確認 • プロビジョニング > プロビジョニングされた製品 • Terraformで構築したリソースがリソースグループでまとめられている
起動後確認 • グループリソースとして構築されたリソースの一覧を確認できる
Service Catalogの構成要素(再掲) 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ
起動制約 設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築
まとめ • Service Catalogとは承認された AWSサービスのカタログを作成、管理すること ができるサービス • 利用すると必要な設定が定義された IaCのテンプレートを公開できる •
公開されたテンプレートを使って TerraformやAWSに精通していなくてもインフラ を構築できる • 気になる方は使ってみてください
終わり