簡體   English   中英

如何在 CloudFormation 模板中使用來自 SSM StringList 的值?

[英]How can I use a value from an SSM StringList in a CloudFormation template?

假設我在 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 ,而不僅僅是bucket_name_A

如何訪問要在 CloudFormation 模板中使用的字符串列表中的參數之一?

在起草這個問題時,我開始研究 Fn:: 方法

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

我有一個想法:

"bucket_name_A, https://www.request.com/A"是: "bucket_name_A, https://www.request.com/A" : "bucket_name_A, https://www.request.com/A"

  • 使用Fn::GetAtt => "bucket_name_A, https://www.request.com/A"檢索Fn::GetAtt列表值
  • 使用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"
                                }
                            ]
                        }
                    ]
                }
            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM