

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

# の外部エンジン AWS Service Catalog
<a name="external-engine"></a>

では AWS Service Catalog、*外部エンジン*は `EXTERNAL`製品タイプで表されます。`EXTERNAL` 製品タイプにより、Terraform などのサードパーティーのプロビジョニングエンジンの統合が可能になります。外部エンジンを使用すると、Service Catalog の機能をネイティブ AWS CloudFormation テンプレート以外にも拡張できるため、他の Instructure as Code (IaC) ツールを使用できます。

`EXTERNAL` 製品タイプを使用すると、選択した IaC ツールの特定の機能と構文を活用しながら、Service Catalog の使い慣れたインターフェイスを使用してリソースを管理およびデプロイできます。

Service Catalog で`EXTERNAL`製品タイプを有効にするには、アカウントで一連の標準リソースを定義する必要があります。これらのリソースは*エンジン*と呼ばれます。Service Catalog は、アーティファクト解析およびプロビジョニングオペレーションの特定の時点で、タスクをエンジンに委任します。

*プロビジョニングアーティファクト*は、Service Catalog 内の製品の特定のバージョンを表し、一貫したリソースを管理およびデプロイできます。

`EXTERNAL` 製品タイプのプロビジョニングアーティファクトに対して AWS Service Catalog[DescribeProvisioningArtifact](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_DescribeProvisioningArtifact.html) または [DescribeProvisioningParameters](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_DescribeProvisioningParameters.html) オペレーションを呼び出すと、Service Catalog はエンジンで AWS Lambda 関数を呼び出します。これは、提供されたプロビジョニングアーティファクトからパラメータのリストを抽出して返すために必要です AWS Service Catalog。これらのパラメータは、後でプロビジョニングプロセスの一部として使用されます。

[ProvisionProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_ProvisionProduct.html) を呼び出して`EXTERNAL`プロビジョニングアーティファクトをプロビジョニングすると、Service Catalog はまずいくつかのアクションを内部で実行し、エンジンの Amazon SQS キューにメッセージを送信します。次に、エンジンは提供された*起動ロール* (起動制約として製品に割り当てる IAM ロール) を引き受け、提供されたプロビジョニングアーティファクトに基づいてリソースをプロビジョニングし、[NotifyProvisionProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyProvisionProductEngineWorkflowResult.html) API を呼び出して成功または失敗を報告します。

[UpdateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_UpdateProvisionedProduct.html) および [TerminateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_TerminateProvisionedProduct.html) への呼び出しは同様に処理され、それぞれに個別のキューと通知 APIsがあります。
+ [NotifyProvisionProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyProvisionProductEngineWorkflowResult.html)
+ [NotifyUpdateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyUpdateProvisionedProductEngineWorkflowResult.html)
+ [NotifyTerminateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyTerminateProvisionedProductEngineWorkflowResult.html)。

