如果可能的话,我希望在使用 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/
...
关于 FunctionName
的 OrdersApi
属性的注意事项我想将其动态设置为 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/