

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

# カタログの管理
<a name="catalogs"></a>

AWS Service Catalog は、管理者コンソールからポートフォリオ、製品、制約を管理するためのインターフェイスを提供します。

**注記**  
このセクションのタスクを実行するには、 AWS Service Catalogの管理者権限が必要です。詳細については、「[での Identity and Access Management AWS Service Catalog](controlling_access.md)」を参照してください。

**Topics**
+ [ポートフォリオの管理](catalogs_portfolios.md)
+ [製品の管理](catalogs_products.md)
+ [AWS Service Catalog 制約の使用](constraints.md)
+ [AWS Service Catalog サービスアクション](using-service-actions.md)
+ [ポートフォリオへの AWS Marketplace 製品の追加](catalogs_marketplace-products.md)
+ [CloudFormation StackSets の使用](using-stacksets.md)
+ [予算の管理](catalogs_budgets.md)

# ポートフォリオの管理
<a name="catalogs_portfolios"></a>

ポートフォリオの作成、表示、および更新は、 AWS Service Catalog 管理者コンソールの [**ポートフォリオ**] ページで行います。

**Topics**
+ [ポートフォリオの作成、表示、削除](#portfoliomgmt-menu)
+ [ポートフォリオの詳細の表示](#portfoliomgmt-portdetails)
+ [ポートフォリオの作成と削除](portfoliomgmt-create.md)
+ [製品の追加](portfoliomgmt-products.md)
+ [制約の追加](portfoliomgmt-constraints.md)
+ [ユーザーへのアクセス権限の付与](catalogs_portfolios_users.md)
+ [ポートフォリオの共有](catalogs_portfolios_sharing_how-to-share.md)
+ [ポートフォリオの共有とインポート](catalogs_portfolios_sharing.md)

## ポートフォリオの作成、表示、削除
<a name="portfoliomgmt-menu"></a>

[**ポートフォリオ**] ページには、現在のリージョンで作成したポートフォリオのリストが表示されます。このページを使用して、新しいポートフォリオの作成、ポートフォリオの詳細の表示、またはアカウントからのポートフォリオの削除を行います。

**[**ポートフォリオ**] ページを表示するには**

1. Service Catalog コンソール ([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)) を開きます。

1. 必要に応じて、別のリージョンを選択します。

1. を初めて使用する場合は AWS Service Catalog、 AWS Service Catalog 開始ページが表示されます。[**Get started**] を選択してポートフォリオを作成します。最初のポートフォリオを作成する手順に従い、[**ポートフォリオ**] ページに進みます。

の使用中は AWS Service Catalog、いつでも**ポートフォリオ**ページに戻り、ナビゲーションバーで **Service Catalog** を選択し、ポートフォリオを選択します****。

## ポートフォリオの詳細の表示
<a name="portfoliomgmt-portdetails"></a>

 AWS Service Catalog 管理者コンソールで、**ポートフォリオの詳細**ページにポートフォリオの設定が一覧表示されます。このページを使用してポートフォリオの製品を管理し、製品へのアクセス権をユーザーに付与して、TagOptions と制約を適用します。

****[ポートフォリオの詳細]** ページを表示するには**

1. Service Catalog コンソール ([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)) を開きます。

1. 管理するポートフォリオを選択します。

# ポートフォリオの作成と削除
<a name="portfoliomgmt-create"></a>

[**ポートフォリオ**] ページを使用して、ポートフォリオを作成し、削除します。

**新しいポートフォリオを作成するには:**

1. 左側のナビゲーションメニューから [**ポートフォリオ**] を選択します。

1. [**ポートフォリオの作成**] を選択します。

1. [**ポートフォリオの作成**] ページで、必要情報を入力します。

1. **Create.** AWS Service Catalog creates を選択します。ポートフォリオを作成し、ポートフォリオの詳細を表示します。

**ポートフォリオを削除するには**
**注記**  
削除できるのはローカルポートフォリオのみです。インポートされた (共有) ポートフォリオは削除できますが、インポートされたポートフォリオは削除できません。

ポートフォリオを削除する前に、そのすべての製品、制約、グループ、ロール、ユーザー、共有、および TagOptions を削除する必要があります。そのためには、ポートフォリオを開いて [**ポートフォリオの詳細**] を表示します。次に、タブを選択して削除します。
**注記**  
エラーを回避するには、商品を削除する前にポートフォリオから制約を削除します。

1. 左側のナビゲーションメニューから [**ポートフォリオ**] を選択します。

1. 削除したいポートフォリオを選択します。

1. **[削除]** を選択します。削除できるのはローカルポートフォリオのみです。インポートされた (共有) ポートフォリオを削除しようとすると、**アクション**メニューは使用できません。

1. 確認ウィンドウで、[**Delete**] を選択します。

# 製品の追加
<a name="portfoliomgmt-products"></a>

 ポートフォリオに製品を追加するには、新しい製品を既存のポートフォリオに直接アップロードするか、カタログの既存の製品をポートフォリオに関連付けることができます。

**注記**  
 AWS Service Catalog 製品を作成するときは、 CloudFormation テンプレートまたは Terraform 設定ファイルをアップロードできます。 CloudFormation テンプレートは Amazon Simple Storage Service (Amazon S3) バケットに保存され、バケット名は***「cf-templates-***」で始まります。また、製品をプロビジョニングするときには、追加のバケットからオブジェクトを取得する権限も必要です。詳細については、「[製品の作成](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-cloudresource.html#productmgmt-cloudresource-troubleshooting)」を参照してください。

## 新しい製品の追加
<a name="portfoliomgmt-products-new"></a>

**ポートフォリオの詳細** ページから新しい製品を直接追加します。このページから製品を作成すると、 は現在選択されているポートフォリオ AWS Service Catalog に追加します。

**新しい製品を追加するには**

1.  [**ポートフォリオ**] ページに移動し、製品を追加するポートフォリオの名前を選択します。

1. **[ポートフォリオの詳細]** ページで、**[製品]** セクションを展開し、**[新しい製品のアップロード]** を選択します。

1. **[製品の詳細を入力]** に、以下のように入力します。
   + **[製品名]** – 製品の名前。
   + **[製品説明]** (オプション) — 製品説明。この説明は、正しい製品を選択するのに役立つように、製品リストに表示されます。
   + [**説明**] - 詳細な説明。この説明は、正しい製品を選択するのに役立つように、製品リストに表示されます。
   + **所有者またはディストリビューター** — 所有者の名前またはメールアドレス。ディストリビューターの連絡先情報は任意です。
   + [**ベンダー**] (オプション) - アプリケーションの発行元の名前。このフィールドを使用すると、製品リストを並べ替えて、製品を見つけやすくすることができます。

1. **[バージョンの詳細]** ページに、以下のように入力します。
   + **テンプレートの選択** – CloudFormation 製品の場合は、独自のテンプレートファイル、ローカルドライブの CloudFormation テンプレート、または Amazon S3 に保存されているテンプレートを指す URL、既存の CloudFormation スタック ARN テンプレート、または外部リポジトリに保存されているテンプレートファイルを選択します。

     Teraform 製品では、独自のテンプレートファイル、ローカルドライブからの tar.gz 設定ファイル、Amazon S3 に保存されたテンプレートを指す URL、または外部リポジトリに保存された tar.gz 設定ファイルを選択します。
   + **バージョン名** (オプション) – 製品バージョンの名前 (例: 「v1」、「v2beta」)。スペースは使用できません。
   + [**説明**] (オプション) - このバージョンと前のバージョンとの違いを含む、製品バージョンの説明。

1. [** Enter support details**] に、以下のように入力します。
   + **[メール連絡先]**​ (オプション) - 製品の問題を報告するためのメールアドレス。
   + **[サポートリンク]** (オプション) - ユーザーがサポート情報またはファイルチケットを見つけることができるサイトの URL。URL は `http://`、または `https://` で始まる必要があります。管理者は、サポート情報の正確性とアクセスを維持する責任があります。
   + **[サポートの説明]** (オプション) - ユーザーが **[メール連絡先]** および **[サポートリンク]** を使用する方法の説明。

1. **[製品の作成]** を選択します。

## 既存の製品の追加
<a name="portfoliomgmt-products-existing"></a>

**[ポートフォリオ]** リスト、**[ポートフォリオの詳細]** ページ、または **[製品リスト]** のページの 3 つの場所から既存の製品をポートフォリオに追加できます。

**既存の製品をポートフォリオに追加するには**

1. [**ポートフォリオ**] ページに移動します。

1. ポートフォリオを選択します。次に **[アクション]** - **[ポートフォリオに製品を追加]** を選択します。

1.  製品を選択し、[**製品をポートフォリオへ追加**] を選択します。

## ポートフォリオからの製品の削除
<a name="portfoliomgmt-products-remove"></a>

ユーザーが製品を使用しないようにする場合は、ポートフォリオからその製品を削除します。製品は、[**製品**] ページからカタログでまだ使用でき、他のポートフォリオに追加できます。ポートフォリオから複数の製品を一度に削除できます。

**ポートフォリオから製品を削除するには**

1. [**ポートフォリオ**] ページに移動し、製品を含むポートフォリオを選択します。**[ポートフォリオの詳細]** ページが開きます。

1. [**製品**] セクションを展開します。

1. 1 つ以上の製品を選択し、**[削除]** を選択します。

1. 選択内容を確認します。

# 制約の追加
<a name="portfoliomgmt-constraints"></a>

制約を追加して、ユーザーがどのように製品を使用するかを制御する必要があります。が AWS Service Catalog サポートする制約のタイプの詳細については、「」を参照してください[AWS Service Catalog 制約の使用](constraints.md)。

 製品に制約を追加するのは、ポートフォリオに配置された後です。

**製品に制約を追加するには**

1. Service Catalog コンソール ([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)) を開きます。

1. [**ポートフォリオ**] を選択し、ポートフォリオを選びます。

1. [ポートフォリオの詳細] ページで、**[制約の作成]** セクションを展開し、**[制約の追加]** を選択します。

1. [**製品**] で、制約事項を適用する製品を選択します。

1. [**制約タイプ**] で、次のいずれかのオプションを選択します。

   **起動** — AWS リソースのプロビジョニングに使用される製品に IAM ロールを割り当てることができます。詳細については、「[AWS Service Catalog 起動の制限](constraints-launch.md)」を参照してください。

   **[通知]** — 製品通知を Amazon SNS トピックにストリーミングできます。詳細については、「[AWS Service Catalog 通知の制限](constraints-notification.md)」を参照してください。

   **テンプレート** – エンドユーザーが製品を起動するときに利用できるオプションを制限できます。テンプレートは、1 つ以上のルールを含む JSON 形式のテキストファイルで構成されます。ルールは、製品で使用される CloudFormation テンプレートに追加されます。詳細については、「[テンプレート制約のルール](reference-template_constraint_rules.md)」を参照してください。

    **スタックセット** – CloudFormation StackSets を使用して、アカウントとリージョン間で製品のデプロイを設定できます。詳細については、「[AWS Service Catalog スタックセットの制限](constraints-stackset.md)」を参照してください。

   [**タグの更新**] - 製品がプロビジョニングされた後にタグを更新できます。詳細については、「[AWS Service Catalog タグ更新の制約](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-resourceupdate.html)」を参照してください。

1.  [**続行**] を選択し、必要な情報を入力します。

**制約を編集するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/catalog/](https://console.aws.amazon.com/catalog/) で AWS Service Catalog 管理者コンソールを開きます。

1. [**ポートフォリオ**] を選択し、ポートフォリオを選びます。

1. 「**ポートフォリオの詳細**」ページで、「**制約の作成**」セクションを展開し、編集する制約を選択します。

1. [**制約の編集**] を選択します。

1. 必要に応じて制約を編集し、**[保存]** を選択します。

# ユーザーへのアクセス権限の付与
<a name="catalogs_portfolios_users"></a>

グループまたはロールを通じてユーザーにポートフォリオへのアクセスを許可します。多くのユーザーにポートフォリオのアクセス権限を付与する最善の方法は、ユーザーを IAM グループに配置し、そのグループへのアクセス権限を付与することです。それにより、グループからユーザーを簡単に追加および削除して、ポートフォリオアクセスを管理することができます。詳細については、IAM ユーザーガイドの「[IAM ユーザーとグループ](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_WorkingWithGroupsAndUsers.html)」を参照してください。

ポートフォリオへのアクセスに加えて、ユーザーは AWS Service Catalog エンドユーザーコンソールにもアクセスできる必要があります。IAM でアクセス権限を適用することにより、コンソールへのアクセス権限を付与します。詳細については、「[での Identity and Access Management AWS Service Catalog](controlling_access.md)」を参照してください。

ポートフォリオとそのプリンシパルを他のアカウントと共有したい場合は、プリンシパル名 (グループ、ロール、ユーザー) をポートフォリオに関連付けることができます。プリンシパル名はポートフォリオと共有され、エンドユーザーにアクセス権を付与するために受信者アカウントで使用されます。

**ユーザーまたはグループにポートフォリオのアクセス権限を付与するには**

1. Service Catalog コンソール ([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)) を開きます。

1.  ナビゲーションペインから **[管理]** を選択し、**[ポートフォリオ]** を選択します。

1.  グループ、ロール、またはユーザーにアクセス権を付与するポートフォリオを選択します。**ポートフォリオの詳細**ページ AWS Service Catalog に移動します。

1.  **[ポートフォリオの詳細]** ページで、**[アクセス]** タブを選択します。

1.  **[ポートフォリオアクセス]** で、**[アクセス権の付与]** を選択します。

1.  **[タイプ]** で **[プリンシパル名]** を選択し、**[グループ/]**、**[ロール/]**、または **[ユーザー/]** タイプを選択します。最大 9 個のプリンシパル名まで追加できます。

1.  **[アクセス権の付与]** を選択すると、プリンシパルが現在のポートフォリオに関連付けられます。

**ポートフォリオへのアクセス権限を削除するには**

1. **[ポートフォリオの詳細]** ページで、グループ、ロール、ユーザー名を選択します。

1. **[アクセス権の削除]** を選択します。

# ポートフォリオの共有
<a name="catalogs_portfolios_sharing_how-to-share"></a>

別の AWS アカウントの AWS Service Catalog 管理者が製品をエンドユーザーに配信できるようにするには、account-to-account共有または を使用して AWS Service Catalog ポートフォリオを共有します AWS Organizations。

 アカウント間共有または Organizations を使用してポートフォリオを共有する場合、そのポートフォリオの*リファレンス*を共有することになります。インポートされたポートフォリオの製品と制約は、共有した元のポートフォリオである共有ポートフォリオに対して行う変更と同期が維持されます。

受信者は、製品または制約を変更することはできませんが、エンドユーザーの ( AWS Identity and Access Management ) アクセス権を追加できます。

**注記**  
 共有リソースを共有することはできません。これには、共有製品を含むポートフォリオが含まれます。

## アカウント間共有
<a name="portfolio-sharing-account"></a>

これらのステップを完了するには、ターゲットアカウントの AWS アカウント ID を取得する必要があります。ID は、ターゲット**アカウントの のマイ**アカウントページで確認できます。 AWS マネジメントコンソール 

**ポートフォリオを AWS アカウントと共有するには**

1. Service Catalog コンソール ([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)) を開きます。

1. 左側のナビゲーションメニューで、[**ポートフォリオ**] を選択し、共有するポートフォリオを選択します。**[アクション]** メニューで **[共有]** を選択します。

1. **Enter account ID** に、共有している AWS アカウントのアカウント ID を入力します。(オプション) [[TagOption の共有]](#tagoptions-share) を選択します。次に、[**共有**] を選択します。

1. ターゲットアカウントの AWS Service Catalog 管理者に URL を送信します。URL では、共有ポートフォリオの ARN が自動的に提供されて [**ポートフォリオのインポート**] ページが開きます。

### ポートフォリオのインポート
<a name="catalogs_portfolios_sharing_importing"></a>

別の AWS アカウントの AWS Service Catalog 管理者がポートフォリオを共有している場合は、そのポートフォリオをアカウントにインポートして、その製品をエンドユーザーに配布できるようにします。

ポートフォリオが共有されている場合は、ポートフォリオをインポートする必要はありません AWS Organizations。

ポートフォリオをインポートするには、管理者からポートフォリオ ID を取得する必要があります。

インポートされたすべてのポートフォリオを表示するには、[https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/) で AWS Service Catalog コンソールを開きます。**[ポートフォリオ]** ページで、**[インポート済み]** タブを選択します。「**インポートされたポートフォリオ**」テーブルを確認します。

## との共有 AWS Organizations
<a name="portfolio-sharing-organizations"></a>

を使用して AWS Service Catalog ポートフォリオを共有できます AWS Organizations。

 まず、管理アカウントから共有するか、委任管理者アカウントから共有するかを決定する必要があります。管理アカウントから共有しない場合は、委任管理者アカウントを登録し、共有に使用してください。詳細については、CloudFormation ユーザーガイドの[委任された管理者の登録](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html)を参照してください。

 次に、共有する相手を決定する必要があります。次のエンティティと共有できます。
+ 組織アカウント。
+ 部門単位 (OU)｡
+ 組織そのもの。(これは、組織内のすべてのアカウントと共有されます)。

### 管理アカウントからの共有
<a name="sharing-from-master"></a>

組織構造を使用するか、組織ノードの ID を入力するときに、ポートフォリオを組織と共有できます。

****組織構造を使用してポートフォリオを組織と共有するには****

1. [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/) で AWS Service Catalog コンソールを開きます。

1. **[ポートフォリオ]** ページで、共有するポートフォリオを選択します。**[アクション]** メニューで **[共有]** を選択します。

1. **AWS Organizations** を選択して組織構造に絞り込みます。

   ルートノードを選択して、ポートフォリオを組織全体、親組織単位 (OU)、子 OU、または組織内の AWS アカウントと共有できます。

   親 OU に共有すると、その親 OU 内のすべてのアカウントおよび子 OU にポートフォリオが共有されます。

   ** AWS アカウントの表示を選択して**、組織内のすべての AWS アカウントのリストのみを表示できます。

****組織ノードの ID を入力して、ポートフォリオを組織と共有するには****

1. [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/) で AWS Service Catalog コンソールを開きます。

1. **[ポートフォリオ]** ページで、共有するポートフォリオを選択します。**[アクション]** メニューで **[共有]** を選択します。

1. [**組織ノード**] を選択します。

   組織全体、OU、または組織内の AWS アカウントと共有するかどうかを選択します。

   選択した組織ノードの ID を入力します。このノードは、 AWS Organizations コンソール ([https://console.aws.amazon.com/organizations/](https://console.aws.amazon.com/organizations/)) で確認できます。

### 委任管理者アカウントからの共有
<a name="delegated-admin"></a>

 組織の管理アカウントは、他のアカウントを組織の委任管理者として登録および登録解除できます。

委任管理者は、管理アカウントと同じ方法で組織内の AWS Service Catalog リソースを共有できます。ポートフォリオの作成、削除、共有などが許可されます。

委任管理者を登録または登録解除するには、マスターアカウントから API または CLI を使用する必要があります。詳細については、AWS Organizations API リファレンスの [RegisterDelegatedAdministrator](https://docs.aws.amazon.com/organizations/latest/APIReference/API_RegisterDelegatedAdministrator.html) および [DeregisterDelegatedAdministrator](https://docs.aws.amazon.com/organizations/latest/APIReference/API_DeregisterDelegatedAdministrator.html) を参照してください。

**注記**  
管理者を委任する前に、管理者は、[https://docs.aws.amazon.com/servicecatalog/latest/dg/API_EnableAWSOrganizationsAccess.html](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_EnableAWSOrganizationsAccess.html) を呼び出す必要があります。

委任管理者アカウントからポートフォリオを共有する手順は、前述の「[管理アカウントからの共有](#sharing-from-master)」で説明したように、マスターアカウントからの共有と同じです。

 メンバーが委任管理者として登録解除されると、次のようになります。
+ そのアカウントから作成されたポートフォリオ共有は削除されます。
+ 新しいポートフォリオ共有を作成することはできません。

**注記**  
 委任管理者が登録解除された後に、委任管理者によって作成されたポートフォリオと共有が削除されない場合は、委任管理者を再度登録して登録解除します。このアクションにより、そのアカウントで作成されたポートフォリオと共有が削除されます。

### 組織内のアカウントの移動
<a name="move-account"></a>

組織内でアカウントを移動すると、アカウントと共有されている AWS Service Catalog ポートフォリオが変更される可能性があります。

アカウントは、対象の組織または組織部門と共有されているポートフォリオにのみアクセスできます。

## ポートフォリオを共有する際の TagOptions の共有
<a name="tagoptions-share"></a>

管理者は、TagOptions を含む共有を作成できます。TagOptions は、管理者が次のことを可能にするキーと値のペアです。
+ タグの分類を定義し、適用します。
+ タグオプションを定義し、製品やポートフォリオに関連付けます。
+ ポートフォリオおよび製品に関連するタグオプションを他のアカウントと共有します。

メインアカウントでタグオプションを追加または削除すると、変更は自動的に受信者アカウントに表示されます。受信者アカウントでは、エンドユーザーが TagOptions を使用して製品をプロビジョニングする場合、プロビジョニング済み製品のタグになるタグの値を選択する必要があります。

受信者アカウントでは、管理者はインポートされたポートフォリオに追加のローカル TagOptions を関連付けて、そのアカウントに固有のタグ付けルールを適用できます。

**注記**  
ポートフォリオを共有するには、コンシューマーの AWS アカウント ID が必要です。コンソールのマイ AWS アカウントでアカウント ID を見つけます。 ****

**注記**  
TagOption に 1 つの値がある場合、 はプロビジョニングプロセス中にその値 AWS を自動的に適用します。

**ポートフォリオを共有する際に TagOptions を共有するには**

1. 左側のナビゲーションメニューから [**ポートフォリオ**] を選択します。

1. [**ローカルポートフォリオ**] で、ポートフォリオを選択し、開きます。

1. 上部のリストから [**共有**] を選択し、[**共有**] ボタンを選択します。

1. 別の AWS アカウントまたは組織と共有することを選択します。

1. 12 桁のアカウント ID 番号を入力し、[**有効化**] を選択してから、[**共有**] を選択します。

   共有したアカウントは、[**共有したアカウント**] セクションに表示されます。TagOptions が有効になっているかどうかを示します。

また、ポートフォリオ共有を更新して TagOptions を含めることもできます。ポートフォリオおよび製品に属するすべての TagOptions がこのアカウントと共有されるようになりました。

**ポートフォリオ共有を更新して TagOptions を含めるには**

1. 左側のナビゲーションメニューから [**ポートフォリオ**] を選択します。

1. [**ローカルポートフォリオ**] で、ポートフォリオを選択し、開きます。

1. 上部のリストから [**共有**] を選択します。

1. [**共有したアカウント**] で、アカウント ID を選択してから、[**アクション**] を選択します。

1. [**Update unshare**] または [**Unshare**] を選択します。

   [**Update unshare**] を選択した場合、[**有効化**] をクリックして TagOptions の共有を開始します。共有したアカウントは、[**共有したアカウント**] セクションに表示されます。

   [**Unshare**] を選択した場合、アカウントを共有する必要がなくなったことを確認します。

## ポートフォリオを共有する際のプリンシパル名の共有
<a name="principal-name-share"></a>

管理者は、プリンシパル名を含むポートフォリオ共有を作成できます。プリンシパル名は、管理者がポートフォリオで指定してポートフォリオと共有できるグループ、ロール、ユーザーの名前です。ポートフォリオを共有すると、 AWS Service Catalog はそれらのプリンシパル名がすでに存在するかどうかを確認します。存在する場合、 は一致する IAM プリンシパルを共有ポートフォリオ AWS Service Catalog に自動的に関連付けて、ユーザーにアクセス権を付与します。

**注記**  
プリンシパルをポートフォリオに関連付けると、そのポートフォリオが他のアカウントと共有されたときに、権限昇格の過程が生じる可能性があります。 AWS Service Catalog 管理者*ではない*が、プリンシパル (ユーザー/ロール) を作成できる受信者アカウントのユーザーの場合、そのユーザーはポートフォリオのプリンシパル名の関連付けに一致する IAM プリンシパルを作成できます。このユーザーは、どのプリンシパル名が関連付けられているかわからない場合がありますが AWS Service Catalog、ユーザーを推測できる場合があります。この潜在的なエスカレーションパスが懸念される場合、 は `PrincipalType`として を使用する AWS Service Catalog ことをお勧めします`IAM`。この設定では、`PrincipalARN` が既に受信者アカウントに存在していなければ関連付けることはできません。

メインアカウントでプリンシパル名を追加または削除すると、 はそれらの変更を受信者アカウント AWS Service Catalog に自動的に適用します。受信者アカウントのユーザーは、その役割に基づいてタスクを実行できます。
+ **エンドユーザー** はポートフォリオの製品をプロビジョニング、更新、終了できます。
+ **管理者** は、インポートされたポートフォリオに追加の IAM プリンシパルを関連付けて、そのアカウントに固有のエンドユーザーにアクセス権を付与できます。

**注記**  
プリンシパル名共有は でのみ使用できます AWS Organizations。

**ポートフォリオを共有する際にプリンシパル名を共有するには**

1. 左側のナビゲーションメニューから [**ポートフォリオ**] を選択します。

1. **ローカルポートフォリオ**で、共有したいポートフォリオを選択します。

1. **[アクション]** メニューで **[共有]** を選択します。

1.  AWS Organizations内の組織を選択します。

1. **[組織ルート全体]**、**[組織ユニット (OU)]**、または **[組織メンバー]** を選択します。

1. **[共有]** 設定で、**[プリンシパルの共有]** オプションを有効にします。

また、ポートフォリオ共有を更新して、プリンシパル名の共有を含めることもできます。これにより、そのポートフォリオに属するすべてのプリンシパル名が受信者アカウントと共有されます。

**ポートフォリオ共有を更新して、プリンシパル名を有効または無効にするには**

1. 左側のナビゲーションメニューから [**ポートフォリオ**] を選択します。

1. **[ローカルポートフォリオ]** で、更新するポートフォリオを選択します。

1. **[共有]** タブを選択します。

1. 更新する共有を選択し、**[共有]** を選択します。

1. **「共有の更新**」を選択し、**「プリン**シパル共有の開始を有効にする」を選択します。 AWS Service Catalog その後、 は受信者アカウントでプリンシパル名を共有します。

受信者アカウントとのプリンシパル名の共有を停止したい場合は、プリンシパル共有を **[無効]** にします。

### プリンシパル名を共有する場合はワイルドカードを使用する
<a name="wildcards-principal-names"></a>

AWS Service Catalog は、「\$1」や「？」などのワイルドカードを持つ IAM プリンシパル (ユーザー、グループ、またはロール) 名へのポートフォリオアクセスの付与をサポートしています。ワイルドカードパターンを使用すると、複数の IAM プリンシパル名を一度に扱うことができます。ARN パスとプリンシパル名には、無制限のワイルドカード文字を使用できます。

**許容できる**ワイルドカード ARN の例:
+ **arn:aws:iam:::role/ResourceName\$1\$1**
+ **arn:aws:iam:::role/\$1/ResourceName\$1?**

**許容できない**ワイルドカード ARN の例:
+ **arn:aws:iam:::\$1/ResourceName**

IAM プリンシパル ARN 形式 (**arn:partition:iam:::resource-type/resource-path/resource-name**) では、有効な値には **user/**、**group/**、または **role/** が含まれます。「?」 「\$1」と「\$1」は、resource-id セグメントのリソースタイプの後にのみ使用できます。特殊文字はリソース ID 内のどこでも使用できます。

「\$1」文字は「/」文字とも一致するため、リソース ID 内 にパスを作成できます。例えば、次のようになります。

**arn:aws:iam:::role/**\$1**/ResourceName\$1?** は **arn:aws:iam:::role/pathA/pathB/ResourceName\$11** と **arn:aws:iam:::role/pathA/ResourceName\$11** の両方に一致します。

# ポートフォリオの共有とインポート
<a name="catalogs_portfolios_sharing"></a>

他の組織に属しているユーザーや組織 AWS アカウント 内の他の組織に属しているユーザーなど AWS アカウント、 に属していないユーザーが AWS Service Catalog 製品を利用できるようにするには、ポートフォリオを共有します。共有は、アカウント間共有、組織共有、スタックセットを使用したカタログのデプロイなど、いくつかの方法で実行できます。

 製品とポートフォリオを他のアカウントと共有する前に、カタログの参照を共有するか、カタログのコピーを各受信者アカウントにデプロイするかを決定する必要があります。コピーをデプロイする場合、受信者アカウントに反映する更新が発生したら再デプロイする必要があります。

スタックセットを使用して、同時に複数のアカウントにカタログをデプロイできます。参照 (元のバージョンとの同期が維持されるポートフォリオのインポートバージョン) を共有する場合、アカウント間共有を使用するか、 AWS Organizationsを使用して共有することができます。

スタックセットを使用してカタログのコピーをデプロイするには、[「会社の標準 AWS Service Catalog 製品のマルチリージョン、マルチアカウントカタログを設定する方法](https://aws.amazon.com/blogs/mt/how-to-set-up-a-multi-region-multi-account-catalog-of-company-standard-aws-service-catalog-products/)」を参照してください。

account-to-account共有または を使用してポートフォリオを共有する場合 AWS Organizations、別の AWS アカウントの管理者がポートフォリオを自分のアカウントにインポートし、そのアカウントのエンドユーザーに製品を配布することを許可 AWS Service Catalog します。

このインポートされたポートフォリオは独立コピーではありません。インポートされたポートフォリオの製品と制約は、共有した元のポートフォリオである共有ポートフォリオに対して行う変更と同期が維持されます。ポートフォリオを共有する管理者である*受信者管理者は*、製品や制約を変更することはできませんが、エンドユーザーの AWS Identity and Access Management (IAM) アクセスを追加できます。詳細については、「[ユーザーへのアクセス権限の付与](catalogs_portfolios_users.md)」を参照してください。

受信者管理者は、次の方法で AWS アカウントに属しているエンドユーザーに製品を配布できます。
+ インポートされたポートフォリオにユーザー、グループ、ロールを追加します。
+ インポートされたポートフォリオから**ローカルポートフォリオ**に製品を追加することで、受信者管理者が作成し、その AWS アカウントに属する別のポートフォリオになります。次に、受信者の管理者は、そのローカルポートフォリオにユーザー、グループ、およびロールを追加します。共有ポートフォリオで製品に適用した制約は、ローカルポートフォリオにも存在します。ローカルポートフォリオの受信者管理者は、制限を追加することができますが、共有ポートフォリオから最初にインポートされた制約を削除することはできません。

共有ポートフォリオに製品または制約を追加または削除すると、変更はポートフォリオのすべてのインポートされたインスタンスに伝搬されます。たとえば、共有ポートフォリオから製品を削除する場合、その製品はインポートされたポートフォリオからも削除されます。また、製品が追加されたすべてのローカルポートフォリオからも削除されます。削除する前にエンドユーザーが製品を起動した場合、エンドユーザーのプロビジョニング済み製品は実行し続けますが、それ以降の起動では使用できなくなります。

共有ポートフォリオで製品に起動制約を適用する場合、製品のすべてのインポートされたインスタンスに伝搬されます。この起動制約を上書きするには、受信者管理者はローカルポートフォリオに製品を追加し、別の起動制約を適用します。有効な起動制約により、製品の起動ロールが設定されます。

*起動ロール*は、エンドユーザーが製品を起動するときに AWS Service Catalog がリソース (Amazon EC2 インスタンスや Amazon RDS データベースなど) をプロビジョニング AWS するために使用する IAM ロールです。管理者は、特定の起動ロール ARN またはローカルロール名を指定できます。ロール ARN を使用する場合、エンドユーザーが起動ロールを所有するアカウントとは異なる AWS アカウントに属している場合でも、そのロールが使用されます。ローカルロール名を使用する場合、エンドユーザーのアカウントでその名前を持つ IAM ロールが使用されます。

起動制約と起動ロールの詳細については、「[AWS Service Catalog 起動の制限](constraints-launch.md)」を参照してください。起動ロールを所有する AWS アカウントは AWS リソースをプロビジョニングし、このアカウントではそれらのリソースの使用料金が発生します。詳細については、「[AWS Service Catalog 料金](https://aws.amazon.com/servicecatalog/pricing/)」を参照してください。

この動画では、 のアカウント間でポートフォリオを共有する方法を示します AWS Service Catalog。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/BVSohYOppjk/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/BVSohYOppjk)


**注記**  
インポートまたは共有されたポートフォリオの製品を再共有することはできません。

**注記**  
ポートフォリオのインポートは、管理アカウントと依存アカウント間の同じリージョンで実行する必要があります。

## 共有ポートフォリオとインポートされたポートフォリオの関係
<a name="shared-imported-portfolios-relationship"></a>

この表に、インポートされたポートフォリオと共有ポートフォリオの関係、およびポートフォリオをインポートする管理者が、そのポートフォリオとポートフォリオ内の製品で実行できることと、実行できないことの概要を示します。


| 共有ポートフォリオの要素 | インポートされたポートフォリオとの関係 | 受信者の管理者が実行できること | 受信者の管理者が実行できないこと | 
| --- | --- | --- | --- | 
| 製品と製品バージョン |  継承されます。 ポートフォリオ作成者が共有ポートフォリオに製品を追加または削除すると、変更はインポートされたポートフォリオに伝播されます。  |  インポートされた製品をポートフォリオに追加する。製品は、共有ポートフォリオとの同期を維持します。  |  インポートされたポートフォリオに製品をアップロード、追加、または削除する。  | 
| 起動制約 |  継承されます。 ポートフォリオ作成者が共有製品に起動制約を追加または削除すると、変更は製品のすべてのインポートされたインスタンスに伝播されます。 受信者の管理者がインポートされた製品をローカルポートフォリオに追加した場合、そのインポートされた起動制約は共有ポートフォリオには引き継がれません。  | ローカルポートフォリオでは、管理者は製品のローカルリリースに影響する起動制約を適用できます。 |  インポートされたポートフォリオとの間で、起動制約を追加または削除する。  | 
| テンプレート制約 |  継承されます。 ポートフォリオ作成者がテンプレート制約を共有製品に追加または削除すると、変更は製品のすべてインポートされたインスタンスに伝搬されます。 受信者管理者がインポートされた製品をローカルポートフォリオに追加した場合、インポートされたテンプレートの制約はローカルポートフォリオに引き継がれません。  |  ローカルポートフォリオでは、管理者はローカル製品を制約するテンプレート制約を追加できます。  |  インポートされたテンプレートの制約を削除する。  | 
| ユーザー、グループ、およびロール | 継承されません。 | 管理者の AWS アカウントに属するユーザー、グループ、およびロールを追加する。 | 該当なし。 | 

# 製品の管理
<a name="catalogs_products"></a>

製品を作成したり、更新されたテンプレートに基づいて新しいバージョンを作成して製品を更新したり、製品をポートフォリオにグループ化してユーザーに配布したりできます。

新しいバージョンの製品は、ポートフォリオを通じて製品にアクセスできるすべてのユーザーに伝播されます。更新を配信すると、エンドユーザーは既存のプロビジョニングされた製品をアップデートできます。

**Topics**
+ [[製品] ページの表示](#productmgmt-menu)
+ [製品の作成](productmgmt-cloudresource.md)
+ [ポートフォリオへの製品の追加](catalogs_portfolios_adding-products.md)
+ [製品の更新](productmgmt-update.md)
+ [GitHub、GitHub Enterprise、Bitbucket から製品をテンプレートファイルに同期する](git-synced-sc-products.md)
+ [製品の削除](productmgmt-delete.md)
+ [バージョンの管理](managing-versions.md)

## [製品] ページの表示
<a name="productmgmt-menu"></a>

製品は、 AWS Service Catalog 管理者コンソール**の製品リスト**ページから管理します。

****[製品リスト]** ページを表示するには**

1. Service Catalog コンソール ([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)) を開きます。

1. **[製品リスト]** を選択します。

# 製品の作成
<a name="productmgmt-cloudresource"></a>

 製品を作成するには、 AWS Service Catalog 管理者コンソールの**「製品**」ページから作成します。

**注記**  
Terraform 製品を作成するには、Terraform プロビジョニングエンジンや起動ロールなどの追加設定が必要です。詳細については、「[Terraform 製品の使用開始](getstarted-Terraform.md) 」を参照してください。

**新しい AWS Service Catalog 製品を作成するには**

1. **[製品リスト]** ページに移動します。

1. **[製品の作成] **を選択し、**[製品の作成]** を選択します。

1. **製品の詳細** – 作成する製品のタイプを選択できます。 AWS Service Catalog supports CloudFormation、Terraform Cloud、および External (Terraform Community Edition をサポート) 製品タイプ。製品詳細には、リストまたは詳細ページで製品を検索して表示したときに表示されるメタデータも含まれています。次のように入力します。
   + **[製品名]** – 製品の名前。
   +  **[商品説明]** — 説明は商品リストに表示され、正しい商品を選択するのに役立ちます。
   + **[所有者]** — この製品を公開する個人または組織。所有者は IT 組織または管理者の名前である可能性があります。
   + **[ディストリビュータ]** (オプション) – アプリケーションのパブリッシャーの名前。このフィールドを使用すると、製品リストを並べ替えて、製品を見つけやすくすることができます。

1. **[バージョン詳細]** により、テンプレートファイルを追加して製品を構築できます。次のように入力します。
   +  **[方法の選択]** — テンプレートファイルを追加するには 4 つの方法があります。
     + **ローカルテンプレートファイルを使用する** - ローカルドライブから CloudFormation テンプレートまたは Terraform tar.gz 設定ファイルをアップロードします。
     + **[Amazon S3 URL を使用]** - Amazon S3 に保存されている CloudFormation テンプレートまたは Terraform tar.gz 設定ファイルを指す URL を指定します。Amazon S3 の URL を指定する場合、`https://` で始まる必要があります。
     + **外部リポジトリを使用する **- GitHub、GitHub Enterprise、または Bitbucket コードリポジトリを指定します。 AWS Service Catalog を使用すると、製品をテンプレートファイルに同期できます。Terraform 製品の場合、テンプレートファイル形式は Tar にアーカイブされ、Gzip で圧縮された単一のファイルである必要があります。
     + **既存の CloudFormation スタックを使用** - 既存の CloudFormation スタックの ARN を入力します。このメソッドは Terraform Cloud 製品および External 製品をサポートしていません。
   +  **[バージョン名]** (オプション) – 製品バージョンの名前 (例: 「v1」、「v2beta」)。スペースは使用できません。
   +  **[説明]** (オプション) - このバージョンと他のバージョンとの違いを含む、製品バージョンの説明。
   +  **[ガイダンス]** — **[製品詳細]** ページの「バージョン」タブで管理されます。製品作成ワークフロー中に製品バージョンが作成されると、そのバージョンのガイダンスがデフォルトに設定されます。ガイダンスの詳細については、「[バージョン管理](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/managing-versions.html)」を参照してください。

1. **[サポートの詳細]**は、貴社の組織を特定し、サポートの窓口となります。次のように入力します。
   + **[メール連絡先]**​ (オプション) - 製品の問題を報告するためのメールアドレス。
   + **[サポートリンク]** (オプション) - ユーザーがサポート情報またはファイルチケットを見つけることができるサイトの URL。URL は `http://`、または `https://` で始まる必要があります。管理者は、サポート情報の正確性とアクセスを維持する責任があります。
   + **[サポートの説明]** (オプション) - ユーザーが **[メール連絡先]** および **[サポート]** リンクを使用する方法の説明。

1.  **[タグの管理]** (オプション) — タグを使用してリソースを分類するだけでなく、このリソースを作成する権限を認証するためにも使用できます。

1. **[製品の作成]** — フォームの入力が完了したら、**[製品の作成]** を選択します。数秒後、製品が **[製品のリスト]** ページに表示されます。製品を表示するには、ブラウザの更新が必要になる場合があります。

CodePipeline を使用してパイプラインを作成して設定し、製品テンプレートを にデプロイ AWS Service Catalog し、ソースリポジトリで行った変更を配信することもできます。詳細については、[「チュートリアル: デプロイ先のパイプラインを作成する AWS Service Catalog](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-S3-servicecatalog.html)」を参照してください。

 CloudFormation または Terraform テンプレートでパラメータプロパティを定義し、プロビジョニング中にこれらのルールを適用できます。これらのプロパティは、最小値と最大値、最小値と最大値、許可された値、および値の正規表現を定義できます。 は、指定された値がパラメータプロパティに準拠していない場合、プロビジョニング中に警告 AWS Service Catalog を発行します。パラメータプロパティの詳細については、CloudFormation ユーザーガイドの「[パラメータ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html)」を参照してください。

## トラブルシューティング
<a name="productmgmt-cloudresource-troubleshooting"></a>

 Amazon S3 バケットからオブジェクトを取得するためのアクセス許可が必要です。そうしないと、製品の起動または更新中に次のエラーが発生する場合があります。

```
Error: failed to process product version s3 access denied exception
```

 このメッセージが表示された場合は、以下のバケットからオブジェクトを取得する権限があることを確認してください。
+  プロビジョニングアーティファクトテンプレートが保存されているバケット。
+  ***「cf-templates-\$1***」で始まり、 がプロビジョニングアーティファクトテンプレート AWS Service Catalog を保存するバケット。
+  ***「sc-\$1***」で始まり、 がメタデータ AWS Service Catalog を保存する内部バケット。アカウントからこのバケットを表示することはできません。

 次のポリシー例は、前述のバケットからオブジェクトを取得するために必要な最小限のアクセス許可を示しています。

```
{
          "Sid": "VisualEditor1",
          "Effect": "Allow",
          "Action": "s3:GetObject*",
          "Resource": [
              "arn:aws:s3:::YOUR_TEMPLATE_BUCKET",
              "arn:aws:s3:::YOUR_TEMPLATE_BUCKET/*",
              "arn:aws:s3:::cf-templates-*",
              "arn:aws:s3:::cf-templates-*/*",
              "arn:aws:s3:::sc-*",
              "arn:aws:s3:::sc-*/*"
          ]
      }
```

# ポートフォリオへの製品の追加
<a name="catalogs_portfolios_adding-products"></a>

 任意の数のポートフォリオに製品を追加できます。製品が更新されると、その製品を含むすべてのポートフォリオ (共有ポートフォリオを含む) が自動的に新しいバージョンを受け取ります。

**カタログからポートフォリオに製品を追加するには**

1.  **[製品リスト]** ページに移動します。

1.  製品を選択し、**[アクション]** を選択します。ドロップダウンメニューから **[ポートフォリオに製品を追加]** を選択します。**[ポートフォリオに*製品名*を追加]** ページに移動します。

1.  ポートフォリオを選択し、[**製品をポートフォリオへ追加**] を選択します。

Terraform 製品をポートフォリオに追加する場合、その製品には起動制限が必要です。アカウントから IAM ロールを選択するか、IAM ロール ARN を入力するか、ロール名を入力する必要があります。ロール名を指定すると、アカウントが起動制約を使用する場合、アカウントは IAM ロールのその名前を使用します。これにより、起動ロールの制約がアカウントに依存しないようになり、共有アカウントごとに作成できるリソースの数が確実に減ります。詳細と手順については、「[ステップ 6: Terraform 製品に起動制約を追加する](getstarted-launchconstraint-Terraform.md)」を参照してください。

 ポートフォリオには、 CloudFormation と Terraform 製品タイプを組み合わせた多数の製品を含めることができます。

# 製品の更新
<a name="productmgmt-update"></a>

 製品のテンプレートを更新する必要がある場合は、製品の新しいバージョンを作成します。新しい製品バージョンは、製品を含むポートフォリオにアクセスできるすべてのユーザーに自動的に提供されます。

**注記**  
既存の製品を更新する場合、製品タイプ (CloudFormation または Teraform) を変更することはできません。たとえば、 CloudFormation 製品を更新する場合、既存の CloudFormation テンプレートを Terraform tar.gz 設定ファイルに置き換えることはできません。既存の CloudFormation テンプレートファイルを新しい CloudFormation テンプレートファイルで更新する必要があります。

 以前の製品バージョンのプロビジョニングされた製品を現在実行しているエンドユーザーは、プロビジョニングされた製品を新しいバージョンに更新できます。製品の新しいバージョンが利用できる場合、ユーザーは [**プロビジョニング済み製品リスト**] または[**プロビジョニング済み製品の詳細**] ページで [**プロビジョニング済み製品の更新**] コマンドを使用できます。

製品の新しいバージョンを作成する前に、 では、 CloudFormation または Terraform エンジンで製品の更新をテストして、正しく機能することを確認する AWS Service Catalog ことをお勧めします。

**新しい製品バージョンを作成するには**

1.  **[製品リスト]** ページに移動します。

1.  更新する製品を選択します。製品詳細ページに移動します。

1.  [製品の詳細] ページで、**[バージョン]** タブを展開し、**[新バージョンの作成]** を選択します。

1.  **[バージョンの詳細]** で、以下を実行します。
   + **[テンプレートの選択]** — テンプレートファイルを追加するには 4 つの方法があります。

     *ローカルテンプレートファイルを使用する* - ローカルドライブから CloudFormation テンプレートまたは Terraform tar.gz 設定ファイルをアップロードします。

     *[Amazon S3 URL を使用]* - Amazon S3 に保存されている CloudFormation テンプレートまたは Terraform tar.gz 設定ファイルを指す URL を指定します。Amazon S3 の URL を指定する場合、https:// で始まる必要があります。

     *外部リポジトリを使用する *- GitHub、GitHub Enterprise、または Bitbucket コードリポジトリを指定します。 AWS Service Catalog を使用すると、製品をテンプレートファイルに同期できます。Terraform 製品の場合、テンプレートファイル形式は Tar にアーカイブされ、Gzip で圧縮された単一のファイルである必要があります。

     *既存の CloudFormation スタックを使用* - 既存の CloudFormation スタックの ARN を入力します。このメソッドは Terraform Cloud 製品および External 製品をサポートしていません。
   + **[バージョンタイトル]** – 製品バージョンの名前 (例えば「v1」、「v2beta」など)。スペースは使用できません。
   + **[説明]** (オプション) - このバージョンと前のバージョンとの違いを含む、製品バージョンの説明。

1. **[製品バージョンを作成]** を選択します。

 CodePipeline を使用して、製品テンプレートをデプロイするパイプラインを作成および設定し AWS Service Catalog、変更をソースリポジトリに配信することもできます。詳細については、[「チュートリアル: デプロイ先のパイプラインを作成する AWS Service Catalog](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-S3-servicecatalog.html)」を参照してください。

# GitHub、GitHub Enterprise、Bitbucket から製品をテンプレートファイルに同期する
<a name="git-synced-sc-products"></a>

AWS Service Catalog では、外部リポジトリプロバイダーを通じて管理されるテンプレートファイルに製品を同期できます。 は、このタイプのテンプレート接続を持つ製品を *Git 同期*製品と AWS Service Catalog 呼びます。リポジトリオプションには、GitHub、GitHub Enterprise、Bitbucket が含まれます。を AWS アカウント 外部リポジトリアカウントで認可したら、新しい AWS Service Catalog 製品を作成するか、既存の製品を更新してリポジトリ内のテンプレートファイルに同期できます。テンプレートファイルに変更を加えてリポジトリにコミットすると (git-push を使用するなど）、 は変更 AWS Service Catalog を自動的に検出し、新しい製品バージョン (アーティファクト) を作成します。

**Topics**
+ [製品を外部のテンプレートファイルと同期させるために必要な権限](#required-perms-synced-repo)
+ [アカウント接続を作成する](#create-synced-product)
+ [Git と同期された製品接続の表示](#view-repo-sync)
+ [Git 同期製品接続の更新](#update-repo-sync)
+ [Git 同期製品接続を削除する](#delete-repo-sync)
+ [GitHub、GitHub Enterprise、Bitbucket のテンプレートファイルへの Terraform 製品との同期](#git-synced-Terraform)
+ [AWS リージョン Git 同期製品のサポート](git-sync-supported-regions.md)

## 製品を外部のテンプレートファイルと同期させるために必要な権限
<a name="required-perms-synced-repo"></a>

次の AWS Identity and Access Management (IAM) ポリシーをテンプレートとして使用して、 AWS Service Catalog 管理者が外部リポジトリのテンプレートファイルに製品を同期できるようにします。このポリシーには、CodeConnections と の両方から必要なアクセス許可が含まれています AWS Service Catalog。 AWS Service Catalog では、以下のテンプレートポリシーをコピーし、リポジトリ同期製品を有効にするときに [マネージドポリシー](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/security-iam-awsmanpol)を使用する AWS Service Catalog `AWSServiceCatalogAdminFullAccess`ことをお勧めします。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CodeStarAccess",
            "Effect": "Allow",
            "Action": [
            "codestar-connections:UseConnection",
            "codestar-connections:PassConnection",
            "codestar-connections:CreateConnection",
            "codestar-connections:DeleteConnection",
            "codestar-connections:GetConnection",
            "codestar-connections:ListConnections",
            "codestar-connections:ListInstallationTargets",
            "codestar-connections:GetInstallationUrl",
            "codestar-connections:StartOAuthHandshake",
            "codestar-connections:UpdateConnectionInstallation",
            "codestar-connections:GetIndividualAccessToken"
            ],
            "Resource": "arn:aws:codestar-connections:*:*:connection/*"
        },
        {
        "Sid": "CreateSLR",
        "Effect": "Allow",
        "Action": "iam:CreateServiceLinkedRole",
        "Resource": "arn:aws:iam::*:role/aws-service-role/sync.servicecatalog.amazonaws.com/AWSServiceRoleForServiceCatalogArtifactSync",
        "Condition": {
        "StringLike": {
        "iam:AWSServiceName": "sync.servicecatalog.amazonaws.com"
                }
            }
        }
    ]
}
```

------

## アカウント接続を作成する
<a name="create-synced-product"></a>

テンプレートファイルを AWS Service Catalog 製品に同期する前に、1 回限りのaccount-to-account接続を作成して承認する必要があります。この接続を使用して、目的のテンプレートファイルを含むリポジトリの詳細を指定します。コンソール AWS Service Catalog 、CodeConnections コンソール、 AWS Command Line Interface (CLI)、または CodeConnections APIs を使用して接続を作成できます。

接続を確立したら、 AWS Service Catalog コンソール、 AWS Service Catalog API、または CLI を使用して同期された AWS Service Catalog 製品を作成できます。 AWS Service Catalog 管理者は、リポジトリとブランチのテンプレートファイルに基づいて新しい製品を作成したり、既存の AWS Service Catalog 製品を更新したりできます。リポジトリで変更がコミットされた場合、 は変更 AWS Service Catalog を自動的に検出し、新しい製品バージョンを作成します。以前の製品バージョンは規定のバージョン制限まで維持され、**非推奨**ステータスが割り当てられます。

さらに、 は接続の作成後にサービスにリンクされたロール (SLR) AWS Service Catalog を自動的に作成します。この SLR により、 AWS Service Catalog はリポジトリにコミットされたテンプレートファイルの変更をすべて検出できます。SLR では AWS Service Catalog 、同期された製品の新しい製品バージョンを自動的に作成することもできます。SLR の権限と機能について詳しくは、 AWS Service Catalogの「[サービスにリンクされたロール](#required-perms-synced-repo)」を参照してください。

**Git と同期された製品を作成するには**

1. ナビゲーションパネルで、**[製品のリスト]** を選択し、**[製品の作成]** を選択します。

1. **製品の詳細**を入力します。

1. バージョンの詳細で、**プロバイダーを使用して AWS CodeStar コードリポジトリを指定**を選択し、**新しい AWS CodeStar 接続を作成する**リンクを選択します。

1. 接続を作成したら、接続リストを更新し、新しい接続を選択します。**[リポジトリ]**、**[分岐]**、**[テンプレートファイルパス]** などのリポジトリの詳細を指定します。

   Terraform 設定ファイルの使用方法の詳細については、「[GitHub、GitHub Enterprise、Bitbucket のテンプレートファイルへの Terraform 製品との同期](#git-synced-Terraform)」を参照してください。

   1. (新しい AWS Service Catalog 製品リソースを作成する場合のオプション) **サポートの詳細**セクションで、製品のメタデータを追加します。

   1. (新しい AWS Service Catalog 製品リソースを作成する場合はオプション) **タグ**セクションで、**新しいタグを追加**を選択し、**キー**と**値の**ペアを入力します。

1. **[新しい商品を作成]** を選択します。

**Git 同期製品を複数作成するには**

1.  AWS Service Catalog コンソールの左側のナビゲーションパネルで、**製品リスト**を選択し、**複数の git マネージド製品を作成する**を選択します。

1. **[共通製品の詳細]** を入力します。

1. 「外部リポジトリの詳細」で、**[AWS CodeStar 接続]** を選択し、**[リポジトリ]** と **[分岐]** を指定します。

1. 「製品の追加」ペインで、**[テンプレートファイルパス]** と **[製品名]** を入力します。**[新しいアイテムを追加]** を選択し、必要に応じて製品の追加を続けます。

1. 必要な製品をすべて追加したら、**[製品の一括作成]** を選択します。

**既存の AWS Service Catalog 製品を外部リポジトリに接続するには**

1.  AWS Service Catalog コンソールの左側のナビゲーションパネルで、**製品リスト**を選択し、**製品を外部リポジトリに接続する**を選択します。

1. 「製品を選択」ページで、外部リポジトリに接続する製品を選択し、**[次へ]** を選択します。

1. ソースの詳細を指定ページで、既存の AWS CodeStar 接続を選択し、**リポジトリ**、**ブランチ**、**テンプレートファイルパス**を指定します。

1. [**次へ**] を選択します。

1. [確認して送信] ページで、接続の詳細を確認し、**[製品を外部リポジトリに接続する]** を選択します。

## Git と同期された製品接続の表示
<a name="view-repo-sync"></a>

 AWS Service Catalog コンソール、API、または を使用して AWS CLI 、リポジトリ接続の詳細を表示できます。テンプレートファイルにリンクされた AWS Service Catalog 製品の場合、リポジトリ接続に関する情報と、テンプレートが製品と最後に同期された時刻に関する情報を**最終同期ステータス**から取得できます。

**注記**  
リポジトリ情報と**[最終同期ステータス]** は製品レベルで表示できます。リポジトリの詳細を表示するには、CodeConnections APIs で IAM アクセス許可が必要です。これらの IAM アクセス[許可に必要なポリシーの詳細については、 AWS Service Catalog 「製品とテンプレートファイルを同期するために必要な](#required-perms-synced-repo)アクセス許可」を参照してください。

**を使用して接続とリポジトリの詳細を表示するには AWS マネジメントコンソール**

1. 左のナビゲーションパネルで **[製品リスト]** を選択します。

1. リストから製品を選択します。

1. **[製品]** ページで、**[製品ソースの詳細]** セクションに移動します。

1. 製品バージョンのソースリビジョン ID を表示するには、**[最終作成バージョン]** リンクを選択します。**[バージョン詳細]** セクションには、ソースリビジョン ID が表示されます。

**を使用して接続とリポジトリの詳細を表示するには AWS CLI**

から AWS CLI、次のコマンドを実行します。

`$ aws servicecatalog describe-product-as-admin`

`$ aws servicecatalog describe-provisioning-artifact`

`$ aws servicecatalog search-product-as-admin`

`$ aws servicecatalog list-provisioning-artifacts`

## Git 同期製品接続の更新
<a name="update-repo-sync"></a>

 AWS Service Catalog コンソール、 AWS Service Catalog API、または を使用して、既存のアカウント接続と Git 同期製品を更新できます AWS CLI。

既存の AWS Service Catalog 製品をテンプレートファイルに接続する方法については、[「新しい Git 同期製品接続の作成](#create-synced-product)」を参照してください。

**既存の製品を Git 同期商品に更新するには**

1. 左側のナビゲーションパネルで **[製品リスト]** を選択し、次のいずれかのオプションを選択します。
   + **1 つの製品** を更新するには、製品を選択し、**[製品ソースの詳細]** セクションに移動して **[詳細を編集]** を選択します。
   + **[複数の製品]** を更新するには、**[製品を外部リポジトリに接続する]** を選択し、最大 10 個の製品を選択してから **[次へ]** を選択します。

1. **[製品ソースの詳細]** セクションで、以下の更新を行います。
   + 接続を指定します。
   + リポジトリを指定します。
   + 分岐を指定します。
   + テンプレートファイルに名前を付けます。

1. **[変更の保存]** を選択します。

**注記**  
外部リポジトリにまだ接続されていない製品の場合は、製品を選択した後、製品情報ページ上部のアラートに表示される **[外部リポジトリに接続]** オプションを使用できます。

 AWS Service Catalog コンソールまたは を使用して、 AWS CLI 
+ 既存の AWS Service Catalog 製品を外部リポジトリのテンプレートファイルに接続する
+ 製品名、説明、タグなどの製品メタデータを更新します。
+ 以前接続していた AWS Service Catalog 製品の接続を再設定 (別のリポジトリソースを使用するように同期を更新) します。

**AWS Service Catalog コンソールを使用して接続とリポジトリの詳細を更新するには**

1.  AWS Service Catalog コンソールの左側のナビゲーションパネルで、**製品リスト**を選択し、現在外部リポジトリに接続されている製品を選択します。

1. **[製品ソース詳細]** セクションで、**[製品ソースを編集]** を選択します。

1. **[製品ソース詳細]** セクションで、希望する新しいリポジトリを指定します。

1. **[Save changes]** (変更の保存) をクリックします。

**を使用して接続とリポジトリの詳細を更新するには AWS CLI**

から、 コマンド`$ aws servicecatalog update-product`と `$ aws servicecatalog update-provisioning-artifact` コマンド AWS CLI を実行します。

## Git 同期製品接続を削除する
<a name="delete-repo-sync"></a>

 AWS Service Catalog コンソール、CodeConnections API、または を使用して、 AWS Service Catalog 製品とテンプレートファイル間の接続を削除できます AWS CLI。テンプレートファイルから製品を切断すると、同期された AWS Service Catalog 製品は定期的に管理される製品に切り替わります。製品を切断した後、以前に接続したリポジトリでテンプレートファイルを変更してコミットしても、変更は反映されません。外部リポジトリのテンプレートファイルに AWS Service Catalog 製品を再接続するには、[「接続と同期された AWS Service Catalog 製品の更新]()」を参照してください。

**AWS Service Catalog コンソールを使用して Git 同期製品を切断するには**

1. で AWS マネジメントコンソール、左側のナビゲーションパネルから**製品リスト**を選択します。

1. リストから製品を選択します。

1. **[製品]** ページで、**[製品ソースの詳細]** セクションに移動します。

1. **[切断]** を選択します。

1. アクションを確認し、**[切断]** を選択します。

**を使用して Git 同期製品を切断するには AWS CLI**

から AWS CLI、 `$ aws servicecatalog update-product` コマンドを実行します。`ConnectionParameters` 入力で、指定した接続を削除します。

**CodeConnections API または を使用して接続を削除するには AWS CLI**

CodeConnections API または で AWS CLI、 `$ aws codestar-connections delete-connection` コマンドを実行します。

## GitHub、GitHub Enterprise、Bitbucket のテンプレートファイルへの Terraform 製品との同期
<a name="git-synced-Terraform"></a>

Terraform 設定ファイルを使用して Git 同期製品を作成する場合、ファイルパスは tar.gz 形式のみを受け入れます。Terraform フォルダ形式はファイルパスでは使用できません。

# AWS リージョン Git 同期製品のサポート
<a name="git-sync-supported-regions"></a>

AWS Service Catalog は、以下の表 AWS リージョン に示すように、 で Git 同期 Produtcs をサポートしています。


****  

| AWS リージョン 名前 | AWS リージョン ID | Git 同期製品のサポート | 
| --- | --- | --- | 
| 米国東部 (バージニア北部) | us-east-1 | はい | 
| 米国東部 (オハイオ) | us-east-2 | はい | 
| 米国西部 (北カリフォルニア) | us-west-1 | はい | 
| 米国西部 (オレゴン)  | us-west-2 | はい | 
| アフリカ (ケープタウン) | af-south-1 | いいえ | 
| アジアパシフィック (香港) | ap-east-1 | いいえ | 
| アジアパシフィック (ジャカルタ) | ap-southeast-3 | いいえ | 
| アジアパシフィック (ムンバイ) | ap-south-1 | はい | 
| アジアパシフィック (大阪) | ap-northeast-3 | いいえ | 
| アジアパシフィック (ソウル) | ap-northeast-2 | はい | 
| アジアパシフィック (シンガポール) | ap-southeast-1 | はい | 
| アジアパシフィック (シドニー) | ap-southeast-2 | はい | 
| アジアパシフィック (東京) | ap-northeast-1 | はい | 
| カナダ (中部) | ca-central-1 | はい | 
| 欧州 (フランクフルト) | eu-central-1 | はい | 
| 欧州 (アイルランド) | eu-west-1 | はい | 
| 欧州 (ロンドン) | eu-west-2 | はい | 
| 欧州 (ミラノ) | eu-south-1 | いいえ | 
| 欧州 (パリ) | eu-west-3 | はい | 
| 欧州 (ストックホルム) | eu-north-1 | はい | 
| 中東 (バーレーン) | me-south-1 | いいえ | 
| 南米 (サンパウロ） | sa-east-1 | はい | 
| AWS GovCloud (米国東部) | us-gov-east-1 | いいえ | 
| AWS GovCloud (米国西部) | us-gov-west-1 | いいえ | 

# 製品の削除
<a name="productmgmt-delete"></a>

製品を削除すると、 は製品を含むすべてのポートフォリオからすべての製品バージョン AWS Service Catalog を削除します。

AWS Service Catalog では、 AWS Service Catalog コンソールまたは を使用して製品を削除できます AWS CLI。製品を正常に削除するには、まず製品に関連付けられているすべてのリソースの関連付けを解除する必要があります。製品リソースの関連付けの例には、ポートフォリオの関連付け、予算、TagOptions、およびサービスアクションが含まれます。

**重要**  
 製品が削除された後は、その製品を復元することはできません。

**AWS Service Catalog コンソールを使用して製品を削除するには**

1.  **ポートフォリオ** ページに移動し、削除する製品を含むポートフォリオを選択します。

1.  削除する製品を選択してから、製品ペインの右上にある [**削除**] を選択します。

1. 関連リソースのない製品の場合は、テキストボックスに「**削除**」と入力して削除する製品を確認し、[**削除**] を選択します。

   関連リソースのある製品の場合は、ステップ 4 に進みます。

1. **製品の削除**ウィンドウで、**関連付け**テーブルを確認します。このテーブルには、製品に関連付けられているすべての resources. AWS Service Catalog attempts が表示され、製品の削除時にこれらのリソースの関連付けが解除されます。

1. テキストボックスに「**削除**」と入力して、製品を削除して関連するリソースをすべて削除することを確認します。

1. [**関連付けを解除して削除**] を選択します。

 AWS Service Catalog が製品のすべてのリソースの関連付けを解除できない場合、製品は削除されません。「**製品を削除**」ウィンドウには、関連付け解除に失敗した回数と失敗ごとの説明が表示されます。製品削除時に失敗したリソースの関連付け解除の解決について詳しくは、以下の「製品削除時に失敗したリソースの関連付け解除の解決」を参照してください。

**Topics**
+ [を使用した製品の削除 AWS CLI](product-delete-cli.md)
+ [製品削除時に失敗したリソースの関連付け解除の解決](product-delete-exception.md)

# を使用した製品の削除 AWS CLI
<a name="product-delete-cli"></a>

AWS Service Catalog では、 [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) (AWS CLI) を使用してポートフォリオから製品を削除できます。 AWS CLI は、コマンドラインシェルのコマンドを使用して AWS サービスとやり取りできるオープンソースツールです。 AWS Service Catalog 強制削除関数にはエイリアスが必要です。エイ[AWS CLI リアス](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-alias.html)は、頻繁に使用するコマンドやスクリプトを短縮 AWS CLI するために で作成できるショートカットです。

## 前提条件
<a name="product-delete-cli-requirements"></a>
+  AWS CLIをインストールして設定します。詳細については、「[AWS CLIの最新バージョンのインストールまたは更新](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」および「[設定の基本](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)」を参照してください。1.11.24 または 2.0.0 の最小 AWS CLI バージョンを使用します。
+ 製品の CLI エイリアスを削除するには、Bash 互換のターミナルと JQ コマンドライン JSON プロセッサが必要です。コマンドライン JSON プロセッサのインストールの詳細については、[jq のダウンロード](https://stedolan.github.io/jq/download/) を参照してください。
+ エイリアスを作成して `Disassociation` API AWS CLI コールをバッチ処理し、1 つのコマンドで製品を削除できます。

製品を正常に削除するには、まず製品に関連付けられているすべてのリソースの関連付けを解除する必要があります。製品リソースの関連付けの例としては、ポートフォリオの関連付け、予算、タグオプション、サービスアクションなどがあります。CLI を使用して製品を削除する場合、CLI `force-delete-product` エイリアスを使用して `Disassociate` APIを呼び出し、`DeleteProduct` APIを妨げるリソースの関連付けを解除できます。これにより、個別の関連付け解除を個別に呼び出す必要がなくなります。

**注記**  
以下の手順で示すファイルパスは、これらの操作を実行するために使用するオペレーティングシステムによって異なる場合があります。

## AWS Service Catalog 製品を削除するための AWS CLI エイリアスの作成
<a name="product-delete-cli-alias"></a>

を使用して AWS Service Catalog 製品 AWS CLI を削除する場合、CLI `force-delete-product` エイリアスを使用すると、 `Disassociate` API を呼び出して、`DeleteProduct`呼び出しを妨げるリソースの関連付けを解除できます。

**AWS CLI 設定フォルダに `alias` ファイルを作成する**

1.  AWS CLI コンソールで、configuraiton フォルダに移動します。デフォルトでは、設定フォルダは Linux または macOS では「`~/.aws/`」、Windows 上は「`%USERPROFILE%\.aws\`」にあります。

1. ファイルナビゲーションを使用するか、任意のターミナルで以下のコマンドを入力して、`cli` という名前のサブフォルダを作成します。

   ```
                $ mkdir -p ~/.aws/cli
   ```

   作成されるフォルダ「`cli`」のデフォルトパスは、Linux または macOS では「`~/.aws/cli/`」、Windows では「`%USERPROFILE%\.aws\cli`」上にあります。

1. 新しい `cli` フォルダで、ファイル拡張子なしの `alias` という名前のテキストファイルを作成します。ファイルナビゲーションを使用するか、任意のターミナルで以下のコマンドを入力して `alias` ファイルを作成できます。

   ```
                 $ touch ~/.aws/cli/alias
   ```

1. 1 行目に「`[toplevel]`」と 入力します。

1. ファイルを保存します。

次に、エイリアススクリプトを手動で `alias` ファイルに貼り付けるか、ターミナルウィンドウのコマンドを使用して、force-delete-product (製品強制削除) エイリアスをこのファイルに追加できます。

**force-delete-product (製品強制削除) エイリアスを `alias` ファイルに手動で追加します。**

1.  AWS CLI コンソールで、 AWS CLI 設定フォルダに移動し、 `alias` ファイルを開きます。

1. ファイルの `[toplevel]` 行の下に次のコードエイリアスを入力します。

   ```
                [command servicecatalog]
             	 force-delete-product =
             	   !f() {
             	     if [ "$#" -ne 1 ]; then
             	         echo "Illegal number of parameters"
             	         exit 1
             	     fi
             	 
             	     if [[ "$1" != prod-* ]]; then
             	        echo "Please provide a valid product id."
             	        exit 1
             	     fi
             	 
             	     productId=$1
             	     describeProductAsAdminResponse=$(aws servicecatalog describe-product-as-admin --id $productId)
             	     listPortfoliosForProductResponse=$(aws servicecatalog list-portfolios-for-product --product-id $productId)
             	 
             	     tagOptions=$(echo "$describeProductAsAdminResponse" | jq -r '.TagOptions[].Id')
             	     budgetName=$(echo "$describeProductAsAdminResponse" | jq -r '.Budgets[].BudgetName')
             	     portfolios=$(echo "$listPortfoliosForProductResponse" | jq -r '.PortfolioDetails[].Id')
             	     provisioningArtifacts=$(echo "$describeProductAsAdminResponse" | jq -r '.ProvisioningArtifactSummaries[].Id')
             	     provisioningArtifactServiceActionAssociations=()
             	 
             	     for provisioningArtifactId in $provisioningArtifacts; do
             	       listServiceActionsForProvisioningArtifactResponse=$(aws servicecatalog list-service-actions-for-provisioning-artifact --product-id $productId --provisioning-artifact-id $provisioningArtifactId)
             	       serviceActions=$(echo "$listServiceActionsForProvisioningArtifactResponse" | jq -r '[.ServiceActionSummaries[].Id] | join(",")')
             	       if [[ -n "$serviceActions" ]]; then
             	         provisioningArtifactServiceActionAssociations+=("${provisioningArtifactId}:${serviceActions}")
             	       fi
             	     done
             	 
             	     echo "Before deleting a product, the following associated resources must be disassociated. These resources will not be deleted. This action may take some time, depending on the number of resources being disassociated."
             	 
             	     echo "Portfolios:"
             	     for portfolioId in $portfolios; do
             	       echo "\t${portfolioId}"
             	     done
             	 
             	     echo "Budgets:"
             	     if [[ -n "$budgetName" ]]; then
             	       echo "\t${budgetName}"
             	     fi
             	 
             	     echo "Tag Options:"
             	     for tagOptionId in $tagOptions; do
             	       echo "\t${tagOptionId}"
             	     done
             	 
             	     echo "Service Actions on Provisioning Artifact:"
             	     for association in "${provisioningArtifactServiceActionAssociations[@]}"; do
             	       echo "\t${association}"
             	     done
             	 
             	     read -p "Are you sure you want to delete ${productId}? y,n "
             	     if [[ ! $REPLY =~ ^[Yy]$ ]]; then
             	        exit
             	     fi
             	 
             	     for portfolioId in $portfolios; do
             	       echo "Disassociating ${portfolioId}"
             	       aws servicecatalog disassociate-product-from-portfolio --product-id $productId --portfolio-id $portfolioId
             	     done
             	 
             	     if [[ -n "$budgetName" ]]; then
             	       echo "Disassociating ${budgetName}"
             	       aws servicecatalog disassociate-budget-from-resource --budget-name "$budgetName" --resource-id $productId
             	     fi
             	 
             	     for tagOptionId in $tagOptions; do
             	       echo "Disassociating ${tagOptionId}"
             	       aws servicecatalog disassociate-tag-option-from-resource --tag-option-id $tagOptionId --resource-id $productId
             	     done
             	 
             	     for association in "${provisioningArtifactServiceActionAssociations[@]}"; do
             	       associationPair=(${association//:/ })
             	       provisioningArtifactId=${associationPair[0]}
             	       serviceActionsList=${associationPair[1]}
             	       serviceActionIds=${serviceActionsList//,/ }
             	       for serviceActionId in $serviceActionIds; do
             	         echo "Disassociating ${serviceActionId} from ${provisioningArtifactId}"
             	         aws servicecatalog disassociate-service-action-from-provisioning-artifact --product-id $productId --provisioning-artifact-id $provisioningArtifactId --service-action-id $serviceActionId
             	       done
             	     done
             	 
             	     echo "Deleting product ${productId}"
             	     aws servicecatalog delete-product --id $productId
             	 
             	   }; f
   ```

1. ファイルを保存します。

**ターミナルウィンドウを使用して、force-delete-product (製品強制削除) エイリアスを `alias` ファイルに追加します。**

1. ターミナルウィンドウを開いて、次のコマンドを実行します。

   `$ cat >> ~/.aws/cli/alias`

1. エイリアススクリプトをターミナルウィンドウに貼り付け、CTRL\$1D キーを押して `cat` コマンドを終了します。

**force-delete-product (製品強制削除) エイリアスを呼び出します。**

1. ターミナルウィンドウで次のコマンドを実行し、削除製品エイリアスを呼び出します

   `$ aws servicecatalog force-delete-product {product-id} `

   次の例は、`force-delete-product` エイリアスコマンドとその結果の応答を示しています。

   ```
                 $ aws servicecatalog force-delete-product prod-123
   ```

   ```
                 Before deleting a product, the following associated resources must be disassociated. These resources will not be deleted. This action may take some time, depending on the number of resources being disassociated.
                 Portfolios:
                   port-123
                 Budgets:
                     budgetName
                 Tag Options:
                     tag-123
                 Service Actions on Provisioning Artifact:
                     pa-123:act-123
                 Are you sure you want to delete prod-123? y,n
   ```

1. `y` を入力し、製品を削除することを確認します。

製品を正常に削除すると、ターミナルウィンドウに次の結果が表示されます。

```
          Disassociating port-123
          Disassociating budgetName
          Disassociating tag-123
          Disassociating act-123 from pa-123
          Deleting product prod-123
```

## その他のリソース
<a name="product-delete-cli-resources"></a>

エイリアス AWS CLIの使用、 AWS Service Catalog 製品の削除の詳細については、次のリソースを参照してください。
+ *AWS Command Line Interface (CLI)* [AWS CLI ユーザーガイドのエイリアスの作成と使用](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-alias.html)。
+ [AWS CLI エイリアスリポジトリ](https://github.com/awslabs/awscli-aliases) git リポジトリ。
+ [AWS Service Catalog 製品の削除](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-delete.html)。
+ [AWS re:Invent 2016: YouTube の実効 AWS CLI ユーザー](https://youtu.be/Xc1dHtWa9-Q?t=1593)。 *YouTube* 

# 製品削除時に失敗したリソースの関連付け解除の解決
<a name="product-delete-exception"></a>

リソースの関連付け解除の例外が原因で以前に[製品を削除](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-delete.html)しようとして失敗した場合は、以下の例外リストとその解決策を確認してください。

**注記**  
リソース関連付けの解除に失敗したというメッセージが表示される前に **[製品の削除]** ウィンドウを閉じた場合は、「製品の削除」セクションの手順 1 ～ 3 を実行して、ウィンドウを再度開くことができます。

**リソースの関連付け解除に失敗した問題を解決するには**

「**製品を削除**」ウィンドウで、「アソシエーション」テーブルの「**ステータス**」列を確認します。リソースの関連付け解除に失敗した例外と推奨される解決策を特定してください。


****  

| ステータス例外の種類 | 原因 | 解決策 | 
| --- | --- | --- | 
| 製品-\$1\$1\$1\$1 | AWS Service Catalog 製品に TagOptions、予算、少なくとも 1 つのアクションProvisioningArtifactが関連付けられているか、製品がまだポートフォリオに割り当てられているか、製品にユーザーがあるか、製品に制約があるため、 は製品を削除できませんでした。 | 製品を再度削除してみます。 | 
| ユーザー: username には以下を実行する権限がありません: | 製品を削除しようとしているユーザーには、製品のリソースの関連付けを解除するのに必要な権限がありません。 | AWS Service Catalog では、現在関連付けを解除するアクセス許可を持っていない製品リソースの関連付けを解除する方法の詳細については、アカウント管理者に問い合わせることをお勧めします。 | 

# バージョンの管理
<a name="managing-versions"></a>

 製品を作成するときに製品バージョンを割り当てます。製品バージョンはいつでも更新できます。

 バージョンには、 CloudFormation テンプレート、タイトル、説明、ステータス、ガイダンスがあります。

## バージョンステータス
<a name="version-status"></a>

 バージョンには、次の 3 つのステータスのいずれかを指定できます。
+  **アクティブ** - アクティブなバージョンがバージョンリストに表示され、ユーザーがそのバージョンを起動できるようにします。
+  **非アクティブ** - 非アクティブバージョンは、バージョンリストで非表示になります。このバージョンから起動された既存のプロビジョニング済み製品は影響を受けません。
+  **[削除済み]** - バージョンが削除されると、バージョンリストから削除されます。バージョンの削除は元に戻せません。

## バージョンガイダンス
<a name="version-guidance"></a>

 バージョンガイダンスを設定して、製品バージョンに関する情報をエンドユーザーに提供することができます。バージョンガイダンスは、アクティブな製品バージョンにのみ影響します。

 バージョンガイダンスには、次の 2 つのオプションがあります。
+  **なし** - デフォルトでは、製品バージョンにはガイダンスはありません。エンドユーザーはそのバージョンを使用して、プロビジョニングされた製品を更新および起動できます。
+  **非推奨** - ユーザーは、非推奨の製品バージョンを使用して新しいプロビジョニング済み製品を起動することはできません。以前にリリースされたプロビジョニング済み製品が、現在廃止されたバージョンを使用している場合、ユーザーはそのプロビジョニング済み製品を既存のバージョンまたは新しいバージョンを使用してのみ更新できます。

## バージョンの更新
<a name="updating-versions"></a>

 製品を作成するときに製品バージョンを割り当てます。また、バージョンはいつでも更新できます。製品の作成に関する詳細については、「[製品の作成](productmgmt-cloudresource.md)」を参照してください。

**製品バージョンを更新するには**

1.  AWS Service Catalog コンソールで、**製品**を選択します。

1.  製品リストから、バージョンを更新する製品を選択します。

1.  [**製品詳細**] ページで、[**バージョン**] タブを選択し、更新するバージョンを選択します。

1.  [**バージョンの詳細**] ページで、製品バージョンを編集し、[**変更の保存**] を選択します。

# AWS Service Catalog 制約の使用
<a name="constraints"></a>

制約を適用して、エンドユーザーがポートフォリオを起動したときに特定のポートフォリオ内の製品に適用されるルールを制御します。エンドユーザーが製品を起動すると、制約を使用して適用したルールが表示されます。製品をポートフォリオに入れたら、製品に制約を適用できます。制約は、作成するとすぐに有効になり、起動されていない製品の現在のバージョンすべてに適用されます。

**Topics**
+ [起動制約](constraints-launch.md)
+ [通知の制約](constraints-notification.md)
+ [タグの更新の制約](constraints-resourceupdate.md)
+ [スタックセットの制約](constraints-stackset.md)
+ [テンプレート制約](catalogs_constraints_template-constraints.md)

# AWS Service Catalog 起動の制限
<a name="constraints-launch"></a>

起動制約は、エンドユーザーが製品を起動、更新、または終了するときに が AWS Service Catalog 引き受ける AWS Identity and Access Management (IAM) ロールを指定します。IAM ロールは、ユーザーまたは AWS サービスが AWS サービスを使用するために一時的に引き受けることができるアクセス許可のコレクションです。簡単な例については、以下を参照してください。
+ CloudFormation 製品タイプ: [ステップ 6: IAM ロールを割り当てる起動制約を追加する](getstarted-launchconstraint.md)
+ Terraform Open Source または Terraform Cloud 製品タイプ: [ステップ 5: 起動ロールを作成する](getstarted-launchrole-Terraform.md)

起動制約は、ポートフォリオ (製品 - ポートフォリオの関連付け) 内の製品に適用されます。起動制約は、ポートフォリオレベルやすべてのポートフォリオにわたる製品に対して適用されません。起動の制約をポートフォリオ内のすべての製品に関連付けるには、起動の制約を各製品に個別に適用する必要があります。

起動制約がない場合、エンドユーザーは各自の IAM 認証情報を使用して製品を起動し、管理する必要があります。そのためには、製品で使用する AWS サービス CloudFormation、および に対するアクセス許可が必要です AWS Service Catalog。起動ロールを使用することにより、エンドユーザーのアクセス権限をその製品に必要な最小限のものに制限することができます。エンドユーザーのアクセス権限の管理の詳細については、「[での Identity and Access Management AWS Service Catalog](controlling_access.md)」を参照してください。

IAM ロールを作成して割り当てるには、以下の IAM 管理者権限が必要です。
+ `iam:CreateRole`
+ `iam:PutRolePolicy`
+ `iam:PassRole`
+ `iam:Get*`
+ `iam:List*`

## 起動ロールの設定
<a name="constraints-launch-role"></a>

起動制約として製品に割り当てる IAM ロールには、以下を使用するためのアクセス権限が必要です。

**Cloudformation 製品用**
+ `arn:aws:iam::aws:policy/AWSCloudFormationFullAccess` CloudFormation マネージドポリシー
+ 製品の AWS CloudFormation テンプレート内のサービス
+ サービス所有の Amazon S3 バケット内の AWS CloudFormation テンプレートへの読み取りアクセス。

**Terraform 製品用**
+ 製品用の Amazon S3 テンプレートのサービス。
+ サービス所有の Amazon S3 バケット内の Amazon S3 テンプレートへの読み取りアクセス。
+ Amazon EC2 インスタンスでの `resource-groups:Tag` タグ付け用 (プロビジョニング操作の実行時に Terraform プロビジョニングエンジンが引き受けます)
+ `resource-groups:CreateGroup` リソースグループのタグ付け (リソースグループを作成してタグを割り当てる AWS Service Catalog ために が引き受ける) 

IAM ロールの信頼ポリシーでは、 AWS Service Catalog がロールを引き受けることを許可する必要があります。以下の手順では、ロールタイプ AWS Service Catalog として を選択すると、信頼ポリシーが自動的に設定されます。コンソールを使用していない場合は、「IAM *ロールで信頼ポリシーを使用する方法」の「ロールを引き受ける AWS サービスの*信頼ポリシーの作成」セクションを参照してください。 [https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/)

**注記**  
`servicecatalog:ProvisionProduct`、`servicecatalog:TerminateProvisionedProduct`、`servicecatalog:UpdateProvisionedProduct` のアクセス権限を起動ロールで割り当てることはできません。「[AWS Service Catalog エンドユーザーにアクセス許可を付与する](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-iamenduser.html)」セクションのインラインポリシーの手順に示されているように、IAM ロールを使用する必要があります。

**注記**  
 AWS Service Catalog コンソールでプロビジョニングされた Cloudformation 製品とリソースを表示するには、エンドユーザーに CloudFormation 読み取りアクセスが必要です。プロビジョニングされた製品とリソースをコンソールで表示しても、起動ロールは**使用されません**。

**起動ロールを作成するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

   Terraform 製品には追加の起動ロール設定が必要です。詳細については、Terraform Open Source 製品入門の「[ステップ 5: 起動ロールの作成](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-launchrole-Terraform)」を参照してください。

1. **[ロール]** を選択します。

1. [**Create New Role (新しいロールを作成)**] を選択します。

1. ロール名を入力し、[**Next Step**] を選択します。

1. [**AWS Service Catalog**] の隣の [**AWS サービスロール**] で、[**選択**] を選択します。

1. [**Attach Policy**] ページで、[**Next Step**] を選択します。

1. ロールを作成するには、[**Create Role**] を選択します。

**ポリシーを新しいロールにアタッチするには**

1. 作成したロールを選択して、[role details] ページを表示します。

1. [**Permissions**] タブを選択して、[**Inline Policies**] セクションを展開します。次に、[**click here**] を選択します。

1. [**Custom Policy**] を選択し、[**Select**] を選択します。

1. ポリシーの名前を入力し、[**Policy Document**] エディタに次のように貼り付けます。

   ```
     
             "Statement":[
         {
            "Effect":"Allow",
            "Action":[
               "s3:GetObject"
            ],
            "Resource":"*",
            "Condition":{
               "StringEquals":{
                  "s3:ExistingObjectTag/servicecatalog:provisioning":"true"
               }
            }
      ]
   }
   ```
**注記**  
起動制約の起動ロールを設定する場合は、`"s3:ExistingObjectTag/servicecatalog:provisioning":"true"` の文字列を使用する必要があります。

1. 製品で使用する追加のサービスごとに、ポリシーに行を追加します。例えば、Amazon Relational Database Service (Amazon RDS) のアクセス許可を追加するには、`Action` リストの最後の行の末尾にカンマを入力し、次の行を追加します。

   ```
   "rds:*"
   ```

1. **[ポリシーを適用]** を選びます。

## 起動制約の適用
<a name="constraints-launch-constraint"></a>

起動ロールを設定したら、起動制約として製品にロールを割り当てます。このアクションは、エンドユーザーが製品を起動するときにロールを引き受け AWS Service Catalog るように に指示します。

**製品にロールに割り当てるには**

1. Service Catalog コンソール ([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)) を開きます。

1. 製品を含むポートフォリオを選択します。

1. **[制約]** タブを選択して、**[制約の作成]** を選択します。

1. [**製品**] から製品を選択し、**[制約タイプ]** の [**起動**] を選択します。**[続行]** を選択します。

1. [**起動の制約**] セクションでは、アカウントから IAM ロールを選択して IAM ロール ARN を入力するか、ロール名を入力できます。

   ロール名を指定すると、アカウントが起動制約を使用する場合、アカウントは IAM ロールのその名前を使用します。このアプローチにより、起動ロールの制約をアカウントに依存しないようにできます。共有アカウントごとに作成するリソースを減らすことができます。
**注記**  
指定されたロール名は、起動制約を作成したアカウントと、この起動制約を使用して製品を起動するユーザーのアカウントに存在している必要があります。

1. IAM ロールを指定したら、[**作成**] を選択します。

## 混同代理人を起動制約に追加する
<a name="constraint-confused-deputy"></a>

AWS Service Catalog は、ロールの引き受けリクエストで実行される APIs の[混乱した代理](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)保護をサポートします。起動制約を追加すると、起動ロールの信頼ポリシーの `sourceAccount` および `sourceArn` の条件を使用して、起動ロールのアクセスを制限できます。これにより、信頼できるソースから起動ロールが呼び出されるようになります。

次の例では、 AWS Service Catalog エンドユーザーはアカウント 111111111111 に属しています。 AWS Service Catalog 管理者が製品の `LaunchConstraint` を作成すると、エンドユーザーは起動ロールの信頼ポリシーに次の条件を指定して、引き受けロールをアカウント 111111111111 に制限できます。

```
"Condition":{
   "ArnLike":{
      "aws:SourceArn":"arn:aws:servicecatalog:us-east-1:111111111111:*"
   },
   "StringEquals":{
      "aws:SourceAccount":"111111111111"
   }
  
}
```

`LaunchConstraint` を使用して製品をプロビジョニングするユーザーは、同じ `AccountId` (111111111111) を持っている必要があります。そうでない場合、操作は `AccessDenied` エラーで失敗し、起動ロールの誤用を防ぐことができます。

次の AWS Service Catalog APIs は、混乱した代理保護のために保護されています。
+ `LaunchConstraint`
+ `ProvisionProduct`
+ `UpdateProvisionedProduct`
+ `TerminateProvisionedProduct`
+ `ExecuteProvisionedProductServiceAction`
+ `CreateProvisionedProductPlan`
+ `ExecuteProvisionedProductPlan`

`sourceArn `の保護は、ARNs `arn:<aws-partition>:servicecatalog:<region>:<accountId>:` AWS Service Catalog のみをサポートします。特定のリソース ARNsはサポートされていません。

## 起動制約の検証
<a name="constraints-launch-test"></a>

が ロール AWS Service Catalog を使用して製品を起動し、製品を正常にプロビジョニングすることを確認するには、 AWS Service Catalog コンソールから製品を起動します。ユーザーに公開する前に制約をテストするには、同じ製品を含むテストポートフォリオを作成し、そのポートフォリオで制約をテストします。

**製品を起動するには**

1.  AWS Service Catalog コンソールのメニューで、**Service Catalog**、**エンドユーザー**を選択します。

1. 製品を選択して、[**製品の詳細**] ページを開きます。[**起動オプション**] テーブルで、ロールの Amazon リソースネーム (ARN) が表示されることを確認します。

1. [**製品の起動**] を選択します。

1. 起動手順を続行して必要な情報を入力します。

1. 製品が正常に起動することを確認します。

# AWS Service Catalog 通知の制限
<a name="constraints-notification"></a>

**注記**  
AWS Service Catalog は、Terraform Open Source または Terraform Cloud 製品の通知制約をサポートしていません。

通知制約は、スタックのイベントに関する通知を受ける Amazon SNS トピックを指定します。

以下の手順を使用して、SNS トピックを作成しそれをサブスクライブします。

**SNS トピックを作成しサブスクリプションするには**

1. Amazon SNS コンソール ([https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home)) を開きます。

1. **[トピックを作成]** を選択します。

1. トピック名を入力し、[**Create topic**] を選択します。

1. **[サブスクリプションの作成]** を選択します。

1. [**Protocol**] で [**Email**] を選択します。[**Endpoint**] では、通知を受信するために使用できる E メールアドレスを入力します。**[サブスクリプションの作成]** を選択します。

1. `AWS Notification - Subscription Confirmation` という件名の確認用 E メールを受信します。E メールを開き、指示に従ってサブスクリプションを完了します。

次の手順を使用して、前の手順で作成された SNS トピックを使用する通知の制約を適用します。

**製品に通知の制約を適用するには**

1. Service Catalog コンソール ([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)) を開きます。

1. 製品を含むポートフォリオを選択します。

1. **[制約]** を展開し、**[制約を追加]** を選択します。

1. [**製品**] で製品を選択し、[**制約タイプ**] を [**通知**] に設定します。**[続行]** を選択します。

1. [**Choose a topic from your account**] を選択して、[**Topic Name**] から作成した SNS トピックを選択します。

1. **[送信]** を選択します。

# AWS Service Catalog タグ更新の制限
<a name="constraints-resourceupdate"></a>

**注記**  
AWS Service Catalog は、Terraform オープンソース製品のタグ更新制約をサポートしていません。

タグ更新の制約により、 AWS Service Catalog 管理者はプロビジョニング済み製品に関連付けられたリソースのタグをエンドユーザーが更新することを許可または禁止できます。タグの更新が許可されている場合、 製品またはポートフォリオに関連付けられた新しいタグは、プロビジョニング済み製品の更新中にプロビジョニングされたリソースに適用されます。

**製品に対するタグの更新を有効にするには**

1. Service Catalog コンソール ([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)) を開きます。

1. 更新する製品を含むポートフォリオを選択します。

1. [**制約**] タブを選択して、[**制約の追加**] を選択します。

1. [**制約タイプ**] で、[**タグの更新**] を選択します。

1. [**製品**] から製品を選択して、[**続行**] を選択します。

1. [**タグの更新ページ**] で、[**タグの更新を有効にする**] を選択します。

1. **[送信]** を選択します。

# AWS Service Catalog スタックセットの制限
<a name="constraints-stackset"></a>

**注記**  
AWS Service Catalog は、Terraform オープンソース製品のスタックセット制約をサポートしていません。
AutoTags は現在、 CloudFormation StackSets ではサポートされていません。

スタックセットの制約では、 CloudFormation StackSets を使用して製品のデプロイオプションを設定できます。製品の起動で複数のアカウントおよびリージョンを指定できます。エンドユーザーは、これらのアカウントを管理し、製品のデプロイ場所とデプロイ順序を決定できます。

**製品にスタックセットの制約を適用するには**

1. Service Catalog コンソール ([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)) を開きます。

1. 必要な製品を含むポートフォリオを選択します。

1. [**制約**] タブを選択して、[**制約の作成**] を選択します。

1. [**製品**] で、製品を選択します。[**制約タイプ]** で、[**スタックセット**] を選択します。

1. スタックセットの制約のアカウント、リージョン、およびアクセス許可を設定します。
   + [**アカウント設定**] で、製品を作成するアカウントを指定します。
   + [**リージョンの設定**] で、製品をデプロイする地理的リージョンと、それらの製品をそれらのリージョンにデプロイする順序を選択します。
   + [**Permissions**] で、ターゲットアカウントを管理するために使用する IAM StackSet 管理者ロールを選択します。ロールを選択しない場合、StackSets はデフォルトの ARN を使用します。[スタックセットのアクセス許可の設定の詳細については、こちらを参照してください](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html)。

1. **[作成]** を選択します。

# AWS Service Catalog テンプレートの制限
<a name="catalogs_constraints_template-constraints"></a>

**注記**  
AWS Service Catalog は、Terraform Open Source または Terraform Cloud 製品のテンプレート制約をサポートしていません。

ユーザーが製品を起動するときに使用可能なオプションを制限するには、テンプレート制約を適用します。テンプレート制約を適用し、エンドユーザーが組織のコンプライアンス要件に違反することなく製品を使用できるようにします。 AWS Service Catalog ポートフォリオ内の製品にテンプレート制約を適用します。テンプレート制約を定義するには、ポートフォリオに 1 つ以上の製品が含まれている必要があります。

テンプレート制約は、製品の基盤となる CloudFormation テンプレートで定義されているパラメータの許容値を絞り込む 1 つ以上のルールで構成されます。 CloudFormation テンプレートのパラメータでは、スタックを作成するときにユーザーが指定できる値のセットを定義します。たとえば、パラメータで、EC2 インスタンスを含むスタックを起動するときにユーザーが選択できるさまざまなインスタンスタイプを定義します。

テンプレートのパラメータ値のセットが、ポートフォリオの対象者に対して広範囲すぎる場合、製品を起動するときにユーザーが選択できる値を制限するようテンプレート制約を定義できます。たとえば、テンプレートパラメータに、スモールインスタンスタイプ (`t2.micro` や `t2.small` など) のみを使用するユーザーにとって大きすぎる EC2 インスタンスタイプが含まれている場合は、エンドユーザーが選択できるインスタンスタイプを制限するテンプレート制約を追加できます。 CloudFormation テンプレートパラメータの詳細については、 *CloudFormation ユーザーガイド*の[「パラメータ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html)」を参照してください。

テンプレート制約はポートフォリオ内にバインドされます。1 つのポートフォリオで製品にテンプレート制約を適用し、別のポートフォリオに製品を含める場合、制約は 2 番目のポートフォリオの製品には適用されません。

既にユーザーと共有されている製品にテンプレート制約を適用する場合、制約は後続のすべての製品の起動と、ポートフォリオ内の製品のすべてのバージョンに対してすぐに有効になります。

テンプレート制約ルールを定義するには、ルールエディタを使用するか、 AWS Service Catalog 管理者コンソールでルールを JSON テキストとして記述します。構文と例を含むルールの詳細については、「[テンプレート制約のルール](reference-template_constraint_rules.md)」を参照してください。

ユーザーに公開する前に制約をテストするには、同じ製品を含むテストポートフォリオを作成し、そのポートフォリオで制約をテストします。

**製品にテンプレート制約を適用するには**

1. Service Catalog コンソール ([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)) を開きます。

1. [**ポートフォリオ**] ページで、テンプレート制約を適用する製品を含むポートフォリオを選択します。

1. [**制約**] セクションを展開し、[**制約の追加**] を選択します。

1. [**商品とタイプの選択**] ウィンドウの [**製品**] で、テンプレート制約を定義する製品を選択します。次に、[**制約タイプ**]で、[**テンプレート**] を選択します。**[続行]** を選択します。

1. [**テンプレート制約ビルダー**] ページで、JSON エディタまたはルールビルダーのインターフェイスを使用して制約ルールを編集します。
   + ルールの JSON コードを編集するには、[**制約テキストエディタ**] タブを選択します。このタブには、使用を開始するためにいくつかの例が含まれています。

     ルールビルダーのインターフェイスを使用してルールを構築するには、[**ルールビルダー**] タブを選択します。このタブで、製品向けにテンプレートで指定される任意のパラメータを選択し、そのパラメータで許可される値を指定できます。パラメータの種類に応じて、チェックリストで項目を選択する、数を指定する、またはカンマ区切りリストで値のセットを指定することで、許可される値を指定します。

     ルールの構築を終了したら、[**ルールの追加**] を選択します。[**ルールビルダー**] タブのテーブルにルールが表示されます。JSON 出力を確認して編集するには、[**制約テキストビルダー**] タブを選択します。

1. 制約のルールの編集を終了したら、[**送信**] を選択します。制約を表示するには、ポートフォリオの詳細ページに移動し、[**制約**] を展開します。

# テンプレート制約のルール
<a name="reference-template_constraint_rules"></a>

 AWS Service Catalog ポートフォリオでテンプレート制約を定義するルールでは、エンドユーザーがテンプレートを使用できるタイミングと、使用しようとしている製品の作成に使用される CloudFormation テンプレートで宣言されたパラメータに指定できる値について説明します。ルールは、エンドユーザーが意図せずに不適切な値を指定することを防ぐために役立ちます。たとえば、エンドユーザーが特定の VPC で有効なサブネットを指定したか、テスト環境に`m1.small`インスタンスタイプを使用したかを検証するルールを追加できます。 は、製品のリソースを作成する前に、ルール CloudFormation を使用してパラメータ値を検証します。

各ルールは、ルール条件 (オプション) とアサーション (必須) の 2 つのプロパティで構成されます。ルール条件では、ルールがいつ有効になるかを決定します。アサーションでは、特定のパラメータにユーザーが指定できる値を示します。ルール条件を定義しない場合、ルールのアサーションが常に有効になります。ルール条件とアサーションを定義するには、ルール固有の組み込み関数を使用します。これは、テンプレートの `Rules` セクションでのみ使用できる関数です。関数をネストすることができますが、ルール条件またはアサーションの最終結果は、true または false である必要があります。

例として、`Parameters` セクションで VPC とサブネットパラメータを宣言したとします。特定のサブネットが特定の VPC 内にあることを検証するルールを作成できます。したがって、ユーザーが VPC を指定すると、 はアサーション CloudFormation を評価して、スタックを作成または更新する前にサブネットパラメータ値がその VPC にあるかどうかを確認します。パラメータ値が無効の場合、 CloudFormation すぐにスタックの作成または更新に失敗します。ユーザーが VPC を指定しない場合、サブネットパラメータ値はチェック CloudFormation されません。

## 構文
<a name="template-constraint-rules-syntax"></a>

テンプレートの `Rules` セクションは、キーの名前 `Rules` とそれに続く単一のコロンで構成されます。ルールの宣言全体を中括弧で囲みます。複数のルールを宣言する場合は、カンマで区切ります。ルールごとに、引用符で囲んだ論理名、単一のコロン、およびルール条件とアサーションを囲む中括弧から成る形式で宣言します。

ルールには `RuleCondition` プロパティを含めることができ、`Assertions` プロパティを含める必要があります。ルールごとに、1 つのルール条件のみを定義できます。`Assertions` プロパティ内に 1 つ以上のアサーションを定義できます。次の擬似テンプレートに示すように、ルール固有の組み込み関数を使用してルール条件とアサーションを定義します。

```
"Rules":{
   "Rule01":{
      "RuleCondition":{
         "Rule-specific intrinsic function"
      },
      "Assertions":[
         {
            "Assert":{
               "Rule-specific intrinsic function"
            },
            "AssertDescription":"Information about this assert"
         },
         {
            "Assert":{
               "Rule-specific intrinsic function"
            },
            "AssertDescription":"Information about this assert"
         }
      ]
   },
   "Rule02":{
      "Assertions":[
         {
            "Assert":{
               "Rule-specific intrinsic function"
            },
            "AssertDescription":"Information about this assert"
         }
      ]
   }
}
```

擬似テンプレートには、`Rules` および `Rule01` という 2 つのルールを含む `Rule02` セクションが表示されます。`Rule01`​ には、ルール条件と 2 つのアサーションが含まれます。ルール条件の関数が true に評価される場合、各アサーションの両方の関数が評価および適用されます。ルール条件が false の場合、ルールは有効になりません。`Rule02` にはルール条件がないため、常に有効になります。つまり、1 つのアサーションが常に評価および適用されます。

ルール条件とアサーションを定義するルール固有の組み込み関数については、「AWS CloudFormation ユーザーガイド」の「[AWS ルール関数](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-rules.html)」を参照してください。

## 例: パラメータ値の条件付きの確認
<a name="template-constraint-rules-example"></a>

次の 2 つのルールでは、`InstanceType` パラメータの値を確認します。Environment パラメータの値 (`test` または `prod`) に応じて、ユーザーは `m1.small` パラメータに対して `m1.large` または `InstanceType` を指定する必要があります。`InstanceType` および `Environment` パラメータは、同じテンプレートの `Parameters` セクションで宣言する必要があります。

```
"Rules" : {
  "testInstanceType" : {
    "RuleCondition" : {"Fn::Equals":[{"Ref":"Environment"}, "test"]},
    "Assertions" : [
      {
        "Assert" :  { "Fn::Contains" : [ ["m1.small"], {"Ref" : "InstanceType"} ] },
        "AssertDescription" : "For the test environment, the instance type must be m1.small"
      }
    ]
  },
  "prodInstanceType" : {
    "RuleCondition" : {"Fn::Equals":[{"Ref":"Environment"}, "prod"]},
    "Assertions" : [
      {
        "Assert" :  { "Fn::Contains" : [ ["m1.large"], {"Ref" : "InstanceType"} ] },
        "AssertDescription" : "For the prod environment, the instance type must be m1.large"
      }
    ]
  }
}
```

# AWS Service Catalog サービスアクション
<a name="using-service-actions"></a>

**注記**  
AWS Service Catalog は、Terraform Open Source または Terraform Cloud 製品のサービスアクションをサポートしていません。

AWS Service Catalog を使用すると、コンプライアンスとセキュリティ対策を遵守しながら、管理メンテナンスとエンドユーザートレーニングを減らすことができます。サービスアクションを使用すると、管理者は、 AWS Service Catalogでの運用タスクの実行、問題のトラブルシューティング、承認されたコマンドの実行、アクセス許可のリクエストをエンドユーザーに許可できます。[AWS Systems Manager ドキュメント](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-ssm-docs.html)を使用して、サービスアクションを定義します。[AWS Systems Manager ドキュメント](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-ssm-docs.html)は、Amazon EC2 の停止や再起動などの AWS ベストプラクティスを実装する事前定義されたアクションへのアクセスを提供し、カスタムアクションを定義することもできます。

このチュートリアルでは、Amazon EC2 インスタンスの再起動をエンドユーザーに許可します。必要なアクセス許可を追加し、サービスアクションを定義して製品に関連付けたら、プロビジョニングされた製品でそのアクションを使用して、エンドユーザーのエクスペリエンスをテストします。

## 前提条件
<a name="service-actions-prerequisites"></a>

このチュートリアルでは、完全な AWS 管理者権限があり、すでに に精通しており AWS Service Catalog、製品、ポートフォリオ、およびユーザーのベースセットが既にあることを前提としています。このチュートリアルを使用する前に AWS Service Catalog、[セットアップ](setup.md)タスクと [開始方法](getstarted.md)タスクを完了してください。

**Topics**
+ [前提条件](#service-actions-prerequisites)
+ [ステップ 1: エンドユーザーのアクセス許可を設定する](#service-actions-configure-end-user-permissions)
+ [ステップ 2: サービスアクションを作成する](#service-actions-create-new-service-action)
+ [ステップ 3: サービスアクションを製品バージョンに関連付ける](#service-actions-associate-with-product-version)
+ [ステップ 4: エンドユーザーのエクスペリエンスをテストする](#service-actions-test-end-user-experience)
+ [ステップ 5: でサービスアクションを管理する AWS CloudFormation](#service-actions-cloudformation)
+ [ステップ 6: トラブルシューティング](#service-actions-troubleshooting)

## ステップ 1: エンドユーザーのアクセス許可を設定する
<a name="service-actions-configure-end-user-permissions"></a>

エンドユーザーは、特定のサービスアクションを表示および実行するアクセス許可が必要です。この例では、エンドユーザーは AWS Service Catalog サービスアクション機能にアクセスし、Amazon EC2 の再起動を実行するためのアクセス許可が必要です。

**アクセス許可を更新するには**

1. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) で AWS Identity and Access Management (IAM) コンソールを開きます。

1. メニューからユーザーグループを見つけます。

1. エンドユーザーが AWS Service Catalog リソースへのアクセスに使用するグループを選択します。この例では、エンドユーザーグループを選択します。独自の実装では、該当するエンドユーザーによって使用されるグループを選択します。

1. グループの詳細ページの [**アクセス許可**] タブで、新しいポリシーを作成するか、既存のポリシーを編集します。この例では、グループの AWS Service Catalog プロビジョニングおよび終了アクセス許可用に作成されたカスタムポリシーを選択して、既存のポリシーにアクセス許可を追加します。

1. [**ポリシー**] ページで、[**ポリシーの編集**] を選択して必要なアクセス許可を追加します。ビジュアルエディタまたは JSON エディタを使用してポリシーを編集できます。この例では、JSON エディタを使用してアクセス許可を追加します。このチュートリアルでは、以下のアクセス許可をポリシーに追加します。

------
#### [ JSON ]

****  

   ```
   {
   	"Version":"2012-10-17",		 	 	 
   	"Statement": [
   		{
   			"Sid": "Stmt1536341175150",
   			"Action": [
   				"servicecatalog:ListServiceActionsForProvisioningArtifact",
   				"servicecatalog:ExecuteprovisionedProductServiceAction",
   				"ssm:DescribeDocument",
   				"ssm:GetAutomationExecution",
   				"ssm:StartAutomationExecution",
   				"ssm:StopAutomationExecution",
   				"cloudformation:ListStackResources",
   				"ec2:DescribeInstanceStatus",
   				"ec2:StartInstances",
   				"ec2:StopInstances"
   			],
   			"Effect": "Allow",
   			"Resource": "*"
   		}
   	]
   }
   ```

------

1. ポリシーを編集した後、ポリシーの変更を確認して承認します。これで、エンドユーザーグループのユーザーに、 AWS Service Catalogで Amazon EC2 の再起動アクションを実行するアクセス許可が付与されました。

## ステップ 2: サービスアクションを作成する
<a name="service-actions-create-new-service-action"></a>

次は、Amazon EC2 インスタンスを再起動するサービスアクションを作成します。

1. [https://console.aws.amazon.com/sc/](https://console.aws.amazon.com/servicecatalog/) で AWS Service Catalog コンソールを開きます。

1. メニューの [**サービスアクション**] を選択します。

1. [**サービスアクション**] ページで、[**アクションの作成**] を選択します。

1. **アクションの作成**ページで、サービスアクションを定義する AWS Systems Manager ドキュメントを選択します。Amazon EC2 インスタンスの再起動アクションは AWS Systems Manager ドキュメントによって定義されているため、ドロップダウンメニューのデフォルトのオプションである [**Amazon ドキュメント**] をそのまま使用します。

1. **AWS-RestartEC2Instance** アクションを検索して選択します。

1. お客様の環境とチームに合ったアクションの名前と説明を指定します。この説明はエンドユーザーに表示されるため、アクションの内容を理解するのに役立つものを選択してください。

1. [**Parameter and target configuration**] で、アクションのターゲットとなる SSM ドキュメントパラメータ ([**インスタンス ID**] など) を選択し、パラメータのターゲットを選択します。パラメータを追加するには、[**パラメータの追加**] を選択します。

1. **[許可]** で、ロールを選択します。この例では、デフォルトのアクセス許可を使用します。他のアクセス許可の設定も可能で、このページで定義します。

1. 設定を確認したら、[**アクションの作成**] を選択します。

1. 次のページでは、アクションが作成されて使用可能になると確認メッセージが表示されます。

## ステップ 3: サービスアクションを製品バージョンに関連付ける
<a name="service-actions-associate-with-product-version"></a>

アクションを定義したら、そのアクションを製品に関連付ける必要があります。

1. **[サービスアクション]** ページで、**[AWS-RestartEC2instance]** を選択して、**[アソシエイトアクション]** の順に選択します。

1. [**アクションの関連付け**] ページで、エンドユーザーによってサービスアクションが実行されるようにする製品を選択します。この例では、[**Linux Desktop**] を選択します。

1. 製品バージョンを選択します。1 番上のチェックボックスを使用して、すべてのバージョンを選択できます。

1. [**アクションの関連付け**] を選択します。

1. 次のページで、確認メッセージが表示されます。

これで、 AWS Service Catalogでサービスアクションが作成されました。このチュートリアルの次のステップは、エンドユーザーとしてサービスアクションを使用することです。

## ステップ 4: エンドユーザーのエクスペリエンスをテストする
<a name="service-actions-test-end-user-experience"></a>

エンドユーザーはプロビジョニングされた製品に対してサービスアクションを実行できます。このチュートリアルの目的上、エンドユーザーには少なくとも 1 つのプロビジョニングされた製品が必要です。プロビジョニングされた製品は、前のステップでサービスアクションに関連付けた製品バージョンから起動する必要があります。

**エンドユーザーとしてサービスアクションにアクセスするには**

1. エンドユーザーとして AWS Service Catalog コンソールにログインします。

1.  AWS Service Catalog ダッシュボードのナビゲーションペインで、**プロビジョニング済み製品リスト**を選択します。このリストには、エンドユーザーのアカウント用にプロビジョンされた製品が表示されます。

1. [**プロビジョニングされた製品のリスト**] ページで、プロビジョニングされたインスタンスを選択します。

1. **[プロビジョニングされた製品の詳細]** ページで、右上の **[アクション]** を選択してから、**[AWS-RestartEC2instance]** アクションを選択します。

1. カスタムアクションを実行することを確認します。アクションが送信されたという確認メッセージが表示されます。

## ステップ 5: でサービスアクションを管理する AWS CloudFormation
<a name="service-actions-cloudformation"></a>

 サービスアクションとその AWS CloudFormation リソースとの関連付けを作成できます。詳細については、AWS CloudFormation ユーザーガイドで次を参照してください。
+  [AWS::ServiceCatalog::CloudFormationProduct ProvisioningArtifactProperties](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationproduct-provisioningartifactproperties.html) 
+  [AWS::ServiceCatalog::ServiceActionAssociation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-serviceactionassociation.html) 

**注記**  
 CloudFormation リソースとサービスアクションの関連付けを管理する場合は、 AWS Command Line Interface または を使用してサービスアクションを追加または削除しないでください AWS マネジメントコンソール。スタックの更新を実行すると、 CloudFormation の外部で行われたサービスアクションへの変更はすべて置き換えられます。

## ステップ 6: トラブルシューティング
<a name="service-actions-troubleshooting"></a>

サービスアクションの実行が失敗した場合、[**プロビジョニング済み製品**] ページのサービスアクション実行イベントの [**出力**] セクションにエラーメッセージが表示されます。以下に、よくあるエラーメッセージの説明を示します。

**注記**  
エラーメッセージの正確なテキストは変更される可能性があるため、いずれの種類の自動化プロセスでも使用しないでください。

 **内部エラー**

AWS Service Catalog で内部エラーが発生しました。後でもう一度お試しください。問題が解決しない場合は、カスタマーサポートまでお問い合わせください。

 **StartAutomationExecution オペレーションの呼び出し時にエラーが発生しました (ThrottlingException)**

サービスアクションの実行が SSM などのバックエンドサービスによって制限されました。

 **ロールの引き受け中にアクセスが拒否されました**

 AWS Service Catalog は、サービスアクション定義で指定されたロールを引き受けることができませんでした。*servicecatalog.amazonaws.com* プリンシパル、または *servicecatalog.us-east-1.amazonaws.com* などのリージョン別プリンシパルがロールの信頼ポリシーで許可リストに登録されていることを確認してください。

 **[StartAutomationExecution オペレーションの呼び出し時にエラーが発生しました (AccessDeniedException): ユーザーはリソースに対する ssm:StartAutomationExecution の実行を承認されていません**]

サービスアクション定義で指定されたロールに、ssm:StartAutomationExecution を呼び出すアクセス許可がありません。ロールに適切な SSM アクセス許可があることを確認してください。

 **プロビジョニング済み製品で *TargetType* タイプのリソースが見つかりません**

プロビジョニング済み製品には、 AWS::EC2::Instance など、SSM ドキュメントで指定されたターゲットタイプに一致するリソースは含まれていません。プロビジョニングされた製品でこれらのリソースを確認するか、ドキュメントが正しいことを確認してください。

 **その名前のドキュメントは存在しません**

サービスアクション定義で指定されたドキュメントが存在しません。

 **SSM オートメーションドキュメントの定義の取得に失敗しました**

AWS Service Catalog は、指定されたドキュメントを記述しようとしたときに SSM から不明な例外を検出しました。

 **ロールの認証情報の取得に失敗しました**

AWS Service Catalog は、指定されたロールを引き受けるときに不明なエラーが発生しました。

 **パラメータには *\$1validValue1\$1, \$1validValue2\$1* に無い「*InvalidValue*」の値があります**

 SSM に渡されたパラメータ値がドキュメントの許容値のリストにありません。渡されたパラメータが有効であることを確認し、再試行してください。

 **パラメータのタイプに誤りがあります。*ParameterName* に提供された値は有効な文字列ではありません。**

SSM に渡されたパラメータの値がドキュメントのこのタイプでは無効です。

 **パラメータがサービスアクション定義で定義されていません**

サービスアクション定義で定義 AWS Service Catalog されていない パラメータが に渡されました。使用できるのは、サービスアクション定義で定義されたパラメータのみです。

 **アクションの実行中またはキャンセル中にステップが失敗します。*Error message.* 診断の詳細については、「オートメーションサービストラブルシューティングガイド」を参照してください。**

 SSM オートメーションドキュメントのステップが失敗しました。さらにトラブルシューティングするには、メッセージ内のエラーを参照してください。

 **パラメーターの *InvalidResourceId* の値は、プロビジョニング済み製品にはないため、許可されません。**

プロビジョニングされた製品にないリソースに対するアクションをユーザーがリクエストしました。

 **SSM ドキュメントドキュメントに TargetType が定義されていません**

サービスアクションでは、SSM オートメーションドキュメントに TargetType を定義する必要があります。SSM オートメーションドキュメントを確認してください。

# ポートフォリオへの AWS Marketplace 製品の追加
<a name="catalogs_marketplace-products"></a>

ポートフォリオに AWS Marketplace 製品を追加して、それらの製品をエンドユーザーが AWS Service Catalog 利用できるようにします。

AWS Marketplace は、多数のソフトウェアとサービスを検索、サブスクライブし、すぐに使用を開始できるオンラインストアです。の製品タイプ AWS Marketplace には、データベース、アプリケーションサーバー、テストツール、モニタリングツール、コンテンツ管理ツール、ビジネスインテリジェンスソフトウェアなどがあります。 AWS Marketplace は で入手できます[https://aws.amazon.com/marketplace](https://aws.amazon.com/marketplace)。Software as a Service (SaaS) 製品を から AWS Marketplace に追加することはできません AWS Service Catalog。

テンプレートを使用して AWS Marketplace CloudFormation 製品をコピーし、その製品をポートフォリオに追加することで AWS Service Catalog、製品を AWS Service Catalog エンドユーザーに配布します。

**注記**  
AWS Service Catalog は、Terraform オープンソースまたは Terraform Cloud AWS Marketplace 製品テンプレートを使用した AWS Service Catalog エンドユーザーへの製品の配布をサポートしていません。

AWS Marketplace は AWS Service Catalog 、直接サポートするか、手動オプションを使用して製品をサブスクライブおよび追加します。特別に設計された機能を使用して製品を追加することをお勧めします AWS Service Catalog。

## を使用した AWS Marketplace 製品の管理 AWS Service Catalog
<a name="catalogs_marketplace-sc"></a>

カスタムインターフェイス AWS Service Catalog を使用して、サブスクライブした AWS Marketplace 製品を に直接追加できます。[AWS Marketplace](https://aws.amazon.com/marketplace) で、[**サービスカタログ**] を選択します。詳細については、AWS Marketplace ヘルプと FAQ の「[AWS Service Catalogへの製品のコピー](https://aws.amazon.com/marketplace/help/buyer-copy-product-to-SC?ref=help_ln_sibling)」を参照してください。

## AWS Marketplace 製品の手動管理と追加
<a name="catalogs_marketplace-manual"></a>

 AWS Marketplace 製品をサブスクライブし、その製品を CloudFormation テンプレートで定義して、テンプレートを AWS Service Catalog ポートフォリオに追加するには、次の手順を実行します。

**AWS Marketplace 製品をサブスクライブするには**

1.  AWS Marketplace 「」の「」を参照してください[https://aws.amazon.com/marketplace](https://aws.amazon.com/marketplace)。

1. 製品を参照するか、 AWS Service Catalog ポートフォリオに追加する製品を検索します。製品を選択して、製品の詳細ページを表示します。

1. [**続ける**] を選択して受理ページを表示し、[**手動で起動**] タブを選択します。

   フルフィルメントページの情報には、サポートされている Amazon Elastic Compute Cloud (Amazon EC2) インスタンスタイプ、サポートされている AWS リージョン、および製品が各 AWS リージョンで使用する Amazon マシンイメージ (AMI) ID が含まれます。選択内容によってはコストに影響する場合もあります。この情報を使用して、後のステップで CloudFormation テンプレートをカスタマイズします。

1. 製品をサブスクライブするには、[**Accept Terms**] を選択します。

   製品をサブスクライブしたら、**ソフトウェア**を選択してから製品を選択することで、 AWS Marketplace の製品フルフィルメントページの情報にいつでもアクセスできます。

**CloudFormation テンプレートで AWS Marketplace 製品を定義するには**

次のステップを完了するには、 CloudFormation サンプルテンプレートの 1 つを開始点として使用し、製品を表すようにテンプレートをカスタマイズします AWS Marketplace 。サンプルテンプレートにアクセスするには、*AWS CloudFormation ユーザーガイド*の「[サンプルテンプレート](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-sample-templates.html)」を参照してください。

1. * CloudFormation ユーザーガイド*のサンプルテンプレートページで、製品の AWS リージョンを選択します。 AWS リージョンは、 AWS Marketplace 製品でサポートされている必要があります。サポートされているリージョンは、 AWS Marketplaceの製品受理のページで表示できます。

1. リージョンに適したサービスサンプルテンプレートのリストを表示するには、[**サービス**] リンクを選択します。

1. 開始点として、ニーズに適している任意のサンプルを使用できます。この手順のステップでは、[**Amazon EC2 instance in a security group**] テンプレートを使用します。サンプルテンプレートを表示するには、[**View**] を選択し、テンプレートのコピーをローカルに保存して、編集できるようにします。ローカルファイルには、`.template` 拡張子が必要です。

1. テキストエディタでテンプレートを開きます。

1. テンプレートの上部の説明をカスタマイズします。ダッシュボードの外観は以下の例のようになっています。

   `"Description": "Launches a LAMP stack from AWS Marketplace",`

1. `InstanceType` パラメータをカスタマイズし、製品でサポートされる EC2 インスタンスタイプのみを含むようにします。サポートされていない EC2 インスタンスタイプがテンプレートに含まれる場合、製品はエンドユーザーに対して起動しません。

   1. の製品フルフィルメントページで AWS Marketplace、サポートされている EC2 インスタンスタイプを**料金詳細**セクションで表示します。  
![\[の製品フルフィルメントページの料金詳細セクションには、サポートされている EC2 インスタンスタイプ AWS Marketplace が表示されます。\]](http://docs.aws.amazon.com/ja_jp/servicecatalog/latest/adminguide/images/ec2-ondemand.png)

   1. テンプレートで、デフォルトのインスタンスタイプを、サポートされている任意の EC2 インスタンスタイプに変更します。

   1. `AllowedValues` リストを編集し、製品でサポートされている EC2 インスタンスタイプのみを含むようにします。

   1. エンドユーザーが `AllowedValues` リストから製品を起動するときに、使用しないようにする EC2 インスタンスタイプを削除します。

   `InstanceType` パラメータの編集を終了した例を次に示します。

   ```
       "InstanceType" : {
         "Description" : "EC2 instance type",
         "Type" : "String",
         "Default" : "m1.small",
         "AllowedValues" : [ "t1.micro", "m1.small", "m1.medium", "m1.large", "m1.xlarge", "m2.xlarge", "m2.2xlarge", "m2.4xlarge", "c1.medium", "c1.xlarge", "c3.large", "c3.large", "c3.xlarge", "c3.xlarge", "c3.4xlarge", "c3.8xlarge" ],
         "ConstraintDescription" : "Must be a valid EC2 instance type."
       },
   ```

1. テンプレートの `Mappings` セクションで、サポートされる EC2 インスタンスタイプとアーキテクチャのみが含まれるように、`AWSInstanceType2Arch` マッピングを編集します。

   1. `AllowedValues` パラメータの `InstanceType` リストに含まれていないすべての EC2 インスタンスタイプを削除して、マッピングのリストを編集します。

   1. 各 EC2 インスタンスタイプの `Arch` の値を編集し、製品でサポートされるアーキテクチャータイプとなるようにします。有効な値は、`PV64`、`HVM64`、`HVMG2` です。製品でサポートされるアーキテクチャの詳細については、「 AWS Marketplace」のサポート製品詳細ページを参照してください。EC2 インスタンスファミリーでサポートされるアーキテクチャについては、「[Amazon Linux AMI インスタンスタイプのマトリックス](https://aws.amazon.com/amazon-linux-ami/instance-type-matrix/)」を参照してください。

   `AWSInstanceType2Arch` マッピングの編集が完了した例を次に示します。

   ```
       "AWSInstanceType2Arch" : {
         "t1.micro"    : { "Arch" : "PV64"  },
         "m1.small"    : { "Arch" : "PV64"  },
         "m1.medium"   : { "Arch" : "PV64"  },
         "m1.large"    : { "Arch" : "PV64"  },
         "m1.xlarge"   : { "Arch" : "PV64"  },
         "m2.xlarge"   : { "Arch" : "PV64"  },
         "m2.2xlarge"  : { "Arch" : "PV64"  },
         "m2.4xlarge"  : { "Arch" : "PV64"  },
         "c1.medium"   : { "Arch" : "PV64"  },
         "c1.xlarge"   : { "Arch" : "PV64"  },
         "c3.large"    : { "Arch" : "PV64"  },
         "c3.xlarge"   : { "Arch" : "PV64"  },
         "c3.2xlarge"  : { "Arch" : "PV64"  },
         "c3.4xlarge"  : { "Arch" : "PV64"  },
         "c3.8xlarge"  : { "Arch" : "PV64"  }
       }
   ,
   ```

1. テンプレートの `Mappings`セクションで、`AWSRegionArch2AMI`マッピングを編集して、各 AWS リージョンを製品の対応するアーキテクチャと AMI ID に関連付けます。

   1. の製品フルフィルメントページで AWS Marketplace、次の例のように、製品が各 AWS リージョンに使用する AMI ID を表示します。

         
![\[AWS Marketplaceの製品受理ページのリージョンおよび AMI ID の表。\]](http://docs.aws.amazon.com/ja_jp/servicecatalog/latest/adminguide/images/sc-marketplace_ami_ids-console.png)

   1. テンプレートで、サポートしていない AWS リージョンのマッピングを削除します。

   1. 各リージョンのマッピングを編集し、サポートされないアーキテクチャ (`PV64`、`HVM64`、または `HVMG2`) と、関連する AMI ID を削除します。

   1. 残りの AWS リージョンとアーキテクチャマッピングごとに、 の製品詳細ページから対応する AMI ID を指定します AWS Marketplace。

   `AWSRegionArch2AMI` マッピングの編集が完了したコード例を次に示します。

   ```
       "AWSRegionArch2AMI" : {
         "us-east-1"        : {"PV64" : "ami-nnnnnnnn"},
         "us-west-2"        : {"PV64" : "ami-nnnnnnnn"},
         "us-west-1"        : {"PV64" : "ami-nnnnnnnn"},
         "eu-west-1"        : {"PV64" : "ami-nnnnnnnn"},
         "eu-central-1"     : {"PV64" : "ami-nnnnnnnn"},
         "ap-northeast-1"   : {"PV64" : "ami-nnnnnnnn"},
         "ap-southeast-1"   : {"PV64" : "ami-nnnnnnnn"},
         "ap-southeast-2"   : {"PV64" : "ami-nnnnnnnn"},
         "sa-east-1"        : {"PV64" : "ami-nnnnnnnn"}
       }
   ```

   テンプレートを使用して、製品を AWS Service Catalog ポートフォリオに追加できるようになりました。追加の変更が必要な場合は、テンプレートの詳細について「[CloudFormation テンプレートの使用](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)」を参照してください。

**AWS Marketplace 製品を AWS Service Catalog ポートフォリオに追加するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/) の AWS Service Catalog 管理者コンソールに移動します。

1. [**ポートフォリオ**] ページで、 AWS Marketplace 製品を追加するポートフォリオを選択します。

1. ポートフォリオの詳細ページで、[**新製品の更新**] を選択します。

1. リクエストされた製品とサポートの詳細を入力します。

1. [**Version details**] ページで、[**Upload a template file**]、[**Browse**]、テンプレートファイルの順に選択します。

1. バージョンタイトルと説明を入力します。

1. [**次へ**] を選択します。

1. [**Review**] ページで、概要が正確であることを確認し、[**確認とアップロード**] を選択します。製品がポートフォリオに追加されます。これで、ポートフォリオにアクセスするエンドユーザーが製品を使用できるようになりました。

# CloudFormation StackSets の使用
<a name="using-stacksets"></a>

**注記**  
AutoTags は現在、 CloudFormation StackSets ではサポートされていません。

 CloudFormation StackSets を使用して、複数の AWS リージョン および アカウントで AWS Service Catalog 製品を起動できます。 AWS リージョン内で製品を連続してデプロイする順序を指定することができます。製品はアカウント間で並列にデプロイされます。ユーザーは起動時に、障害耐性と、同時にデプロイするアカウントの最大数を指定できます。詳細については、[CloudFormation StackSets の使用](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html)」を参照してください。

## スタックセットとスタックインスタンス
<a name="stacksets-vs-stack-instances"></a>

*スタックセット*を使用すると、単一の CloudFormation テンプレートを使用して、リージョン間で AWS AWS アカウントにスタックを作成できます。

スタックインスタンスは、 AWS リージョン内のターゲットアカウントのスタックのことであり、1 つのスタックセットのみと関連付けられます。

詳細については、「[StackSets の概念](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html)」を参照してください。

## スタックセットの制約
<a name="stackset-constraints"></a>

では AWS Service Catalog、スタックセット制約を使用して製品のデプロイオプションを設定できます。

 AWS Service Catalog は、 AWS GovCloud (米国西部) と AWS GovCloud (US) Regions AWS GovCloud (米国東部) の 2 つの製品のスタックセット制約をサポートしています。

詳細については、「[AWS Service Catalog スタックセットの制約](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-stackset.html)」を参照してください。

# 予算の管理
<a name="catalogs_budgets"></a>

 AWS Budgets を使用して、サービスのコストと使用状況を追跡できます AWS Service Catalog。予算を AWS Service Catalog 製品やポートフォリオに関連付けることができます。

**注記**  
AWS Service Catalog は、Terraform オープンソース製品の予算をサポートしていません。

AWS 予算を使用すると、コストや使用量が予算額を超えたとき (または超えると予測されるとき) に警告するカスタム予算を設定できます。 AWS Budgets の詳細については、「」を参照してください[https://aws.amazon.com/aws-cost-management/aws-budgets](https://aws.amazon.com/aws-cost-management/aws-budgets)。

**Topics**
+ [前提条件](#budgets-setup)
+ [予算の作成](#budgets-create)
+ [予算の関連付け](#budgets-associate)
+ [予算の表示](#budgets-view)
+ [予算の関連付けの解除](#budgets-disassociate)

## 前提条件
<a name="budgets-setup"></a>

 AWS Budgets を使用する前に、 AWS Billing and Cost Management コンソールでコスト配分タグを有効にする必要があります。詳細については、AWS Billing and Cost Management ユーザーガイドの「[ユーザー定義のコスト配分タグのアクティブ化](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/activating-tags.html)」を参照してください。

**注記**  
タグがアクティブ化されるまでに最大 24 時間かかります。

また、 Budgets 機能を使用するすべてのユーザーまたはグループに対して、 AWS Billing and Cost Management コンソールへのユーザーアクセスを有効にする必要があります。これを行うには、ユーザー用の新しいポリシーを作成します。

 ユーザーが予算を作成できるようにするには、請求情報の表示もユーザーに許可する必要があります。Amazon SNS 通知を使用する場合は、以下のポリシー例に示すように、ユーザーに Amazon SNS 通知を作成する権限を与えることができます。

**予算ポリシーを作成するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで、**ポリシー** を選択してください。

1. コンテンツペインで、[**ポリシーの作成**] を選択します。

1. **[JSON]** タブを選択し、以下の JSON ポリシードキュメントからテキストをコピーします。このテキストを **[JSON]** ボックスに貼り付けます。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Stmt1435216493000",
               "Effect": "Allow",
               "Action": [
                   "aws-portal:ViewBilling",
                   "aws-portal:ModifyBilling",
                   "budgets:ViewBudget",
                   "budgets:ModifyBudget"
               ],
               "Resource": [
                   "*"
               ]
           },
           {
               "Sid": "Stmt1435216552000",
               "Effect": "Allow",
               "Action": [
                   "sns:*"
               ],
               "Resource": [
                   "arn:aws:sns:us-east-1:123456789012:*"
               ]
           }
       ]
   }
   ```

------

1. 完了したら、**[ポリシーの確認]** (ポリシーの確認) を選択します。構文エラーがある場合は、Policy Validator (ポリシー検証) によってレポートされます。

1. [**確認**] ページで、ポリシーに名前を付けます。ポリシーの [**Summary (概要)**] で、ポリシーによって割り当てられたアクセス許可を確認し、[**ポリシーの作成**] を選択して作業を保存します。

   新しいポリシーが管理ポリシーの一覧に表示され、ユーザーやグループにアタッチできるようになります。詳細については、AWS Identity and Access Management ユーザーガイドの「[カスタマー管理ポリシーの作成と添付](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#step2-attach-policy)」を参照してください。

## 予算の作成
<a name="budgets-create"></a>

 AWS Service Catalog 管理者コンソールでは、**製品リスト**と**ポートフォリオ**ページに既存の製品とポートフォリオに関する情報が表示され、それらに対してアクションを実行できます。予算を作成するには、まず予算を関連付ける製品またはポートフォリオを決定します。

**予算を作成するには**

1. Service Catalog コンソール ([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)) を開きます。

1.  **[製品リスト]** または **[ポートフォリオ]** を選択します。

1.  予算を追加する製品またはポートフォリオを選択します。

1.  **[アクション]** メニューを開き、**[予算を作成]** を選択します。

1.  [**予算の作成**] ページで、1 つのタグタイプを予算に関連付けます。

    タグには、AutoTags と TagOptions の 2 種類があります。AutoTags は、ポートフォリオ、製品、および製品を発売したユーザーを識別します。 AWS Service Catalog はこれらのタグをプロビジョニングされたリソースに自動的に適用します。TagOption は、 AWS Service Catalogで管理される管理者定義のキーと値のペアです。

    ポートフォリオまたは製品で発生する支出が関連付けられた予算に反映されるには、両方に同じタグが必要です。初めて使用されたタグキーは、アクティブ化されるまでに 24 時間かかることがあります。詳細については、「[前提条件](#budgets-setup)」を参照してください。

1.  **Create in AWS Budgets** を選択します。**[予算の設定]** ページに移動します。[[予算を作成]](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/budgets-create.html) の手順に従って、予算の設定を続行します。

**注記**  
 予算を作成したら、それを製品またはポートフォリオに関連付ける必要があります。

## 予算の関連付け
<a name="budgets-associate"></a>

 各ポートフォリオまたは製品には 1 つの予算を関連付けることができます。各予算は複数のポートフォリオや製品に関連付けることができます。

 予算をポートフォリオまたは製品に関連付けると、そのポートフォリオまたは製品の詳細ページから予算に関する情報を表示できます。ポートフォリオまたは製品で発生した支出を予算に反映するには、予算とポートフォリオまたは製品に同じタグを関連付ける必要があります。

**注記**  
 予算を削除すると AWS Budgets、 AWS Service Catalog 製品およびポートフォリオとの既存の関連付けが引き続き存在します。 AWS Service Catalog は、削除された予算に関する情報を表示できません。

**予算を関連付けるには**

1. Service Catalog コンソール ([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)) を開きます。

1.  **[製品リスト]** または **[ポートフォリオ]** を選択します。

1.  予算を関連付ける製品またはポートフォリオを選択します。

1.  **[アクション]** メニューを開き、**[予算を関連付ける]** を選択します。

1.  **[予算の関連付け]** ページで、既存の予算を選択し、**[続行]** を選択します。

1.  **[製品]** または **[ポートフォリオ]** のテーブルに、追加したばかりの予算のデータが含まれるようになりました。

## 予算の表示
<a name="budgets-view"></a>

 予算が製品に関連付けられている場合は、**[製品の詳細]** または **[製品のリスト]** ページで予算に関する情報を表示できます。予算がポートフォリオに関連付けられている場合は、**[ポートフォリオ]** および **[ポートフォリオの詳細]** ページで予算に関する情報を表示できます。

 **[ポートフォリオ]** と **[製品のリスト]** のページに、既存のリソースの予算情報が表示されます。[**現状対予算**] および [**予測対予算**] を表示する列を表示できます。

 製品またはポートフォリオを選択すると、詳細ページに移動します。**[ポートフォリオの詳細]** と **[製品の詳細]** ページには、関連付けられた予算に関する詳細情報を含むセクションがあります。予算額、現在の使用額、および予測使用額を確認できます。また、予算の詳細を表示し、予算を編集するオプションもあります。

## 予算の関連付けの解除
<a name="budgets-disassociate"></a>

 ポートフォリオまたは製品から予算の関連付けを解除できます。

**注記**  
 AWS Budgets から予算を削除しても、 AWS Service Catalog 製品やポートフォリオとの既存の関連付けは引き続き存在します。 AWS Service Catalog は、削除された予算に関する情報を表示できません。

**予算の関連付けを解除するには**

1. Service Catalog コンソール ([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)) を開きます。

1.  **[製品リスト]** または **[ポートフォリオ]** を選択します。

1.  予算の関連付けを解除する製品またはポートフォリオを選択します。

1.  **[アクション]** を選択します。ドロップダウンから **[予算の関連付けを解除]** を選択します。確認のアラートが表示されます。

1.  製品またはポートフォリオから予算の関連付けを解除することを確認したら、**[確認]** を選択します。