首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS SAM模板设置环境特定变量

AWS SAM模板设置环境特定变量
EN

Stack Overflow用户
提问于 2019-11-26 23:18:49
回答 2查看 7.9K关注 0票数 6

我正在尝试配置一个特定于环境的Lambda函数的S3策略桶。我希望能够在"sam“或"sam”中传递一个变量,指定"dev“、"test”或"prod“。变量将在template.yaml文件中用于选择特定于环境的设置:

代码语言:javascript
复制
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
  image-processing


Resources:
  ImageProcessingFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: src/handlers/image-processing.handler
      Runtime: nodejs12.x
      CodeUri: .
      MemorySize: 256
      Timeout: 300
      Policies:
        S3CrudPolicy:
          BucketName: dev-bucket-name  <-- change this to dev, test or prod

如何使用参数和或变量来实现这一点?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-27 09:57:43

您应该在您的—parameter-overrides命令中使用sam deploy

山姆部署cli

让我示范一下:

在template.yaml中:

代码语言:javascript
复制
Parameters:
Env:
    Type: String

S3Bucket:
    Type: String

Resources:

ImageProcessingFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: src/handlers/image-processing.handler
      Runtime: nodejs12.x
      CodeUri: .
      MemorySize: 256
      Timeout: 300
      Policies:
        S3CrudPolicy:
          BucketName: !Sub "${Env}-${S3Bucket}"

然后执行:

代码语言:javascript
复制
sam deploy --template-file packaged.yaml --stack-name yourstack --capabilities CAPABILITY_IAM --parameter-overrides Env=dev S3Bucket=bucket-name

如果希望每个env从.json文件传递参数,则应考虑使用cross-env ENV=dev传递Env变量,然后使用gulp或其他方法执行sam deploy --parameter-overrides命令,同时根据json变量(process.env.ENV) (转换为参数重写模式)传递json文件为参数--重写参数参数。

希望这能有所帮助

票数 12
EN

Stack Overflow用户

发布于 2019-11-27 04:29:17

您希望使用模板的Parameters部分。查看文档这里。然后,您可以使用--parameter-overrides标志和sam deploy命令。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59060808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档