我正在尝试配置一个特定于环境的Lambda函数的S3策略桶。我希望能够在"sam“或"sam”中传递一个变量,指定"dev“、"test”或"prod“。变量将在template.yaml文件中用于选择特定于环境的设置:
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如何使用参数和或变量来实现这一点?谢谢。
发布于 2019-11-27 09:57:43
您应该在您的—parameter-overrides命令中使用sam deploy。
让我示范一下:
在template.yaml中:
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}"然后执行:
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文件为参数--重写参数参数。
希望这能有所帮助
发布于 2019-11-27 04:29:17
您希望使用模板的Parameters部分。查看文档这里。然后,您可以使用--parameter-overrides标志和sam deploy命令。
https://stackoverflow.com/questions/59060808
复制相似问题