繁体   English   中英

Cloudformation YAML 自定义变量

[英]Cloudformation YAML custom variable

我正在尝试在 AWS Cloudformation YAML 文件中实现类似于下面的内容:

AWSTemplateFormatVersion: 2010-09-09

testAttribute = "test"

Resources:
  Lambda:
    Type: AWS::Lambda::Function
    Properties:
      Runtime: python3.7
      Role: !GetAtt iam.Arn
      MemorySize: 128
      Timeout: 10
      Handler: lambda_function.lambda_handler
      FunctionName: "testName"+${testAttribute}
      Description: 'This is my lambda'
      Code:
        S3Bucket: myBucket
        S3Key: "lambda/testName"+${testAttribute}+".zip"

我知道上面的内容不太正确,但是在搜索如何实现它时找不到好的答案。 有人对此事有指导吗?

这取决于用例,但如果“变量”为 static 并且您在部署堆栈时不需要更改它,我建议使用映射部分的替代解决方案。

这允许您定义一些 static 值而无需在部署堆栈时发送它们(您将拥有更清晰的部署命令,并且逻辑将在模板端而不是部署端)。

在这种情况下,我使用带有映射的!Sub intrinsic function(您可以设置多个变量以使用:Sub 替换):

AWSTemplateFormatVersion: 2010-09-09

Mappings:
 attributes:
  lambda:
   testAttribute: "test"

Resources:
  Lambda:
    Type: AWS::Lambda::Function
    Properties:
      Runtime: python3.7
      Role: !GetAtt iam.Arn
      MemorySize: 128
      Timeout: 10
      Handler: lambda_function.lambda_handler
      FunctionName: !Sub 
                     - "testName${attr}"
                     - {attr: !FindInMap [attributes, lambda, testAttribute]}
      Description: 'This is my lambda'
      Code:
        S3Bucket: myBucket
        S3Key: !Sub 
                - "lambda/testName${attr}.zip"
                - {attr: !FindInMap [attributes, lambda, testAttribute]}

注意:映射具有强制性的三级嵌套,在设计解决方案时请考虑到这一点

您可以使用具有默认值的Parameters ,然后在模板中使用Sub

AWSTemplateFormatVersion: 2010-09-09

Parameters:
  testAttribute:
    Type: String
    Default: test

Resources:
  Lambda:
    Type: AWS::Lambda::Function
    Properties:
      Runtime: python3.7
      Role: !GetAtt iam.Arn
      MemorySize: 128
      Timeout: 10
      Handler: lambda_function.lambda_handler
      FunctionName: !Sub "testName${testAttribute}"
      Description: 'This is my lambda'
      Code:
        S3Bucket: myBucket
        S3Key: !Sub "lambda/testName${testAttribute}.zip"

[因错别字而编辑]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM