当您使用ROS创建资源栈管理多种资源时,通常需要打开多个控制台查找资源参数信息。此时您可以在模板的参数配置中指定AssociationProperty以获取所选地域下对应的资源,指定AssociationPropertyMetadata对不同参数添加筛选条件,以便在控制台动态选择参数配置。
参数说明
您可以根据实际需求指定AssociationPropertyMetadata参数的取值:
- 为参数指定特定值。例如:
"RegionId": "cn-hangzhou"
,ROS将填入特定的地域cn-hangzhou。 - 为参数指定变量,格式为
${ParemeterKey}
。例如:"VpcId": "${VpcId}"
,ROS将动态获取当前模板中参数VpcId对应的值。说明- 如果需要将
${ParemeterKey}
指定为固定值,可以增加感叹号(!)。例如:${!Literal}
表示取值为${Literal}
。 - 如果要在Terraform模板中使用参数变量,需要在
$
前增加一个$
。例如:"VpcId": "$${VpcId}"
,ROS将动态获取Terraform模板中VpcId对应的值。
- 如果需要将
ROS支持的AssociationProperty和对应的AssociationPropertyMetadata如下表所示。
AssociationProperty取值 | 说明 | 对应的AssociationPropertyMetadata |
---|---|---|
Password | 密码输入。 | 无 |
TextArea | 富文本输入。 | 无 |
Json | 对象输入。 | 无 |
CommaDelimitedList | 逗号分隔的数组。 | 无 |
Code | 代码输入。 | 无 |
FileContent | 从本地文件读取内容。 | AcceptFileSuffixes:接受上传的文件类型。 |
Cron | Cron表达式。 | 无 |
ChargeType | 计费方式。 | 无 |
Auto | ROS会基于Terraform原始数据结构,自动生成AssociationProperty和AssociationPropertyMetadata等字段。
说明 仅对Terraform类型模板的Json类型参数生效。
|
Overwrite:补充或覆盖内层嵌套参数的定义。
该参数可选,为字典类型,组成部分如下:
|
List[Parameter] | 参数列表。使用缩进排布。
仅对Json类型参数生效。 |
Parameter:参数定义。
更多信息,请参见概览。 示例如下:
|
无 | 使用缩进排布。
仅对Json类型参数生效。 |
说明 结合List[Parameter]可以实现嵌套结构,且对于嵌套深度没有限制。
|
List[Parameters] | 参数组列表。使用表格排布。
仅对Json类型参数生效。 |
|
DateTime | 日期。 |
示例如下:
|
GMTZone | GMT可用区选择。 | 示例如下:
|
OOSServiceRole | OOS的服务角色。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
RateControl | OOS的执行速率。 | 示例如下:
|
Tags | 标签。 |
示例如下:
|
Targets | ECS实例对象。支持通过实例ID、标签、资源组等方式选择实例。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
TimeTriggerWeekly | 按周选择时间。 | 示例如下:
|
TimeZone | 时区选择。 | 示例如下:
|
ALIYUN::ECS::RegionId | 地域ID(默认为资源栈所属地域)。 | 示例如下:
|
ALIYUN::ECS::ZoneId | 可用区ID。 |
示例如下:
|
ALIYUN::ECS::Instance::InstanceId | ECS实例ID。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::ECS::Instance::Password | ECS实例密码组件。
说明 密码必须包含8~30个字符,必须包含大写字母、小写字母、数字和特殊字符中的三种以上。
|
示例如下:
|
ALIYUN::RDS::Instance::InstanceId | RDS实例ID。 |
示例如下:
|
ALIYUN::RDS::Engine::EngineId | RDS数据库类型。 | 示例如下:
|
ALIYUN::RDS::Engine::EngineVersion | RDS数据库类型版本。 | Engine:数据库类型。
示例如下:
|
ALIYUN::ECS::Disk::DataDiskCategory | 数据盘类型。 |
示例如下:
|
ALIYUN::ECS::Disk::SystemDiskCategory | 系统盘类型。 |
示例如下:
|
ALIYUN::ECS::Disk::DiskId | 磁盘ID。 |
示例如下:
|
ALIYUN::ECS::VPC::VPCId | 专有网络ID。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::ECS::VSwitch::VSwitchId | 交换机ID。 |
示例如下:
|
ALIYUN::ECS::Instance::InstanceType | ECS实例规格。 |
示例如下:
|
ALIYUN::ECS::SecurityGroup::SecurityGroupId | 安全组ID。 |
示例如下:
|
ALIYUN::ECS::KeyPair::KeyPairName | 密钥对。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::ECS::Snapshot::AutoSnapshotPolicyId | 快照策略ID。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::ECS::Command::CommandId | 云助手命令或阿里云命令ID。 |
示例如下:
|
ALIYUN::ECS::Image::ImageId | 镜像ID。 |
示例如下:
|
ALIYUN::ECS::ResourceGroup::ResourceGroupId | 资源组。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::ECS::LaunchTemplate::LaunchTemplateId | 实例启动模板ID。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::ECS::LaunchTemplate::LaunchTemplateVersion | 实例启动模板版本。 |
示例如下:
|
ALIYUN::RDS::Instance::InstanceType | RDS实例规格。 |
示例如下:
|
ALIYUN::SLB::Instance::InstanceType | SLB实例规格。 |
示例如下:
|
ALIYUN::SLB::Certificate | SLB证书。 | 示例如下:
|
ALIYUN::SLB::Instance::InstanceId | SLB实例ID。 |
示例如下:
|
ALIYUN::SLB::ACL::ACLId | SLB访问控制ID。 |
示例如下:
|
ALIYUN::OOS::Template::TemplateName | OOS模板。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::OOS::Template::TemplateVersion | OOS模板版本。 |
示例如下:
|
ALIYUN::OOS::Parameter::Value | OOS普通参数。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::OOS::SecretParameter::Value | OOS加密参数。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::OOS::Package::PackageName | OOS软件包名称。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::OOS::Package::PackageVersion | OOS软件包版本。 |
示例如下:
|
ALIYUN::OOS::Command::CommandContent | OOS执行脚本。 | CommandType:命令类型。
取值:
示例如下:
|
ALIYUN::OOS::Component::CleanUpInfo | 磁盘清理规则设置组件。 | 示例如下:
|
ALIYUN::OOS::File::FileUrl | 上传文件的URL。 |
示例如下:
|
ALIYUN::OSS::Bucket::BucketName | OSS存储空间名称。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::OSS::Object::ObjectName | OSS对象名称。 |
示例如下:
|
ALIYUN::OOS::Component::TimerTrigger | OOS时间触发组件。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::VPC::VirtualBorderRouter::RouteTableId | 边界路由器ID。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::VPC::NatGateway::NatGatewayId | NAT网关ID。 |
示例如下:
|
ALIYUN::VPC::VSwitch::CidrBlock | 创建vSwitch的CIDR。 |
示例如下:
|
ALIYUN::VPC::VPC::CidrBlock | 新建VPC的CIDR。 | 示例如下:
|
ALIYUN::ESS::ScalingConfiguration::ScalingConfigurationId | 弹性伸缩配置ID。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::ESS::AutoScalingGroup::AutoScalingGroupId | ESS伸缩组ID。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::RAM::User | RAM用户。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::RAM::Role | RAM角色。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::CAS::Certificate::CertificateId | SLB实例的证书。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::Elasticsearch::Instance::InstanceType | Elasticsearch实例规格。 | 示例如下:
|
ALIYUN::InfluxDB::Instance::InstanceType | InfluxDB实例规格。 |
示例如下:
|
ALIYUN::Redis::Instance::InstanceType | Redis实例规格。 |
示例如下:
|
ALIYUN::EHPC::FileSystem::FileSystemId | 文件系统ID。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::EHPC::FileSystem::MountTargetDomain | 挂载点。 |
示例如下:
|
ALIYUN::EHPC::Cluster::ClusterId | 集群选择 。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::ALB::Instance::InstanceId | ALB实例。 |
示例如下:
|
ALIYUN::ALB::ACL::ACLId | ALB访问控制。 | RegionId:地域ID(默认为资源栈所属地域)。
示例如下:
|
ALIYUN::ResourceManager::Folder | 资源目录。 | 示例如下:
|
ALIYUN::ResourceManager::Account | 资源账号。 | 示例如下:
|
示例1:AssociationProperty示例
在参数中指定AssociationProperty取值为ALIYUN::ECS::Instance::ImageId,以获取所选地域下所有的镜像ID。
"Parameters": {
"UserName": {
"Label": "用户名",
"Description": "请输入用户名",
"Default": "anonymous",
"Type": "String",
"MinLength": "6",
"MaxLength": "12",
"AllowedValues": [
"anonymous",
"user-one",
"user-two"
]
},
"PassWord": {
"Label": "密码",
"NoEcho": "True",
"Description": "请输入用户密码",
"Type": "String",
"MinLength": "1",
"MaxLength": "41",
"AllowedPattern": "[a-zA-Z0-9]*"
},
"ImageId": {
"Label": "镜像",
"Type": "String",
"Description": "请选择镜像",
"AssociationProperty": "ALIYUN::ECS::Instance::ImageId",
"Default": "centos_7_7_x64_20G_alibase_2020****.vhd"
}
}
参数说明:
- UserName:用户名。String类型,长度为6~12个字符,取值:
- anonymous(默认值)
- user-one
- user-two
- PassWord:密码。String类型,无默认值。长度为1~41个字符,支持大写英文字母、小写英文字母和数字。
NoEcho取值为true,表示查询资源栈时将不会返回参数值。
- ImageId:镜像ID。String类型。
AssociationProperty取值为ALIYUN::ECS::Instance::ImageId,创建资源栈时ROS控制台将会验证参数指定的镜像ID是否可用,并以下拉框的方式列出所选地域的其他镜像ID取值。
示例2:AssociationPropertyMetadata示例
在参数中指定AssociationProperty和对应的AssociationPropertyMetadata(RegionId、VpcId和ZoneId),以便获取指定专有网络和可用区的交换机。其中,RegionId取值为固定值cn-hangzhou;VpcId和ZoneId取值为变量${VpcId}和${EcsZone},将根据ALIYUN::ECS::VPC::VPCId和ALIYUN::ECS::Instance::ZoneId选定的取值进行动态刷新,从而建立交换机与专有网络和可用区的关联关系。
{
"ROSTemplateFormatVersion": "2015-09-01",
"Parameters": {
"VpcId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::VPC::VPCId"
},
"EcsZone": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::Instance::ZoneId"
},
"VSwitchId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
"AssociationPropertyMetadata": {
"RegionId": "cn-hangzhou",
"VpcId": "${VpcId}",
"ZoneId": "${EcsZone}"
}
}
}
}
示例3:Terraform自动转换示例
当AssociationProperty取值为Auto时,ROS会基于Terraform原始数据结构,自动生成AssociationProperty和AssociationPropertyMetadata等字段。
-
完整模板示例代码
variable "user_information" { type = object({ name = string address = string }) description = <<EOT { "AssociationProperty": "Auto", "AssociationPropertyMetadata": { "Overwrite": { "name": { "Label": { "zh-cn": "姓名", "en": "Name" } } } } } EOT } variable "region_ids" { type = list(string) description = <<EOT { "AssociationProperty": "Auto", "AssociationPropertyMetadata": { "Overwrite": { "*": { "AssociationProperty": "ALIYUN::ECS::RegionId" } } } } EOT } variable "docker_ports" { type = list(object({ internal = number external = number protocol = string })) description = <<EOT { "AssociationProperty": "Auto", "AssociationPropertyMetadata": { "Overwrite": { "protocol": { "AllowedValues": ["TCP", "UDP", "ICMP"] }, "internal": { "Label": { "zh-cn": "内部端口", "en": "Internal Port" } } } } } EOT } variable "complex_type_demo" { type = list(object({ b = list(string) c = list(object({ d = list(string) })) e = list(list(string)) f = list(list(object({ g = list(string) }))) })) description = <<EOT { "AssociationProperty": "Auto", "AssociationPropertyMetadata": { "Overwrite": { "b": { "MaxLength": 3, "AssociationPropertyMetadata": { "Something": "123" }, "Label": { "zh-cn": "B", "en": "B" } }, "b.*": { "AssociationProperty": "ALIYUN::ECS::RegionId" }, "c": { "Label": { "zh-cn": "C", "en": "C" } }, "c.d": { "Label": { "zh-cn": "C/D", "en": "C/D" } }, "c.d.*": { "AssociationProperty": "ALIYUN::ECS::RegionId" }, "e": { "Label": { "zh-cn": "E", "en": "E" } }, "e.*": { "MaxLength": 3 }, "e.*.*": { "AssociationProperty": "ALIYUN::ECS::RegionId" }, "f.g": { "Label": { "zh-cn": "F/G", "en": "F/G" } }, "f.g.*": { "AssociationProperty": "ALIYUN::ECS::RegionId" } } } } EOT }
-
参数user_information转换后模板示例代码
{ "AssociationPropertyMetadata":{ "Parameters":{ "address":{ "Type":"String" }, "name":{ "Type":"String", "Label":{ "en":"Name", "zh-cn":"姓名" } } } } }
-
参数region_ids转换后模板示例代码
{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationProperty":"ALIYUN::ECS::RegionId", "Type":"String" } }, "AssociationProperty":"List[Parameter]" }
-
参数docker_ports转换后模板示例代码
{ "AssociationPropertyMetadata":{ "Parameters":{ "internal":{ "Type":"Number", "Label":{ "en":"Internal Port", "zh-cn":"内部端口" } }, "protocol":{ "Type":"String", "AllowedValues":[ "TCP", "UDP", "ICMP" ] }, "external":{ "Type":"Number" } } }, "AssociationProperty":"List[Parameters]" }
-
参数complex_type_demo转换后模板示例代码
{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationPropertyMetadata":{ "Parameters":{ "b":{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationProperty":"ALIYUN::ECS::RegionId", "Type":"String" }, "Something":"123" }, "AssociationProperty":"List[Parameter]", "Type":"Json", "Label":{ "en":"B", "zh-cn":"B" }, "MaxLength":3 }, "c":{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationPropertyMetadata":{ "Parameters":{ "d":{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationProperty":"ALIYUN::ECS::RegionId", "Type":"String" } }, "AssociationProperty":"List[Parameter]", "Type":"Json", "Label":{ "en":"C/D", "zh-cn":"C/D" } } } }, "Type":"Json" } }, "AssociationProperty":"List[Parameter]", "Type":"Json", "Label":{ "en":"C", "zh-cn":"C" } }, "e":{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationProperty":"ALIYUN::ECS::RegionId", "Type":"String" } }, "AssociationProperty":"List[Parameter]", "Type":"Json", "MaxLength":3 } }, "AssociationProperty":"List[Parameter]", "Type":"Json", "Label":{ "en":"E", "zh-cn":"E" } }, "f":{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationPropertyMetadata":{ "Parameters":{ "g":{ "AssociationPropertyMetadata":{ "Parameter":{ "AssociationProperty":"ALIYUN::ECS::RegionId", "Type":"String" } }, "AssociationProperty":"List[Parameter]", "Type":"Json", "Label":{ "en":"F/G", "zh-cn":"F/G" } } } }, "Type":"Json" } }, "AssociationProperty":"List[Parameter]", "Type":"Json" } }, "AssociationProperty":"List[Parameter]", "Type":"Json" } } }, "Type":"Json" } }, "AssociationProperty":"List[Parameter]" }
更多示例
您也可以使用AssociationProperty和AssociationPropertyMetadata,实现以下诉求: