amazon-web-services - 使用参数在 AWS SAM 中动态创建资源名称

标签 amazon-web-services aws-cloudformation aws-sam

如果可能的话,我希望在使用 AWS SAM 时为 Cloud Formation 堆栈中的资源动态创建名称。

例如当我打包或部署时,我希望能够向命令行添加一些内容,如下所示:

sam 包 --s3-bucket..... --parameters stage=prod

当在我的 template.yml 文件中以某种方式执行如下操作时:

Resources:
  OrdersApi:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: orders-api-${stage}
      CodeUri: ./src/api/services/orders/
      ...

关于 FunctionNameOrdersApi 属性的注意事项我想将其动态设置为 orders-api-prod 这是我尝试的值在 CLI 上传递。

我可以使用无服务器框架轻松地完成此操作,但我不太清楚如何使用 SAM 来完成此操作。

最佳答案

您可以使用类似 Sub 的函数在 CloudFormation 中构造资源名称。大致思路是这样的:

Parameters:
  stage:
    Type: String
    Default: dev
    AllowedValues:
      - dev
      - prod
Resources:
  OrdersApi:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: !Sub 'orders-api-${stage}'

关于amazon-web-services - 使用参数在 AWS SAM 中动态创建资源名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57771209/

相关文章:

amazon-web-services - 无法为 lambda visual studio 代码复制 "Run locally"

c# - 删除 Amazon S3 存储桶中早于 X 天的每个文件的版本

amazon-web-services - AWS Secret Manager secret 检索到云前端模板 YAML

authentication - 如何使用 CloudFormation 在 EC2 实例启动时复制文件并添加动态内容?

node.js - 如何查看通过 SAM 本地调用 Lambda 的完整日志?

amazon-web-services - AWS SAM : How to create an S3 bucket with an already existing encryption key using SAM

php - Amazon S3 - 405 方法不允许使用 POST(尽管我允许在存储桶上使用 POST)

ruby - 我应该使用什么 gem 来使用 AWS

node.js - AWS-SES : Adding link in my email template

amazon-web-services - 如何在 JSON 格式的 AWS CloudFormation 模板中将 google 添加为 AWS cognito 身份提供商