簡體   English   中英

如何在 cloudformation 模板中使用 AWS SSM 的 StringList 值

[英]How to use StringList value of AWS SSM in cloudformation template

我在 aws ssm 中存儲了兩個子網,其數據類型為 StringList ,如 s1,s2 和 lambda function 我想使用 cloudformation 模板附加這兩個子網。 Lambda function 會將數據放入 postgres 數據庫,因此我需要附加這些子網。

AWSTemplateFormatVersion: "2010-09-09"
Transform: "AWS::Serverless-2016-10-31"

Resources:
  ExportToS3Function:
    Type: AWS::Serverless::Function 
    Properties:
      FunctionName: testing-ssm
      CodeUri: testing-ssm/
      Environment:
        Variables:
          RDS_SECRET: XXXXXXX
          REGION: !Sub "${AWS::Region}"
      Handler: lambda_function.lambda_handler
      Runtime: python3.8
      Timeout: 600
      MemorySize: 1750
      VpcConfig:
        SecurityGroupIds:
          - '{{resolve:ssm:/testing/vpc/sg:1}}'
        SubnetIds: !Split [',','{{resolve:ssm:/testing/vpc/subnets:1}}']
      Role: !GetAtt testing-ssm.Arn

但是上面的線,Split [',':'{{resolve:ssm:/testing/vpc/subnets:1}}'] 在部署時給了我一個錯誤

資源處理程序返回消息:“檢測到 1 個驗證錯誤:‘vpcConfig.subnetIds’處的值‘[subnet-XXXXX,subnet-XXXXXX]’未能滿足約束

無論指定的類型如何,SSM 都必須是字符串類型。 類型只是客戶端的元數據。 所以如果你有一個數組,你需要在改造這個 SSM 時執行ssm_list -> value = join(", ", subnet_ips_list) 在模板中,您可以將其引用為Type: 'AWS::SSM::Parameter::Value<CommaDelimitedList>'並且您可以在SubnetIds: ssm_list之后直接傳遞一個數組

或一一

SubnetIds:
  - !Select [0, !Split [ ", ", ssm_list ]]

也許這些也會有所幫助: 如何使用 Terraform 在 AWS SSM 參數中存儲三元素元組?

暫無
暫無

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

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