

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 複数の AWS アカウントと AWS リージョンで AWS Service Catalog 製品を管理
<a name="manage-aws-service-catalog-products-in-multiple-aws-accounts-and-aws-regions"></a>

*Amazon Web Services、Ram Kandaswamy*

## 概要
<a name="manage-aws-service-catalog-products-in-multiple-aws-accounts-and-aws-regions-summary"></a>

Amazon Web Services (AWS) Service Catalog は、企業向けの Infrastructure as Code (IaC) テンプレートのガバナンスと配布を簡単かつ迅速にします。AWS CloudFormation テンプレートで、製品に必要な AWS リソース (*スタック*) のコレクションを定義します。AWS CloudFormation StackSets は、複数のアカウントおよび AWS リージョンにまたがるスタックを単一の操作で作成、更新、削除できるようにすることで、スタックの機能を拡張します。

AWS Service Catalog の管理者は、開発者が作成した CloudFormation テンプレートで製品を作成し、公開します。その後、これらの製品はポートフォリオに関連付けられ、ガバナンスに制約が適用されます。他の AWS アカウントまたは組織単位 (OU) のユーザーが製品を利用できるようにするには、通常、彼らと「[ポートフォリオを共有](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/catalogs_portfolios_sharing.html)」します。このパターンは、AWS CloudFormation StackSets に基づく AWS Service Catalog 製品の提供を管理するための代替アプローチを示しています。ポートフォリオを共有する代わりに、スタックセット制約により、製品をデプロイして使用できる AWS リージョンとアカウントを設定します。このアプローチを使用すると、ガバナンス要件を満たしながら、AWS Service Catalog 製品を複数のアカウント、OU と AWS リージョンにプロビジョニングし、一元的に管理できます。 

この方法の利点:
+ 製品はプライマリアカウントからプロビジョニング、管理され、他のアカウントと共有されることはありません。
+ この方法では、特定の製品に基づいてプロビジョニングされたすべての製品 (スタック) を統合して表示できます。
+ AWS Service Management Connector での設定は、1 つのアカウントのみを対象としているため、より簡単です。
+ AWS Service Catalog の製品のクエリと使用が簡単になりました。

## 前提条件と制限
<a name="manage-aws-service-catalog-products-in-multiple-aws-accounts-and-aws-regions-prereqs"></a>

**前提条件**
+ IaC とバージョニング用の AWS CloudFormation テンプレート
+ AWS リソースのプロビジョニングと管理のためのマルチアカウント設定と AWS Service Catalog

**制限事項**
+ このアプローチでは AWS CloudFormation StackSets が使用され、StackSets 制限が適用されます。
  + StackSets は、マクロによる CloudFormation テンプレートのデプロイをサポートしません。マクロでテンプレートを前処理している場合、StackSets ベースのデプロイを使用することはできません。
  + StackSets では、スタックをスタックセットから切り離すことができるため、特定のスタックをターゲットにして問題を解決できます。ただし、関連付けを解除したスタックをスタックセットに再関連付けることはできません。
+ AWS Service Catalog は StackSet 名を自動的に生成します。カスタマイズは現在サポートされていません。

## アーキテクチャ
<a name="manage-aws-service-catalog-products-in-multiple-aws-accounts-and-aws-regions-architecture"></a>

**ターゲットアーキテクチャ**

![\[ユーザーは、AWS CloudFormation テンプレートと StackSets を使用して AWS Service Catalog 製品を管理します。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/16458fcd-861d-4ed4-8b91-47e19289a6bb/images/97d23325-b5c6-4ca9-8288-8dec1650c975.png)


1. ユーザーは、AWS リソースをプロビジョニングするための AWS CloudFormation テンプレートを JSON 形式または YAML 形式で作成します。

1. CloudFormation テンプレートは AWS Service Catalog に製品を作成し、ポートフォリオに追加します。

1. ユーザーは、ターゲットアカウントに CloudFormation スタックを作成するプロビジョニング済み製品を作成します。

1. 各スタックは、CloudFormationで指定されたリソースをプロビジョニングします。

## ツール
<a name="manage-aws-service-catalog-products-in-multiple-aws-accounts-and-aws-regions-tools"></a>

**AWS サービス**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) を使用すると、AWS リソースをセットアップし、迅速かつ一貫したプロビジョニングを行い、AWS アカウントとリージョン全体でライフサイクル全体にわたってリソースを管理できます。
+ 「[AWS コマンドラインインターフェイス (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)」は、オープンソースのツールであり、コマンドラインシェルのコマンドを使用して AWS サービスとやり取りすることができます。
+ 「[AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)」は、AWS リソースへのアクセスを安全に管理し、誰が認証され、使用する権限があるかを制御するのに役立ちます。
+ [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) では、AWS で承認された IT サービスのカタログを一元管理できます。エンドユーザーは、組織によって設定された制約に従って、必要な承認済みの IT サービスのみをすばやくデプロイできます。

## エピック
<a name="manage-aws-service-catalog-products-in-multiple-aws-accounts-and-aws-regions-epics"></a>

### アカウント間での製品のプロビジョニング
<a name="provision-products-across-accounts"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ポートフォリオを作成します。 | ポートフォリオは、特定の基準に基づき、グループ化された 1 つ以上の製品を含むコンテナです。ポートフォリオを製品に使用すると、製品セット全体に共通の制約を適用しやすくなります。ポートフォリオを作成するには、「[AWS Service Catalog ドキュメント](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/portfoliomgmt-create.html)」の手順に従ってください。AWS CLI を使用している場合は、コマンドの例を挙げます。<pre>aws servicecatalog create-portfolio --provider-name my-provider --display-name my-portfolio</pre>詳細については、「[AWS CLI ドキュメント](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/servicecatalog/create-portfolio.html)」を参照してください。 | AWS Service Catalog、IAM | 
| CloudFormation テンプレートを作成します。 | リソースを説明する CloudFormation テンプレートを作成します。必要に応じて、リソースプロパティをパラメータ化する必要があります | AWS CloudFormation JSON/YAML | 
| バージョン情報を使用して製品を作成します。 | CloudFormation テンプレートは、AWS Service Catalog に公開すると製品になります。オプションのバージョン詳細パラメータ (バージョンタイトルや説明など) に値を指定することは、後で製品について問い合わせるときに役立ちます。ポートフォリオを作成するには、「[AWS Service Catalog ドキュメント](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-cloudresource.html)」の手順に従ってください。AWS CLI を使用している場合は、コマンドの例：<pre>aws servicecatalog create-product --cli-input-json file://create-product-input.json</pre>`create-product-input.json` は製品のパラメータを渡すファイルはどこですか。ファイルの例については、「*追加情報*」セクションを参照してください。詳細については、「[AWS CLI ドキュメント](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/servicecatalog/create-product.html)」を参照してください。 | AWS Service Catalog | 
| 制約を適用します。 | スタックセットの制約をポートフォリオに適用し、複数の AWS アカウント、リージョン、権限などの製品デプロイオプションを設定します。手順については、「[AWS Service Catalog のドキュメント](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-stackset.html)」を参照してください。 | AWS Service Catalog | 
| アクセス許可を追加します。 | ユーザーがポートフォリオ内の製品を起動できるようにアクセス権限を付与します。コンソールの手順については、「[AWS Service Catalog のドキュメント](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/catalogs_portfolios_users.html)」を参照してください。AWS CLI を使用している場合は、コマンドの例を挙げます。<pre>aws servicecatalog associate-principal-with-portfolio \<br />    --portfolio-id port-2s6abcdefwdh4 \<br />    --principal-arn arn:aws:iam::444455556666:role/Admin \<br />    --principal-type IAM</pre>詳細については、「[AWS CLI ドキュメント](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/servicecatalog/associate-principal-with-portfolio.html)」を参照してください。 | AWS Service Catalog、IAM | 
| 製品をプロビジョニングします。 | プロビジョニングされた製品は、製品のリソースインスタンスです。例えば、CloudFormation テンプレートに基づいて製品をプロビジョニングすると、CloudFormation スタックとその基礎となるリソースが起動します。スタックセットの制約に基づき、該当する AWS リージョンとアカウントをターゲットにして製品をプロビジョニングします。AWS CLI でのコマンドの例は次のとおりです。<pre>aws servicecatalog provision-product \<br />    --product-id prod-abcdfz3syn2rg \<br />    --provisioning-artifact-id pa-abc347pcsccfm \<br />    --provisioned-product-name "mytestppname3"</pre>詳細については、「[AWS CLI ドキュメント](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/servicecatalog/provision-product.html)」を参照してください。 | AWS Service Catalog | 

## 関連リソース
<a name="manage-aws-service-catalog-products-in-multiple-aws-accounts-and-aws-regions-resources"></a>

**リファレンス**
+ 「[AWS Service Catalog の概要](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/what-is_concepts.html)」
+ 「[AWS CloudFormation StackSetsの使用](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/using-stacksets.html)」

**チュートリアルと動画**
+ 「[AWS re: Invent 2019: すべてを自動化する:オプションとベストプラクティス](https://www.youtube.com/watch?v=bGBVPIpQMYk)」(ビデオ)

## 追加情報
<a name="manage-aws-service-catalog-products-in-multiple-aws-accounts-and-aws-regions-additional"></a>

`create-product` コマンドを使用する場合、`cli-input-json` パラメータは製品所有者、サポートメール、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"
}
```