ALIYUN::ROS::CustomResource类型用于创建自定义资源。

在ROS模板中,您可以使用ALIYUN::ROS::CustomResource或Custom::String资源类型来指定自定义资源。

自定义资源为您提供了一种在ROS模板中编写自定义配置逻辑并使ROS在资源栈操作(如创建、更新或删除资源栈)期间运行该逻辑的方式。有关更多信息,请参见自定义资源概览

自定义资源必须将响应发送到预签名的响应URL。如果不能向ROS发送响应,阿里云ROS不会收到响应,资源栈操作就会失败。ResponseURL提供了公网响应的能力,InnerResponseURL提供了阿里云内网响应的能力。

语法

{
  "Type": "ALIYUN::ROS::CustomResource",
  "Properties": {
    "ServiceToken": String,
    "Timeout": Number,
    "Parameters": Map
  }
}

属性

属性名称 类型 必须 允许更新 描述 约束
ServiceToken String 服务令牌,由custom service provider向template developer提供。

目前支持FC(函数计算)Function、MNS(消息服务)Topic、MNS(消息服务)Queue、HTTP&HTTPS。

最大长度512。

取值:
  • FC:acs:fc:<region_id>:<account_id>:services/<service_name>/functions/<function_name>
  • MNS Queue:acs:mns:<region_id>:<account_id>:queues/<queue_name>
  • MNS Topic:acs:mns:<region_id>:<account_id>:topics/<topic_name>
  • HTTP&HTTPS:web[options]:<url>

    options为可选参数,取值为syncidempotent。可以同时支持以上两个取值,需以英文逗号(,)分隔。

    sync:表示为同步请求,不再等待预签名的URL回调,直接使用请求的返回结果。默认为异步请求,等待预签名的URL回调。

    idempotent:表示创建请求支持幂等。若创建请求出现网络异常或500错误,会进行重试。默认创建请求不支持幂等。更新和删除请求始终应该支持幂等。

示例:

  • acs:fc:cn-hangzhou:123456789:services/test-service/functions/test-function
  • acs:mns:cn-hangzhou:123456789:queues/test-queue
  • acs:mns:cn-hangzhou:123456789:topics/test-topic
  • web:https://example.com
  • web[sync]:http://example.com
  • web[sync,idempotent]:https://example.com
Timeout Number 等待custom service provider响应的超时时间,单位:秒。
  • ServiceToken为FC、MNS Topic、MNS Queue、异步HTTP&HTTPS请求时,Timeout默认为60,取值范围为1-43200。
  • ServiceToken为同步HTTP&HTTPS请求时,Timeout无效,超时时间始终为10。
Parameters Map 要传递给custom service provider的参数。按照custom service provider提供的规范填写。 无。

返回值

Fn::GetAtt

  • Outputs:从custom service provider接收的数据,Map对象。
  • *:*的具体值为Outputs中的key。

示例

  • YAML格式

    ROSTemplateFormatVersion: '2015-09-01'
    Resources:
      CustomResource:
        Type: ALIYUN::ROS::CustomResource
        Properties:
          ServiceToken: acs:fc:cn-hangzhou:123456789:services/test-service/functions/test-function
          Parameters:
            Key1: Value1
            Key2: Value2
          Timeout: 60
    Parameters:
      Parameters:
        Type: Json
        Description: Parameters to be passed to service provider.
    Outputs:
      Outputs:
        Description: Output data received from service provider.
        Value:
          Fn::GetAtt:
            - CustomResource
            - Outputs
  • JSON格式

    {
      "ROSTemplateFormatVersion": "2015-09-01",
      "Resources": {
        "CustomResource": {
          "Type": "ALIYUN::ROS::CustomResource",
          "Properties": {
            "ServiceToken": "acs:fc:cn-hangzhou:123456789:services/test-service/functions/test-function",
            "Parameters": {
              "Key1": "Value1",
              "Key2": "Value2"
            },
            "Timeout": 60
          }
        }
      },
      "Parameters": {
        "Parameters": {
          "Type": "Json",
          "Description": "Parameters to be passed to service provider."
        }
      },
      "Outputs": {
        "Outputs": {
          "Description": "Output data received from service provider.",
          "Value": {
            "Fn::GetAtt": [
              "CustomResource",
              "Outputs"
            ]
          }
        }
      }
    }

备注

  • 指定自定义资源类型名称

    对于自定义资源,您可以指定ALIYUN::ROS::CustomResource作为资源类型,也可以指定自己的资源类型名称。例如:您可以使用ALIYUN::ROS::CustomResource,而不使用Custom::MyCustomResourceTypeName。

    自定义资源类型名称可包含英文字母、数字和特殊字符:_@-。您可指定最大长度为68个字符的自定义资源类型名称。在更新期间,不能更改类型。

    使用自己的资源类型名称有助于快速区分堆栈中自定义资源的类型。例如,如果您有执行两种不同ping测试的两个自定义资源,则可以将其类型命名为Custom::PingTester(而不使用 ALIYUN::ROS::CustomResource)以便方便地识别为ping测试器。

  • 在更新期间替换自定义资源

    ROS不允许在更新期间替换其PhysicalResourceId。

  • 检索返回值

    对于自定义资源,返回值是由自定义资源提供商定义的,并且可通过调用Fn::GetAtt在供应商定义的属性中进行检索。