gpt4 book ai didi

aws-lambda - AWS SAM 模板设置环境特定变量

转载 作者:行者123 更新时间:2023-12-01 11:12:01 27 4
gpt4 key购买 nike

我正在尝试配置特定于环境的 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

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

最佳答案

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

sam deploy cli

让我演示如何:

在你的 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 命令,同时根据你的 Env 变量(process.env.ENV )(转换为参数如何覆盖模式)作为参数覆盖参数。

希望这可以帮助

关于aws-lambda - AWS SAM 模板设置环境特定变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59060808/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com