AWS CloudFront - 跨云前端堆栈将参数作为“全局”参数导入

时间:2020-12-31 18:50:06

标签: json amazon-web-services import amazon-cloudformation

我想从我正在运行的堆栈中导出一个值,然后将它作为“全局”参数导入另一个堆栈,以便我可以操纵它并将其用于 S3 存储桶名称。我已经知道我可以使用以下内容在资源中的一行中单独导入值:

{ "Fn::ImportValue" : { "Fn::Sub" : "${StackName}-ParameterName" } }

但是有没有办法将它导入我的参数部分?

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

<块引用>

但是有没有办法将它导入我的参数部分?

没有这样的选择。最接近的方法是将全局值保存在 SSM Parameter Store 中,并使用 CloudFormation 中的 dynamic references 作为 Default 中的 Parameters 值。

答案 1 :(得分:0)

有两种方法可以实现这一点

  1. 使用SSM Parameter Store,将源栈中的值存储到SSM参数存储中

         BasicParameter:
         Type: AWS::SSM::Parameter
         Properties:
         Name: AvailabilityZone
         Type: String
         Value:
             Ref: AvailabilityZone
    

然后将值直接引用到参数部分,如下所示:

    ---
    AWSTemplateFormatVersion: '2010-09-09'
    Parameters:
    ...
    AvailabilityZone:
        Description: Amazon EC2 instance Availablity Zone
        Type: AWS::SSM::Parameter::Value<String>
        Default: AvailabilityZone
    Mappings: {}
    Conditions: {}
    Resources:
    myinstance:
        Type: AWS::EC2::Instance
        Properties:
        AvailabilityZone:
            Ref: AvailabilityZone
            ...

完整的例子可以在here

  1. 您在启动堆栈时使用源堆栈的输出并将它们传递到目标堆栈。

配置的源堆栈输出

    Outputs:
    InstanceID:
        Description: The Instance ID
        Value: !Ref EC2Instance

在目标堆栈中使用它们:

        aws \
        --region us-east-1 \
        cloudformation deploy \
        --template-file cfn.yml \
        --stack-name mystack \
        --no-fail-on-empty-changeset \
                    --tags Application=awesomeapp \
        --parameter-overrides \
                                    "Somevar=OUTUT_FROM_SOURCE_STACK" 
相关问题