20241015 Toranomon Tech Hub#1 Service Catalog使ってみた
by
h-ashisan
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
2024/10/15 Toranomon Tech Hub#1 クラスメソッド株式会社 芦沢広昭 AWS Control Tower歴2年で初めて Service Catalogと向き合ってみた
Slide 2
Slide 2 text
⾃⼰紹介 2 芦沢広昭 (ASHIZAWA Hiroaki) / @ashi_ssan ● 所属 ○ クラスメソッド株式会社 AWS事業本部コンサルティング部 ● ロール ○ ソリューションアーキテクト ● コミュニティ活動 ○ Hibiya Tech 運営 ○ Toranomon Tech Hub 運営 ● その他 ○ 2024 Japan AWS Top Engineers (Security) ○ 2024 Japan AWS All Certifications Engineers
Slide 3
Slide 3 text
AWS re:Invent 2024に⾏く⼈! 現地で仲良くしてください!!!!!! 今⽇参加‧運営しているモチベーション 3
Slide 4
Slide 4 text
アジェンダ 4 ● ⾃⼰紹介 ● このLTの⽬的 ● AWS Control TowerとAWS Service Catalogの概要 ● Control Tower周りのこれまでの経験 ● 向き合うことになったきっかけ ● 使い始めてわかったこと (Good / Bad) ● まとめ
Slide 5
Slide 5 text
このLTの⽬的 5 ● 伝えたいこと ○ AWS Service CatalogやAWS Control Towerの概要 ○ AWS Service Catalogによるマルチアカウントへのデプロイの選択肢 ○ 現在検討中のアーキテクチャの設計、ここまでに⾄るまでの考え‧背景 ● 私が持ち帰りたいこと ○ 現在検討中のアーキテクチャに対するフィードバック、ご意⾒
Slide 6
Slide 6 text
AWS Control Towerとは 6 簡単に⾔うと... 複数のAWSアカウント(マルチアカウント)をベストプラクティスに基づいて 設定および管理してくれるサービス 参考:https://dev.classmethod.jp/articles/introduction-2024-aws-control-tower/
Slide 7
Slide 7 text
AWS Control Towerの主な機能 7 ● AWSのOrganizations、Service Catalog、IAM Identity Centerなど複数サー ビスを使ってランディングゾーンを構築する ● ダッシュボードからランディングゾーンの状態を監視する ● 組織からOUやアカウントのControl Towerへの登録状況を確認でき、OUや アカウントの作成/登録ができる ● 管理‧統制からの逸脱(ドリフト)をさせないためにOUにコントロールを 適⽤する ● Account Factoryで新しいAWSアカウントの作成と初期設定を⾏う 参考:https://dev.classmethod.jp/articles/introduction-2024-aws-control-tower/
Slide 8
Slide 8 text
AWS Control Towerの主な機能 8 ● AWSのOrganizations、Service Catalog、IAM Identity Centerなど複数サー ビスを使ってランディングゾーンを構築する ● ダッシュボードからランディングゾーンの状態を監視する ● 組織からOUやアカウントのControl Towerへの登録状況を確認でき、OUや アカウントの作成/登録ができる ● 管理‧統制からの逸脱(ドリフト)をさせないためにOUにコントロールを 適⽤する ● Account Factoryで新しいAWSアカウントの作成と初期設定を⾏う 参考:https://dev.classmethod.jp/articles/introduction-2024-aws-control-tower/
Slide 9
Slide 9 text
AWS Service Catalogとは 9 簡単に⾔うと... AWS で承認された IT サービスのカタログを作成および管理できるサービス 参考: https://dev.classmethod.jp/articles/introduction-2024-aws-service-catalog/
Slide 10
Slide 10 text
AWS Service Catalogの⽤語 10 ● 製品 ○ AWSリソースをデプロイするテンプレートを登録 ○ 例 ■ CloudFormation ■ Terraform (HCP版, Community版) ● 制約 ○ 設定した製品単位に適⽤されるルール ○ 例 ■ どのIAMロール権限を利⽤するか ■ 対象アカウント制限、リージョン制限 ● ポートフォリオ ○ 製品の集合(制約の設定情報を含む) 参考: https://dev.classmethod.jp/articles/introduction-2024-aws-service-catalog/ https://dev.classmethod.jp/articles/summary-of-the-constraints-available-in-the-service-catalog
Slide 11
Slide 11 text
Control Tower と Service Catalogの関係性 11 Account Factory (アカウントの払い出し + 初期設定) ● AWSアカウントを払い出す際にService Catalogの製品が起動される → 内部的にService Catalog が利⽤されている
Slide 12
Slide 12 text
これまでの私の経験 (Control Tower関連) 12 ● やっていたこと:約2年半程度 ○ Control Towerの初期セットアップまでの要件調整‧プリセールス ○ Control Tower/Organizationsを使ったガバナンスの設計‧実装(SCPなどコントロール) ○ その他セキュリティサービスとの連携(Security Hub、GuardDuty、Detective、 CoudTrail) ○ ランディングゾーンアップデートのキャッチアップ ● やっていなかったこと ○ アカウント払い出しの⾃動化 (Account Factory) ○ 複数アカウントへのリソースのプロビジョニング (Service Catalog / StackSets) ○ など → これまで Service Catalog と向き合ったことがない (と思っていた)
Slide 13
Slide 13 text
ここ以降、説明する事項は すべて検討‧検証中のもので どうあるべきかは結論が出ていません (まだ) 直近の出来事につき 考慮不⾜な点が含まれます ちょっとした注意 13 ‧こうしたらいいんじゃね? ‧こうやったらうまく⾏ったよ! のようなフィードバック⼤歓迎です
Slide 14
Slide 14 text
向き合うことになったきっかけ 14 社内ツールの開発において、以下のアーキテクチャを構成していた(検証中)
Slide 15
Slide 15 text
向き合うことになったきっかけ 15 今後のスケールに伴い、アカウント構成‧リソース配置⽅針が変更に
Slide 16
Slide 16 text
向き合うことになったきっかけ 16 既存のデプロイ戦略を背景に「リポジトリ:中央:⼦ = 1:1:N」の構成を検討
Slide 17
Slide 17 text
(参考) 「リポジトリ:中央:メンバー = 1:1:N」構成にした理由 → 本番/開発環境のGitHubブランチ戦略が背景 向き合うことになったきっかけ 17
Slide 18
Slide 18 text
向き合うことになったきっかけ 18 「何か」の箇所を埋められるソリューションを探すことになった
Slide 19
Slide 19 text
アカウント構成‧リソース配置⽅針が達成できれば特にない 個⼈的には「コスト低 + 管理リソース少」だといいな Q. 要件はあるの? 19
Slide 20
Slide 20 text
「何か」を埋めるソリューションの候補 20 ● AFT (Account Factory for Terraform) の利⽤ ● CloudFormation StackSetsの利⽤ ● Service Catalog (Terraform) の利⽤
Slide 21
Slide 21 text
「何か」を埋めるソリューションの候補 21 ● AFT (Account Factory for Terraform) の利⽤ ● CloudFormation StackSetsの利⽤ ● Service Catalog (Terraform) の利⽤ → ⼀旦、この⽅法で検討していく⽅針に決まった
Slide 22
Slide 22 text
検討中の構成案 22
Slide 23
Slide 23 text
Service Catalog(Terraform) を 「⼀旦」採⽤した理由 23 ● Service Catalogの利⽤ ○ Gitリポジトリ:中央アカウント:⼦アカウント= 1:1:n の構成が取れそう ■ 中央アカウントに⼦アカウントにリソース展開するための設定を構成できそう ○ Terraform Reference Engine を利⽤することで コミュニティ版Terraformが利⽤可能 ■ どんなものかはあまり理解していないが、いけそうに思った ■ 参考: https://dev.classmethod.jp/articles/provisioning-product-defined-by-terraform/ ○ すべてTerraformで構成している元のコード構成で完結できる ■ これが1番⼤きかった ● 「⼀旦」としているのは、触ってみないとわからないと思ったため ○ 後で変更も可能だし、抜本的なアーキテクチャの⾒直しも相談できる状態
Slide 24
Slide 24 text
検討した他の選択肢 と 採⽤しなかった理由 24 ● AFT (Account Factory for Terraform)の利⽤ ○ 要件的にアカウント払い出し機能が不要なため、過剰に感じた ○ 機能を利⽤するために必要なAWSリソースの維持コストが気になった 参考: https://dev.classmethod.jp/articles/arc hitecture-diagram-for-aft/
Slide 25
Slide 25 text
検討した他の選択肢 と 採⽤しなかった理由 25 ● CloudFormation StackSetsの利⽤ ○ Gitリポジトリ:中央アカウント:⼦アカウント= 1:1:n の構成が取れそう ■ 中央アカウントに⼦アカウントにリソース展開 するための設定を構成できそう ○ 必要な準備は各アカウントへのIAMロールの作成く らいで簡単そう ○ しかし、IaCコードをすべてTerraformで管理してお り、デプロイのために擬似的にCFnテンプレートに 変換するのはいけていないと思った jsonencodeで CFnテンプレートを定義
Slide 26
Slide 26 text
ここまでやったこと 26 ● Terraform Reference Engineのプロビジョニング ● 製品の⼦アカウントへのデプロイ (⼿動) ○ アプデ時のブログの内容と同等 ■ https://dev.classmethod.jp/articles/provisioning-pr oduct-defined-by-terraform/
Slide 27
Slide 27 text
使ってみてわかったこと (Good) 27 ● Terraform Reference Engineの プロビジョニングは簡単 ○ 基本はブログの⼿順に従って設定するだけ ■ 事前定義されたSAMを実⾏してリソースを デプロイしている ○ 製品登録時に製品タイプを「外部」に変える必要あり ■ 「Terraform のオープンソース」は廃⽌になった
Slide 28
Slide 28 text
使ってみてわかったこと (Bad) 28 ● Terraform Reference Engineのためのリソースの維持‧管理が必要 ○ VPC, EC2(x1), NAT Gateway(x2), Lambda, S3など ○ ⼀度きりの設定なのか...?と思いきや、削除したら動かなくなった(想像はできたが) ■ 製品起動時にAPIエラーとなる
Slide 29
Slide 29 text
今後検討‧検証したいこと 29 ● Service Catalog(Terraform)を使った追加の検証 ○ 製品の作成‧⼦アカウント展開まで含めた⾃動化 ○ コスト削減策の検討 ● 他の選択肢の検討 ○ CloudFormation StackSetsの利⽤:本当にいけてなかったのか...??? ○ そのほかの選択肢の模索
Slide 30
Slide 30 text
まとめ 30 ● AWS Service CatalogはAWS で承認された IT サービスのカタログを作成お よび管理できるサービス ● Service CatalogでTerraformを利⽤する場合Terraform Reference Engine のプロビジョニングが必要 ● 要件を満たす最⾼のアーキテクチャを模索していくぞ!