AWS SAM 模板设置环境特定变量
AWS SAM Template setting environment specific variables
我正在尝试配置特定于环境的 Lambda 函数的 S3 策略存储桶。我希望能够在 "sam package" 或 "sam deploy" 期间传递变量,指定 "dev"、"test" 或 "prod"。该变量将在 template.yaml 文件中用于 select 环境特定设置:
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
如何使用参数和/或变量实现此目的?谢谢。
您想使用模板的 Parameters
部分。查看文档 here。然后,您可以将 —parameters-overrides
标志与 sam deploy
命令一起使用。
您应该在 sam deploy
命令中使用 —parameter-overrides
。
让我演示一下:
在你的 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
如果你想从每个环境的 .json
文件传递你的参数,你应该考虑使用 cross-env ENV=dev
传递你的 Env
变量,然后使用 gulp
或其他执行你的 sam deploy --parameter-overrides
命令,同时根据你的 Env
变量(process.env.ENV)传递你的 json 文件(转换为参数如何覆盖模式)作为参数覆盖参数。
希望对您有所帮助
我正在尝试配置特定于环境的 Lambda 函数的 S3 策略存储桶。我希望能够在 "sam package" 或 "sam deploy" 期间传递变量,指定 "dev"、"test" 或 "prod"。该变量将在 template.yaml 文件中用于 select 环境特定设置:
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
如何使用参数和/或变量实现此目的?谢谢。
您想使用模板的 Parameters
部分。查看文档 here。然后,您可以将 —parameters-overrides
标志与 sam deploy
命令一起使用。
您应该在 sam deploy
命令中使用 —parameter-overrides
。
让我演示一下:
在你的 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
如果你想从每个环境的 .json
文件传递你的参数,你应该考虑使用 cross-env ENV=dev
传递你的 Env
变量,然后使用 gulp
或其他执行你的 sam deploy --parameter-overrides
命令,同时根据你的 Env
变量(process.env.ENV)传递你的 json 文件(转换为参数如何覆盖模式)作为参数覆盖参数。
希望对您有所帮助