amazon-dynamodb - 使用无服务器框架创建的 DynamoDB 表名具有随机后缀
问题描述
我正在使用无服务器框架创建 DynamoDB 表,然后我想从 Lambda 函数访问它。
在serverless.yml
文件中,我有以下环境变量和 CF 资源的定义。
我期待的是一个名称为的表accounts-api-dev-accounts
,但 cloudformation 堆栈为我创建的是accounts-api-dev-accounts-SOME_RANDOM_LETTERS_AND_NUMBERS_SUFFIX
。
在我的 lambda 函数中,环境变量在没有该部分DYNAMODB_ACCOUNTS_TABLE_NAME
的情况下暴露给函数。SOME_RANDOM_LETTERS_AND_NUMBERS_SUFFIX
CF 堆栈是否应该添加随机后缀?我如何实际检索正确的表名?
service:
name: accounts-api
provider:
...
stage: ${opt:stage, 'dev'}
environment:
DYNAMODB_ACCOUNTS_TABLE_NAME: '${self:service}-${self:provider.stage}-accounts'
以及以下 CF 资源:
Resources:
AccountsTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: ${env:DYNAMODB_ACCOUNTS_TABLE_NAME}
AttributeDefinitions:
- AttributeName: customerNumber
AttributeType: S
- AttributeName: accountNumber
AttributeType: S
KeySchema:
- AttributeName: customerNumber
KeyType: HASH
- AttributeName: accountNumber
KeyType: RANGE
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
解决方案
也许在创建表定义时环境变量还没有更新?我不确定。
尝试${self:provider.environment.DYNAMODB_ACCOUNTS_TABLE_NAME}
代替${env:DYNAMODB_ACCOUNTS_TABLE_NAME}
.
推荐阅读
- git - 如何比较 Bitbucket 服务器中的两个提交
- javascript - 单击 html 页面中的删除图标滚动到页面顶部 - Knockout.js
- git - Git Merge 忽略从开发恢复但添加到功能分支的文件
- sql - 为每组数据聚合一组结果
- php - 删除逗号分隔字符串php中的字符
- typescript - 传递索引类型时,Typescript 的多余属性检查失败
- debugging - Step in, Step out 和 Step Over 有什么区别?
- eclipse - 迁移到 Eclipse photon 时,Eclipse RCP 最大化编辑器不显示
- android - 如何修复 EBUSY:Ionic 3 中的资源繁忙或锁定?
- javascript - 如何在 javascript 中使用 fetch api 从 C# Web 方法获取响应?