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

Resource Orchestration Service:更新

最終更新日:Jan 16, 2025

テンプレートのカスタムリソースのプロパティが変更されると、Resource Orchestration Service (ROS) はカスタムリソースプロバイダーにリクエストを送信します。リクエストの RequestType フィールドは Update に設定されます。カスタムリソースコードは、Update が呼び出された後にプロパティが変更されたことがわかっているため、変更を検出する必要はありません。

リクエスト

更新リクエストには、次のフィールドが含まれています。

  • RequestType

    このフィールドは Update に設定されます。

  • ResponseURL

    署名付きのパブリック URL。この URL は、カスタムリソースプロバイダーから ROS へのレスポンスを受信します。

  • IntranetResponseURL

    署名付きの内部 URL。この URL は Elastic Compute Service (ECS) で使用できます。この URL は、カスタムリソースプロバイダーから ROS へのレスポンスを受信します。

  • StackId

    カスタムリソースを含むスタックの ID。

  • StackName

    カスタムリソースを含むスタックの名前。

  • ResourceOwnerId

    カスタムリソースを含むスタックが属する Alibaba Cloud アカウントの ID。

  • CallerId

    この操作を実行するために使用される Alibaba Cloud アカウントまたは Resource Access Management (RAM) ユーザーの ID。

  • RegionId

    カスタムリソースを含むスタックのリージョン ID。

  • RequestId

    リクエストの一意の ID。

  • ResourceType

    テンプレート開発者がテンプレート内のカスタムリソースに対して選択したリソースタイプ。カスタムリソースタイプの名前は最大 68 文字で、文字、数字、アンダースコア (_)、アットマーク (@)、ハイフン (-) を使用できます。

  • LogicalResourceId

    テンプレート開発者がテンプレート内のカスタムリソースに指定した名前 (論理 ID)。

  • PhysicalResourceId

    カスタムリソースプロバイダーによって定義された必須の物理 ID。この ID はプロバイダーに対して一意です。

  • ResourceProperties

    このフィールドには、テンプレート開発者によって送信されたリクエストの Properties セクションのパラメーターが含まれています。コンテンツはカスタムリソースプロバイダーによって定義されます。

  • OldResourceProperties

    このフィールドには、テンプレート開発者によって定義された Properties セクションの元の パラメーターが含まれています。

例:

{
   "RequestType" : "Update",
   "RequestId" : "unique id for this update request", // この更新リクエストの一意のID
   "ResponseURL" : "pre-signed-url-for-update-response", // 更新レスポンス用の署名付きURL
   "IntranetResponseURL" : "pre-signed-intranet-url-for-create-response", // 作成レスポンス用の署名付きイントラネットURL
   "ResourceType" : "Custom::MyCustomResourceType", // カスタムリソースタイプ
   "LogicalResourceId" : "name of resource in template", // テンプレート内のリソース名
   "PhysicalResourceId" : "custom resource provider-defined physical id", // カスタムリソースプロバイダー定義の物理ID
   "StackId" : "stack id", // スタックID
   "StackName" : "stack name", // スタック名
   "ResourceOwnerId": "resource owner id", // リソース所有者ID
   "CallerId": "caller id", // 呼び出し元ID
   "RegionId": "region id", // リージョンID
   "ResourceProperties" : {
      "key1" : "new-string", // 新しい文字列
      "key2" : [ "new-list" ], // 新しいリスト
      "key3" : { "key4" : "new-map" } // 新しいマップ
   },
   "OldResourceProperties" : {
      "key1" : "string", // 文字列
      "key2" : [ "list" ], // リスト
      "key3" : { "key4" : "map" } // マップ
   }
}    

レスポンス

成功

更新リクエストが送信されると、カスタムリソースプロバイダーは次のフィールドを含むレスポンスを ROS に送信する必要があります。

  • Status

    このフィールドには SUCCESS のみ返されます。

  • RequestId

    リクエストの一意の ID。このレスポンス値はリクエストからコピーする必要があります。

  • LogicalResourceId

    テンプレート開発者がテンプレート内のカスタムリソースに指定した名前 (論理 ID)。このレスポンス値はリクエストからコピーする必要があります。

  • StackId

    カスタムリソースを含むスタックの ID。このレスポンス値はリクエストからコピーする必要があります。

  • PhysicalResourceId

    このフィールドの値は変更できません。このレスポンス値はリクエストからコピーする必要があります。

  • Data

    オプション。レスポンスで送信される名前と値のペア。Fn::GetAtt 関数を使用して、テンプレート内の名前でここで提供される値にアクセスできます。

例:

{
   "Status" : "SUCCESS", // 成功
   "RequestId" : "unique id for this update request (copied from request)", // この更新リクエストの一意のID (リクエストからコピー)
   "LogicalResourceId" : "name of resource in template (copied from request)", // テンプレート内のリソース名 (リクエストからコピー)
   "StackId" : "stack id (copied from request)", // スタックID (リクエストからコピー)
   "PhysicalResourceId" : "custom resource provider-defined physical id", // カスタムリソースプロバイダー定義の物理ID
   "Data" : {
      "keyThatCanBeUsedInGetAtt1" : "data for key 1", // key1のデータ (GetAttで使用可能)
      "keyThatCanBeUsedInGetAtt2" : "data for key 2" // key2のデータ (GetAttで使用可能)
   }
}

失敗

更新リクエストが失敗した場合、カスタムリソースプロバイダーは次のフィールドを含むレスポンスを ROS に送信する必要があります。

  • Status

    このフィールドには FAILED のみ返されます。

  • Reason

    レスポンスが失敗した理由。

  • RequestId

    リクエストの一意の ID。このレスポンス値はリクエストからコピーする必要があります。

  • LogicalResourceId

    テンプレート開発者がテンプレート内のカスタムリソースに指定した名前 (論理 ID)。このレスポンス値はリクエストからコピーする必要があります。

  • StackId

    カスタムリソースを含むスタックの ID。このレスポンス値はリクエストからコピーする必要があります。

例:

{
   "Status" : "FAILED", // 失敗
   "Reason" : "Required failure reason string", // 失敗理由の文字列 (必須)
   "RequestId" : "unique id for this update request (copied from request)", // この更新リクエストの一意のID (リクエストからコピー)
   "LogicalResourceId" : "name of resource in template (copied from request)", // テンプレート内のリソース名 (リクエストからコピー)
   "StackId" : "stack id (copied from request)" // スタックID (リクエストからコピー)
}