“alfred”助手和 CloudFormation 参数文件
CfCT 为您提供了一种称为 alfred 助手的机制,用于获取 CloudFormation 模板中定义的 SSM Parameter Store 键的值。使用 alfred 助手,您可以使用存储在 SSM Parameter Store 中的值,而无需更新 CloudFormation 模板。有关更多信息,请参阅《CloudFormation 用户指南》中的什么是 CloudFormation 模板?。
重要
alfred 助手有两个限制。参数仅在 AWS Control Tower 管理账户的主区域中可用。作为最佳实践,可以考虑使用堆栈实例之间不会发生变化的值。当“alfred”助手检索参数时,它会从导出该变量的堆栈集中随机选择一个堆栈实例。
示例
假设您有两个 CloudFormation 堆栈集。堆栈集 1 有一个堆栈实例,可部署到一个区域中的一个账户。它在可用区中创建 Amazon VPC 和子网,并且 VPC ID 和 subnet ID 必须作为参数值传递到堆栈集 2 中。在可将 VPC
ID 和 subnet ID 传递到堆栈集 2 中之前,必须使用 AWS:::SSM::Parameter 将 VPC ID 和 subnet ID 存储在堆栈集 1 中。有关更多信息,请参阅《CloudFormation 用户指南》中的 AWS:::SSM::Parameter。
CloudFormation 堆栈集 1:
在以下代码段中,alfred 助手可以从 Parameter Store 获取 VPC ID 和 subnet ID 的值,并将它们作为输入传递给 StackSet 状态机。
VpcIdParameter: Type: AWS::SSM::Parameter Properties: Name: '/stack_1/vpc/id' Description: Contains the VPC id Type: String Value: !Ref MyVpc SubnetIdParameter: Type: AWS::SSM::Parameter Properties: Name: '/stack_1/subnet/id' Description: Contains the subnet id Type: String Value: !Ref MySubnet
CloudFormation 堆栈集 2:
该代码段显示了 CloudFormation 堆栈 2 manifest.yaml 文件中指定的参数。
parameters: - parameter_key: VpcId parameter_value: $[alfred_ssm_/stack_1/vpc/id] - parameter_key: SubnetId parameter_value: $[alfred_ssm_/stack_1/subnet/id]
CloudFormation 堆栈集 2.1:
该代码段显示了您可以列出 alfred_ssm 属性来支持类型为 CommaDelimitedList 的参数。有关更多信息,请参阅《CloudFormation 用户指南》中的 Parameters。
parameters: - parameter_key: VpcId # Type: String parameter_value: $[alfred_ssm_/stack_1/vpc/id'] - parameter_key: SubnetId # Type: String parameter_value: $[ alfred_ssm_/stack_1/subnet/id'] - parameter_key: AvailablityZones # Type: CommaDelimitedList parameter_value: - "$[alfred_ssm_/availability_zone_1]" - "$[alfred_ssm_/availability_zone_2]"