資料來源資源(DataSource)用於查詢雲端服務資源資料。資料來源資源輸出屬性有兩種類型,一種是查詢結果為單個資源,另一種是查詢結果為多個資源,其中多個資源以列表的結果輸出。本文為你介紹如何在模板中引用資料來源資源(DataSource)輸出變數。
查詢結果為單個資源
查詢單個RDS執行個體(DATASOURCE::RDS::DBInstance),擷取RDS執行個體的內網串連連接埠Port,並為其申請一條外網串連地址為例。
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
DBInstanceId:
Type: String
AssociationProperty: ALIYUN::RDS::Instance::InstanceId
Resources:
ExtensionDataSource:
Properties:
DBInstanceId:
Ref: DBInstanceId
Type: DATASOURCE::RDS::DBInstance
Connection:
Type: ALIYUN::RDS::Connection
Properties:
DBInstanceId:
Ref: DBInstanceId
ConnectionStringPrefix: test1
Port:
Fn::GetAtt:
- ExtensionDataSource
- Port
Outputs:
Port:
Description: The port that is used to connect to the instance over an internal network.
Value:
Fn::GetAtt:
- ExtensionDataSource
- Port
ConnectionString:
Description: Connection string
Value:
Fn::GetAtt:
- Connection
- ConnectionString查詢結果為多個資源
查詢已建立的交換器(DATASOURCE::VPC::VSwitches),並為查詢到的交換器的CidrBlock建立安全性群組入方向的訪問規則。其中使用內建函式Fn::Jq用於擷取輸出結果vSwitches中第一個交換器的CidrBlock,Jq功能詳情請參見Jq文檔。
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
VpcId:
Type: String
AssociationProperty: ALIYUN::ECS::VPC::VPCId
Description: Please search the ID starts with (vpc-xxx)from console-Virtual Private Cloud
Label: Existing VPC Instance ID
SecurityGroupId:
Type: String
AssociationProperty: ALIYUN::ECS::SecurityGroup::SecurityGroupId
AssociationPropertyMetadata:
VpcId: ${VpcId}
Default: ''
Resources:
ExtensionDataSource:
Type: DATASOURCE::VPC::VSwitches
Properties:
VpcId:
Ref: VpcId
SecurityGroupIngress:
Type: ALIYUN::ECS::SecurityGroupIngress
Properties:
IpProtocol: all
SecurityGroupId:
Ref: SecurityGroupId
NicType: intranet
SourceCidrIp:
Fn::Jq:
- First
- .[0].CidrBlock
- Fn::GetAtt:
- ExtensionDataSource
- VSwitches
PortRange: '-1/-1'
Outputs:
CidrBlock:
Description: Cidr Block.
Value:
Fn::Jq:
- First
- .[0].CidrBlock
- Fn::GetAtt:
- ExtensionDataSource
- VSwitches