**Topics**
+ [考慮事項](#external-engine-considerations)
+ [パラメータ解析](#external-engine-parameters)
+ [プロビジョニング](#external-engine-provisioning)
+ [[更新中]](#external-engine-updating)
+ [終了](#external-engine-terminating)
+ [Tagging](#external-engine-tagging)

## 考慮事項
<a name="external-engine-considerations"></a>

**ハブアカウントあたり 1 つの外部エンジンの制限**

Service Catalog ハブアカウントごとに 1 つの`EXTERNAL`プロビジョニングエンジンのみを使用できます。Service Catalog *hub-and-spoke*モデルを使用すると、ハブアカウントはベースライン製品を作成し、ポートフォリオを共有できます。スポークアカウントはポートフォリオをインポートして製品を活用します。

この制限は、 `EXTERNAL` がアカウントの 1 つのエンジンにのみルーティングできるためです。管理者が複数の外部エンジンを必要とする場合、管理者は外部エンジンを (ポートフォリオや製品とともに) 異なるハブアカウントで設定する必要があります。

**外部エンジンは、起動制約のある起動ロールのみをサポートします**

`EXTERNAL` プロビジョニングアーティファクトは、起動*制約*を使用して指定された起動ロールによるプロビジョニングのみをサポートします。起動制約は、エンドユーザーが製品を起動、更新、または終了するときに Service Catalog が引き受ける IAM ロールを指定します。起動制約の詳細については、[AWS Service Catalog 「起動制約](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-launch.html)」を参照してください。

## パラメータ解析
<a name="external-engine-parameters"></a>

`EXTERNAL` プロビジョニングアーティファクトは任意の形式にすることができます。つまり、`EXTERNAL`製品タイプを作成する場合、エンジンは提供されたプロビジョニングアーティファクトからパラメータのリストを抽出して Service Catalog に返す必要があります。これは、次のリクエスト形式を受け入れ、プロビジョニングアーティファクトを処理し、次のレスポンス形式を返すことができる Lambda 関数をアカウントに作成することによって行われます。

**重要**  
Lambda 関数には という名前を付ける必要があります`ServiceCatalogExternalParameterParser`。

**リクエストの構文:**

```
{
    "artifact": {
        "path": "{{string}}",
        "type": "{{string}}"
    },
    "launchRoleArn": "{{string}}"
}
```


****  

| **フィールド** | **タイプ** | **必須** | **説明** | 
| --- | --- | --- | --- | 
| アーティファクト | オブジェクト | はい | 解析するアーティファクトの詳細。 | 
| アーティファクト/パス | string | はい | パーサーがアーティファクトをダウンロードする場所。たとえば、 の場合AWS\_S3、これは Amazon S3 URI です。 | 
| アーティファクト/タイプ | string | はい | アーティファクトのタイプ。使用できる値: AWS\_S3。 | 
| launchRole | string | 不可 | アーティファクトのダウンロード時に引き受ける起動ロールの Amazon リソースネーム (ARN)。起動ロールが指定されていない場合は、Lambda の実行ロールが使用されます。 | 

**レスポンスの構文:**

```
{
    "parameters": [
        {
            "key": "{{string}}"
            "{{defaultValue}}": "{{string}}",
            "type": "{{string}}",
            "description": "{{string}}",
            "isNoEcho": boolean
        },
    ]
}
```


****  

| **フィールド** | **タイプ** | **必須** | **説明** | 
| --- | --- | --- | --- | 
| パラメータ | リスト | はい | 製品のプロビジョニング時またはプロビジョニング済み製品の更新時に Service Catalog がエンドユーザーに提供するよう求めるパラメータのリスト。アーティファクトにパラメータが定義されていない場合は、空のリストが返されます。 | 
| key | string | はい | パラメータキー。 | 
| defaultValue | string | 不可 | エンドユーザーが値を指定しない場合の パラメータのデフォルト値。 | 
| 型 | string | はい | エンジンのパラメータ値の予想されるタイプ。たとえば、文字列、ブール値、マップなどです。使用できる値は、各エンジンに固有です。Service Catalog は、各パラメータ値を文字列としてエンジンに渡します。 | 
| 説明 | string | 不可 | パラメータの説明。これはユーザーフレンドリであることをお勧めします。 | 
| isNoEcho | boolean | なし | パラメータ値がログにエコーされないかどうかを決定します。デフォルト値は false (パラメータ値はエコーされます) です。 | 

## プロビジョニング
<a name="external-engine-provisioning"></a>

[ProvisionProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_ProvisionProduct.html) オペレーションの場合、Service Catalog はリソースの実際のプロビジョニングをエンジンに委任します。エンジンは、選択した IaC ソリューション (Terraform など) とやり取りして、アーティファクトで定義されているリソースをプロビジョニングします。エンジンは、結果を Service Catalog に通知する責任も負います。

Service Catalog は、 という名前のアカウントの Amazon SQS キューにすべてのプロビジョニングリクエストを送信します`ServiceCatalogExternalProvisionOperationQueue`。

**リクエストの構文:**

```
{
    "token": "{{string}}",
    "operation": "{{string}}",
    "provisionedProductId": "{{string}}",
    "provisionedProductName": "{{string}}",
    "productId": "{{string}}",
    "provisioningArtifactId": "{{string}}",
    "recordId": "{{string}}",
    "launchRoleArn": "{{string}}",
    "artifact": {
        "path": "{{string}}",
        "type": "{{string}}"
    },
    "identity": {
        "principal": "{{string}}",
        "awsAccountId": "{{string}}",
        "organizationId": "{{string}}"
    },
    "parameters": [
        {
            "key": "{{string}}",
            "value": "{{string}}"
        }
    ],
    "tags": [
        {
            "key": "{{string}}",
            "value": "{{string}}"
        }
    ]
}
```


****  

| **フィールド** | **タイプ** | **必須** | **説明** | 
| --- | --- | --- | --- | 
| トークン | string | はい | このオペレーションを識別するトークン。実行結果を通知するために、トークンを Service Catalog に返す必要があります。 | 
| オペレーション | string | はい | このフィールドは、このオペレーションPROVISION\_PRODUCTの である必要があります。 | 
| provisionedProductId | string | はい | プロビジョニング済み製品の ID。 | 
| provisionedProductName | string | はい | プロビジョニングされた製品の名前。 | 
| productId | string | はい | 製品の ID。 | 
| provisioningArtifactId | string | はい | プロビジョニングアーティファクトの ID。 | 
| recordId | string | はい | このオペレーションの Service Catalog レコードの ID。 | 
| launchRoleArn | string | はい | リソースのプロビジョニングに使用する IAM ロールの Amazon リソースネーム (ARN)。 | 
| アーティファクト | オブジェクト | はい | リソースのプロビジョニング方法を定義するアーティファクトの詳細。 | 
| アーティファクト/パス | string | はい | エンジンがアーティファクトをダウンロードする場所。たとえば、 の場合AWS\_S3、これは Amazon S3 URI です。 | 
| アーティファクト/タイプ | string | はい | アーティファクトのタイプ。使用できる値: AWS\_S3。 | 
| identity | string | 不可 | フィールドは現在使用されていません。 | 
| パラメータ | リスト | はい | ユーザーがこのオペレーションの入力として Service Catalog に入力したパラメータのキーと値のペアのリスト。 | 
| タグ | リスト | はい | プロビジョニングされたリソースに適用するタグとして Service Catalog にユーザーが入力したkey-value-pairsのリスト。 | 

**ワークフロー結果通知:**

API の詳細ページで指定されたレスポンスオブジェクトを使用して、[NotifyProvisionProductEngineWorkflowResult ](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyProvisionProductEngineWorkflowResult .html) API を呼び出します。

## [更新中]
<a name="external-engine-updating"></a>

[UpdateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_UpdateProvisionedProduct.html) オペレーションの場合、Service Catalog はリソースの実際の更新をエンジンに委任します。エンジンは、選択した IaC ソリューション (Terraform など) とやり取りして、アーティファクトで定義されているリソースを更新する責任があります。エンジンは、結果を Service Catalog に通知する責任も負います。

Service Catalog は、 という名前のアカウントの Amazon SQS キューにすべての更新リクエストを送信します`ServiceCatalogExternalUpdateOperationQueue`。

**リクエストの構文:**

```
{
    "token": "{{string}}",
    "operation": "{{string}}",
    "provisionedProductId": "{{string}}",
    "provisionedProductName": "{{string}}",
    "productId": "string",
    "provisioningArtifactId": "{{string}}",
    "recordId": "{{string}}",
    "launchRoleArn": "{{string}}",
    "artifact": {
        "path": "{{string}}",
        "type": "{{string}}"
    },
    "identity": {
        "principal": "{{string}}",
        "awsAccountId": "{{string}}",
        "organizationId": "{{string}}"
    },
    "parameters": [
        {
            "key": "{{string}}",
            "value": "{{string}}"
        }
    ],
    "tags": [
        {
            "key": "{{string}}",
            "value": "{{string}}"
        }
    ]
}
```


****  

| **フィールド** | **タイプ** | **必須** | **説明** | 
| --- | --- | --- | --- | 
| トークン | string | はい | このオペレーションを識別するトークン。実行結果を通知するために、トークンを Service Catalog に返す必要があります。 | 
| オペレーション | string | はい | このフィールドは、このオペレーションUPDATE\_PROVISION\_PRODUCTの である必要があります。 | 
| provisionedProductId | string | はい | プロビジョニング済み製品の ID。 | 
| provisionedProductName | string | はい | プロビジョニングされた製品の名前。 | 
| productId | string | はい | 製品の ID。 | 
| provisioningArtifactId | string | はい | プロビジョニングアーティファクトの ID。 | 
| recordId | string | はい | このオペレーションの Service Catalog レコードの ID。 | 
| launchRoleArn | string | はい | リソースのプロビジョニングに使用する IAM ロールの Amazon リソースネーム (ARN)。 | 
| アーティファクト | オブジェクト | はい | リソースのプロビジョニング方法を定義するアーティファクトの詳細。 | 
| アーティファクト/パス | string | はい | エンジンがアーティファクトをダウンロードする場所。たとえば、 の場合AWS\_S3、これは Amazon S3 URI です。 | 
| アーティファクト/タイプ | string | はい | アーティファクトのタイプ。使用できる値: AWS\_S3。 | 
| identity | string | 不可 | フィールドは現在使用されていません。 | 
| パラメータ | リスト | はい | ユーザーがこのオペレーションの入力として Service Catalog に入力したパラメータのキーと値のペアのリスト。 | 
| タグ | リスト | はい | プロビジョニングされたリソースに適用するタグとして Service Catalog にユーザーが入力したkey-value-pairsのリスト。 | 

**ワークフロー結果通知:**

API の詳細ページで指定されたレスポンスオブジェクトを使用して、[NotifyUpdateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyUpdateProvisionedProductEngineWorkflowResult.html) API を呼び出します。

## 終了
<a name="external-engine-terminating"></a>

[TerminateProvisionedProduct](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_TerminateProvisionedProduct.html) オペレーションの場合、Service Catalog はリソースの実際の終了をエンジンに委任します。エンジンは、選択した IaC ソリューション (Terraform など) とやり取りして、アーティファクトで定義されているリソースを終了する責任があります。エンジンは、結果を Service Catalog に通知する責任も負います。

Service Catalog は、 という名前のアカウントの Amazon SQS キューにすべての終了リクエストを送信します`ServiceCatalogExternalTerminateOperationQueue`。

**リクエストの構文:**

```
{
    "token": "{{string}}",
    "operation": "{{string}}",
    "provisionedProductId": "{{string}}",
    "provisionedProductName": "{{string}}",
    "recordId": "{{string}}",
    "launchRoleArn": "{{string}}",
    "identity": {
        "principal": "{{string}}",
        "awsAccountId": "{{string}}",
        "organizationId": "{{string}}"
    }
}
```


****  

| **フィールド** | **タイプ** | **必須** | **説明** | 
| --- | --- | --- | --- | 
| トークン | string | はい | このオペレーションを識別するトークン。実行結果を通知するために、トークンを Service Catalog に返す必要があります。 | 
| オペレーション | string | はい | このフィールドは、このオペレーションTERMINATE\_PROVISION\_PRODUCTの である必要があります。 | 
| provisionedProductId | string | はい | プロビジョニング済み製品の ID。 | 
| provisionedProductName | string | はい | プロビジョニングされた製品の名前。 | 
| recordId | string | はい | このオペレーションの Service Catalog レコードの ID。 | 
| launchRoleArn | string | はい | リソースのプロビジョニングに使用する IAM ロールの Amazon リソースネーム (ARN)。 | 
| identity | string | 不可 | フィールドは現在使用されていません。 | 

**ワークフロー結果通知:**

API の詳細ページで指定されたレスポンスオブジェクトを使用して、[NotifyTerminateProvisionedProductEngineWorkflowResult](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_NotifyTerminateProvisionedProductEngineWorkflowResult.html) API を呼び出します。

## Tagging
<a name="external-engine-tagging"></a>

Resource Groups を使用してタグを管理するには、起動ロールに次の追加のアクセス許可ステートメントが必要です。

```
{
    "Effect": "Allow",
    "Action": [
        "resource-groups:CreateGroup",
        "resource-groups:ListGroupResources"
    ],
    "Resource": "*"
},
{
    "Effect": "Allow",
    "Action": [
        "tag:GetResources",
        "tag:GetTagKeys",
        "tag:GetTagValues",
        "tag:TagResources",
        "tag:UntagResources"
    ],
    "Resource": "*"
}
```

**注記**  
起動ロールには、 などのアーティファクト内の特定のリソースに対するタグ付けアクセス許可も必要です`ec2:CreateTags`。