Jus*_*tin 0 amazon-web-services aws-cloudformation amazon-kinesis
我有两个嵌套的 Cloudformation 堆栈 - 第一个模板需要定义 Kinesis 流,第二个需要使用对该流的 ARN 的引用,作为进一步嵌套堆栈的参数。
因此,似乎我需要从第一个模板“导出”流,并将其“导入”到第二个模板中(遵循有关跨堆栈导入/导出值的 AWS 文档)-
我的导出代码 [截断] 看起来像这样 -
Outputs:
MyKinesisStreamOutput:
Value:
Ref: MyKinesisStream
Export:
Name: my-kinesis-stream
Resources:
MyKinesisStream:
Properties:
Name:
Ref: AppName
ShardCount: 1
Type: AWS::Kinesis::Stream
Run Code Online (Sandbox Code Playgroud)
虽然我的导入代码 [截断] 看起来像这样 -
MyNestedStack:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: !Sub "https://s3.${AWS::Region}.amazonaws.com/my-nested-stack.yaml"
Parameters:
AppName: my-nested-stack
KinesisStream:
Fn::GetAtt:
- Fn::ImportValue:
my-kinesis-stream
- Arn
Run Code Online (Sandbox Code Playgroud)
但是后来我收到以下 Cloudformation 错误 -
Template error: every Fn::GetAtt object requires two non-empty parameters, the resource name and the resource attribute
Run Code Online (Sandbox Code Playgroud)
并怀疑我犯了这个 -
For the Fn::GetAtt logical resource name, you cannot use functions. You must specify a string that is a resource's logical ID.
Run Code Online (Sandbox Code Playgroud)
假设我正确导出和导入 Kinesis 流,那么我应该如何获得它的 Arn 值?
当您在 中导出某些内容时Outputs,它只是一个字符串,您不能再GetAtt在导入模板中使用它。
您需要做的是额外导出 ARN:
Outputs:
MyKinesisStream:
Value: !Ref MyKinesisStream
Export:
Name: my-kinesis-stream
MyKinesisStreamArn:
Value: !GetAtt MyKinesisStream.Arn
Export:
Name: my-kinesis-stream-arn
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
772 次 |
| 最近记录: |