翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
複数のAWSアカウントとAWSリージョンで AWS Service Catalog 製品を管理する
作成者: Ram Kandaswamy (AWS)
環境:本稼働 | テクノロジー: 管理とガバナンス、インフラストラクチャ、モダナイゼーション | ワークロード:その他すべてのワークロード |
AWS サービス: AWS Service Catalog AWS CloudFormation |
[概要]
Amazon Web Services (AWS) Service Catalog は、企業向けのコードとしてのインフラストラクチャ (IaC) テンプレートのガバナンスと分散を簡素化し、高速化します。AWS CloudFormation テンプレートを使用して、製品に必要なAWSリソース (スタック) のコレクションを定義します。AWS CloudFormation StackSets は、単一のオペレーションで複数のアカウントとAWSリージョンにまたがるスタックを作成、更新、または削除できるようにすることで、この機能を拡張します。
AWS Service Catalog 管理者は、デベロッパーによって作成された CloudFormation テンプレートを使用して製品を作成し、公開します。その後、これらの製品はポートフォリオに関連付けられ、ガバナンスに制約が適用されます。他のAWSアカウントまたは組織単位 (OUs) のユーザーが製品を利用できるようにするには、通常、ポートフォリオをユーザーと共有します。このパターンは、 に基づく AWS Service Catalog 製品オファリングを管理するための代替アプローチについて説明しますAWS CloudFormation StackSets。ポートフォリオを共有する代わりに、スタックセットの制約を使用して、製品をデプロイして使用できるAWSリージョンとアカウントを設定します。このアプローチを使用すると、AWSサービスカタログ製品を複数のアカウント、、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 名前を自動生成します。カスタマイズは現在サポートされていません。
アーキテクチャ
ターゲット アーキテクチャ
ユーザーは、 JSONまたは YAML形式でAWSリソースをプロビジョニングするための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、 コマンドの例を次に示します。
詳細については、AWS「 CLIドキュメント | AWS Service Catalog、 IAM |
CloudFormation テンプレートを作成します。 | リソースを記述する CloudFormation テンプレートを作成します。必要に応じて、リソースプロパティをパラメータ化する必要があります | AWS CloudFormation, JSON/YAML |
バージョン情報を使用して製品を作成します。 | CloudFormation テンプレートは、AWSService Catalog で発行すると製品になります。オプションのバージョン詳細パラメータ (バージョンタイトルや説明など) に値を指定することは、後で製品について問い合わせるときに役立ちます。 製品を作成するには、AWSService Catalog ドキュメント の手順に従ってください。を使用している場合AWSCLI、コマンドの例は次のとおりです。
| AWS Service Catalog |
制約を適用します。 | スタックセットの制約をポートフォリオに適用して、複数のAWSアカウント、リージョン、アクセス許可などの製品デプロイオプションを設定します。手順については、AWS「Service Catalog ドキュメント」を参照してください。 | AWS Service Catalog |
アクセス許可を追加します。 | ユーザーがポートフォリオ内の製品を起動できるようにアクセス権限を付与します。コンソールの手順については、AWS「Service Catalog ドキュメント」を参照してください。を使用している場合はAWSCLI、 コマンドの例を次に示します。
詳細については、AWS「 CLIドキュメント | AWS Service Catalog、 IAM |
製品をプロビジョニングします。 | プロビジョニングされた製品は、製品のリソースインスタンスです。 CloudFormation テンプレートに基づいて製品をプロビジョニングすると、 CloudFormation スタックとその基盤となるリソースが起動します。 スタックセットの制約に基づいて、該当するAWSリージョンとアカウントをターゲットにして製品をプロビジョニングします。ではAWSCLI、 コマンドの例を次に示します。
詳細については、AWS「 CLIドキュメント | 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" }