すべてのプロダクト
Search
ドキュメントセンター

Resource Orchestration Service:概要

最終更新日:Jun 04, 2026

カスタムリソースを使用すると、カスタムロジックを Resource Orchestration Service (ROS) テンプレートに埋め込むことができます。 ROS は、スタックを作成、更新、または削除するときにこのロジックを実行します。カスタムリソースを使用して、ROS がネイティブにサポートしていないリソースタイプを管理し、すべてのリソースを単一のスタックに保持できます。

カスタムリソースについて

テンプレートでカスタムリソースを定義するには、ALIYUN::ROS::CustomResource または Custom::MyCustomResourceTypeName リソースタイプを使用します。各カスタムリソースには、ROS がリクエストを送信する場所を指定するサービストークンが必要です。送信先には、SMQ (Simple Message Queue (formerly MNS)) のトピックやキュー、Function Compute (FC) の関数、または HTTP および HTTPS サービスなどがあります。

カスタムリソースは、署名付き URL にレスポンスを送信する必要があります。レスポンスが送信されない場合、スタック操作は失敗します。パブリックネットワーク経インのレスポンスには ResponseURL を、Alibaba Cloud の内部ネットワーク経由のレスポンスには IntranetResponseURL を使用します。

カスタムリソースの仕組み

カスタムリソースの操作には、3 つのエンティティが関わります:

  • テンプレート開発者:カスタムリソースタイプ、サービストークン、および入力データを含むテンプレートを作成します。

  • カスタムリソースプロバイダー:カスタムリソースを所有し、ROS リクエストの処理方法とレスポンス方法を決定し、テンプレート開発者にサービストークンを提供します。

  • ROS:スタック操作中にテンプレートで指定されたサービストークンにリクエストを送信し、処理を続行する前にレスポンスを待機します。

テンプレート開発者とカスタムリソースプロバイダーは、同一人物または同一エンティティである場合があります。カスタムリソースのワークフローは次のとおりです:

  1. テンプレート開発者は、必要なサービストークンとオプションの入力データパラメーターを使用して、テンプレート内にカスタムリソースを定義します。

    サービストークンは、「ALIYUN::ROS::CustomResource」で定義されているように、ROS がリクエストを送信する場所 (SMQ トピックの Alibaba Cloud リソースネーム (ARN) や FC 関数の ARN など) を指定します。カスタムリソースプロバイダーは、サービストークンの構造と入力データを定義します。

  2. カスタムリソースを作成、更新、または削除すると、ROS は指定されたサービストークンにリクエストを送信します。サービストークンにリージョン制限はありません。

    ROS のリクエストには、リクエストタイプ、署名付きレスポンス URL、および「Custom resource request objects」で説明されているその他のメタデータが含まれます。

    リクエストの例:

    {
       "RequestType" : "Create",
       "RequestId" : "unique id for this create request",
       "ResponseURL" : "pre-signed-url-for-create-response",
       "IntranetResponseURL" : "pre-signed-intranet-url-for-create-response",
       "ResourceType" : "Custom::MyCustomResourceType",
       "LogicalResourceId" : "name of resource in template",
       "StackId" : "stack id",
       "StackName" : "stack name",
       "ResourceOwnerId": "resource owner id",
       "CallerId": "caller id",
       "RegionId": "region id",
       "ResourceProperties" : {
          "key1" : "string",
          "key2" : [ "list" ],
          "key3" : { "key4" : "map" }
       }
    }                                 
  3. カスタムリソースプロバイダーはリクエストを処理し、SUCCESS または FAILED の JSON レスポンスを署名付き URL に返します。

    レスポンスには、「Custom resource response objects」で説明されているように、成功時には出力データ、失敗時にはエラーメッセージを含めることができます。

    プロバイダーは、リクエストをリッスンして応答する必要があります。たとえば、SMQ ベースのプロバイダーは、指定されたトピック ARN でリッスンします。 ROS は、署名付き URL へのレスポンスを待機します。

    レスポンスの例:

    {
       "Status" : "SUCCESS",
       "RequestId" : "unique id for this create request (copied from request)",
       "LogicalResourceId" : "name of resource in template (copied from request)",
       "StackId" : "stack id (copied from request)",
       "PhysicalResourceId" : "required vendor-defined physical id that is unique for that vendor",
       "Data" : {
          "keyThatCanBeUsedInGetAtt1" : "data for key 1",
          "keyThatCanBeUsedInGetAtt2" : "data for key 2"
       }
    }
  4. ROS が SUCCESS レスポンスを受信すると、スタック操作を続行します。 FAILED レスポンスを受信した場合、またはレスポンスがない場合は、操作が失敗します。テンプレート開発者は、Fn::GetAtt 関数を使用して、レスポンスから出力データを取得できます。