翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
複数のAWSアカウントとAWSリージョンで AWS Service Catalog 製品を管理する
作成者: Ram Kandaswamy (AWS)
概要
Amazon Web Services (AWS) Service Catalog は、企業向けの Infrastructure as Code (IaC) テンプレートのガバナンスと配布を簡素化し、高速化します。AWS CloudFormation テンプレートを使用して、製品に必要なAWSリソース (スタック) のコレクションを定義します。 は、1 回のオペレーションで複数のアカウントとAWSリージョンにまたがるスタックを作成、更新、または削除できるようにすることで、この機能AWS CloudFormation StackSets を拡張します。
AWS Service Catalog 管理者は、開発者が作成した CloudFormation テンプレートを使用して製品を作成し、公開します。その後、これらの製品はポートフォリオに関連付けられ、ガバナンスに制約が適用されます。他の AWSアカウントまたは組織単位 (OUs) のユーザーが製品を利用できるようにするには、通常、ポートフォリオを共有します。このパターンは、 に基づく AWS Service Catalog 製品を管理するための代替アプローチを示していますAWS CloudFormation StackSets。ポートフォリオを共有する代わりに、スタックセット制約を使用して、製品をデプロイして使用できるAWSリージョンとアカウントを設定します。このアプローチを使用すると、AWSService Catalog 製品を複数のアカウント、、OUsAWSリージョンにプロビジョニングし、ガバナンス要件を満たしながら一元管理できます。
この方法の利点:
製品はプライマリアカウントからプロビジョニング、管理され、他のアカウントと共有されることはありません。
この方法では、特定の製品に基づいてプロビジョニングされたすべての製品 (スタック) を統合して表示できます。
AWS Service Management Connector は 1 つのアカウントのみを対象とするため、設定が簡単になります。
AWS Service Catalog から製品をクエリして使用する方が簡単です。
前提条件と制限
前提条件
AWS CloudFormation IaC とバージョニング用の テンプレート
AWS リソースのプロビジョニングと管理のためのマルチアカウント設定と AWS Service Catalog
機能制限
このアプローチでは を使用しAWS CloudFormation StackSets、 の制限 StackSets が適用されます。
StackSets は、マクロによる CloudFormation テンプレートのデプロイをサポートしていません。マクロを使用してテンプレートを前処理している場合、 StackSetsベースのデプロイは使用できません。
StackSets では、スタックセットからスタックの関連付けを解除できるため、特定のスタックをターゲットにして問題を解決できます。ただし、関連付けを解除したスタックをスタックセットに再関連付けることはできません。
AWS Service Catalog は StackSet 名前を自動生成します。カスタマイズは現在サポートされていません。
アーキテクチャ
ターゲット アーキテクチャ

ユーザーは、 AWSリソースを JSONまたは YAML形式でプロビジョニングするための AWS CloudFormation テンプレートを作成します。
CloudFormation テンプレートは AWS Service Catalog に製品を作成し、ポートフォリオに追加します。
ユーザーは、ターゲットアカウントに CloudFormation スタックを作成するプロビジョニング済み製品を作成します。
各スタックは、 CloudFormation テンプレートで指定されたリソースをプロビジョニングします。
ツール
AWS サービス
AWS CloudFormation を使用すると、AWSリソースをセットアップし、迅速かつ一貫してプロビジョニングし、AWSアカウントとリージョン全体のライフサイクルを通じてリソースを管理できます。
AWS コマンドラインインターフェイス (AWS CLI) は、コマンドラインシェルのコマンドを使用して AWSサービスとやり取りするのに役立つオープンソースツールです。
AWS Identity and Access Management (IAM) は、誰を認証し、誰に使用を許可するかを制御することで、 AWSリソースへのアクセスを安全に管理するのに役立ちます。
AWS Service Catalog は、 で承認された IT サービスのカタログを一元管理するのに役立ちますAWS。エンドユーザーは、組織によって設定された制約に従って、必要な承認済みの IT サービスのみをすばやくデプロイできます。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
ポートフォリオを作成します。 | ポートフォリオは、特定の基準に基づき、グループ化された 1 つ以上の製品を含むコンテナです。ポートフォリオを製品に使用すると、製品セット全体に共通の制約を適用しやすくなります。 ポートフォリオを作成するには、AWSService Catalog ドキュメントの指示に従います。を使用している場合はAWSCLI、コマンドの例を次に示します。
詳細については、 AWSCLIドキュメント | AWS Service Catalog、 IAM |
CloudFormation テンプレートを作成します。 | リソースを記述する CloudFormation テンプレートを作成します。必要に応じて、リソースプロパティをパラメータ化する必要があります | AWS CloudFormation, JSON/YAML |
バージョン情報を使用して製品を作成します。 | CloudFormation テンプレートは、AWSService Catalog で公開すると製品になります。オプションのバージョン詳細パラメータ (バージョンタイトルや説明など) に値を指定することは、後で製品について問い合わせるときに役立ちます。 製品を作成するには、AWSService Catalog ドキュメントの指示に従います。を使用している場合AWSCLI、コマンドの例は次のとおりです。
| AWS Service Catalog |
制約を適用します。 | スタックセットの制約をポートフォリオに適用して、複数のAWSアカウント、リージョン、アクセス許可などの製品デプロイオプションを設定します。手順については、AWSService Catalog のドキュメントを参照してください。 | AWS Service Catalog |
アクセス許可を追加します。 | ユーザーがポートフォリオ内の製品を起動できるようにアクセス権限を付与します。コンソールの手順については、AWSService Catalog のドキュメントを参照してください。を使用している場合はAWSCLI、コマンドの例を次に示します。
詳細については、 AWSCLIドキュメント | AWS Service Catalog、 IAM |
製品をプロビジョニングします。 | プロビジョニングされた製品は、製品のリソースインスタンスです。 CloudFormation テンプレートに基づいて製品をプロビジョニングすると、 CloudFormation スタックとその基盤となるリソースが起動します。 スタックセットの制約に基づいて、該当するAWSリージョンとアカウントをターゲットにして製品をプロビジョニングします。ではAWSCLI、コマンドの例を次に示します。
詳細については、 AWSCLIドキュメント | AWS Service Catalog |
関連リソース
リファレンス
チュートリアルと動画
追加情報
create-product
コマンドを使用すると、 cli-input-json
パラメータは、製品所有者、サポート E メール、 CloudFormation テンプレートの詳細などの情報を指定するファイルを指します。以下にそのようなファイルの例を示します。
{ "Owner": "Test admin", "SupportDescription": "Testing", "Name": "SNS", "SupportEmail": "example@example.com", "ProductType": "CLOUD_FORMATION_TEMPLATE", "AcceptLanguage": "en", "ProvisioningArtifactParameters": { "Description": "SNS product", "DisableTemplateValidation": true, "Info": { "LoadTemplateFromURL": "<url>" }, "Name": "version 1" }