【问题标题】:How can I use a value from an SSM StringList in a CloudFormation template?如何在 CloudFormation 模板中使用 SSM StringList 中的值?
【发布时间】:2021-03-01 18:38:30
【问题描述】:

假设我在 SSM ParameterStore 中有一个参数。参数有一个StringList作为值,描述一个服务,例如(bucket_name, request_url)

"serviceA" = "bucket_name_A, https://www.request.com/A"

现在,在 CloudFormation 中,我想从此字符串列表中定义我的存储桶的名称。

"S3FTSE100Intraday1min": {
            "Type": "AWS::S3::Bucket",
            "Properties": {
                "BucketName": {
                    "Fn::GetAtt": [
                        "My_SSM_ParameterStore_Logical_ID",
                        "Value"
                    ]
                },
                ...

但显然这将返回完整的字符串列表,而不仅仅是bucket_name_A

如何访问要在 CloudFormation 模板中使用的字符串列表中的参数之一?

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation aws-ssm aws-parameter-store


    【解决方案1】:

    在起草这个问题时,我开始研究 Fn:: 方法

    (来源:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-split.html

    我有个主意:

    字符串列表为:"bucket_name_A, https://www.request.com/A"

    • 使用Fn::GetAtt 检索字符串列表值 => "bucket_name_A, https://www.request.com/A"
    • Fn::Split => ["bucket_name_A", "https://www.request.com/A"] 将其拆分成一个列表
    • Fn::Select 选择第一个值 => "bucket_name_A"

    它有效!下面是cloudformation模板:

    SSM Parameter Store:

    "SSMTestBucketName": {
                "Type": "AWS::SSM::Parameter",
                "Properties": {
                    "Name": "StringList_Test_Bucket_Name",
                    "Type": "StringList",
                    "Value": "test-ssm-stringlist-bucket, https://www.requesturl.com"
                }
            }
    

    S3 Bucket:

    "S3TestBucket": {
                "Type": "AWS::S3::Bucket",
                "Properties": {
                    "BucketName": {
                        "Fn::Select": [
                            "0",
                            {
                                "Fn::Split": [
                                    ",",
                                    {
                                        "Fn::GetAtt": [
                                            "SSMTestBucketName",
                                            "Value"
                                        ]
                                    }
                                ]
                            }
                        ]
                    },
                    "BucketEncryption": {
                        "ServerSideEncryptionConfiguration": [
                            {
                                "ServerSideEncryptionByDefault": {
                                    "SSEAlgorithm": "AES256"
                                }
                            }
                        ]
                    },
                    "PublicAccessBlockConfiguration": {
                        "BlockPublicAcls": true,
                        "BlockPublicPolicy": true,
                        "IgnorePublicAcls": true,
                        "RestrictPublicBuckets": true
                    },
                    "LifecycleConfiguration": {
                        "Rules": [
                            {
                                "Status": "Enabled",
                                "Transitions": [
                                    {
                                        "TransitionInDays": "30",
                                        "StorageClass": "STANDARD_IA"
                                    }
                                ]
                            }
                        ]
                    }
                }
            }
    

    【讨论】:

      猜你喜欢
      • 2022-08-18
      • 1970-01-01
      • 2020-05-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-03
      • 2021-04-22
      • 1970-01-01
      • 2019-08-12
      相关资源
      最近更新 更多