在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、SMQ( 轻量消息队列(原 MNS) )Topic、SMQQueue、HTTP&HTTPS。 最大长度512。 | 取值: FC:acs:fc:<region_id>:<account_id>:services/<service_name>/functions/<function_name> SMQ Queue:acs::<region_id>:<account_id>:queues/<queue_name> SMQ Topic:acs:mns:<region_id>:<account_id>:topics/<topic_name> HTTP&HTTPS:web[options]:<url> options 为可选参数,取值为sync 或idempotent 。可以同时支持以上两个取值,需以英文逗号(,)分隔。
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响应的超时时间,单位:秒。 | |
Parameters | Map | 否 | 是 | 要传递给custom service provider的参数。按照custom service provider提供的规范填写。 | 无。 |
示例
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在供应商定义的属性中进行检索。