の外部エンジン AWS Service Catalog - AWS Service Catalog

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

の外部エンジン AWS Service Catalog

では 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 CatalogDescribeProvisioningArtifact または DescribeProvisioningParameters オペレーションを呼び出すと、Service Catalog はエンジンで AWS Lambda 関数を呼び出します。これは、提供されたプロビジョニングアーティファクトからパラメータのリストを抽出して返すために必要です AWS Service Catalog。これらのパラメータは、後でプロビジョニングプロセスの一部として使用されます。

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

UpdateProvisionedProduct および TerminateProvisionedProduct への呼び出しは同様に処理され、それぞれに個別のキューと通知 APIsがあります。

考慮事項

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

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

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

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

EXTERNAL プロビジョニングアーティファクトは、起動制約を使用して指定された起動ロールによるプロビジョニングのみをサポートします。起動制約は、エンドユーザーが製品を起動、更新、または終了するときに Service Catalog が引き受ける IAM ロールを指定します。起動制約の詳細については、AWS Service Catalog 「起動制約」を参照してください。

パラメータ解析

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 (パラメータ値はエコーされます) です。

プロビジョニング

ProvisionProduct オペレーションの場合、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 API を呼び出します。

[更新中]

UpdateProvisionedProduct オペレーションの場合、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 API を呼び出します。

終了

TerminateProvisionedProduct オペレーションの場合、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 API を呼び出します。

Tagging

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