tam*_*ler 4 aws-lambda aws-sam
我正在尝试配置特定于环境的 Lambda 函数的 S3 策略存储桶。我希望能够在指定“dev”、“test”或“prod”的“sam package”或“sam deploy”期间传递变量。该变量将在 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
Run Code Online (Sandbox Code Playgroud)
如何使用参数和/或变量来实现这一点?谢谢你。
你应该—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}"
Run Code Online (Sandbox Code Playgroud)
然后执行:
sam deploy --template-file packaged.yaml --stack-name yourstack --capabilities CAPABILITY_IAM --parameter-overrides Env=dev S3Bucket=bucket-name
Run Code Online (Sandbox Code Playgroud)
如果你想从.json每个 env的文件中传递你的参数,你应该考虑使用cross-env ENV=dev来传递你的Env变量,然后在根据你的变量 (process.env.ENV)传递你的 json 文件时使用gulp或执行你的sam deploy --parameter-overrides命令Env(转换为如何参数覆盖模式)作为参数覆盖参数。
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
4119 次 |
| 最近记录: |