【发布时间】:2021-02-10 16:18:49
【问题描述】:
我继承了一个使用 ddb 的 API。不幸的是,一切都在一张生产台上完成。我正在完成开发设置,因此我们不必在生产台上进行试验。事实证明,新数据更干净,我们的客户想要使用它。我想,我可以简单地更新 ddb 配置的 Resource 块以指向新的 ddb 表资源 arn,但那是我遇到麻烦的时候。
部分配置如下所示:
...
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:DescribeTable
- dynamodb:Query
- dynamodb:Scan
- dynamodb:GetItem
- dynamodb:PutItem
- dynamodb:UpdateItem
- dynamodb:DeleteItem
Resource:
- "arn:aws:dynamodb:us-east-1:*:table/${self:provider.environment.PROD_TABLE}"
起初,我只是简单地将 Resource 块更新为下面的值并部署
- "arn:aws:dynamodb:us-east-1:*:table/${self:provider.environment.DEV_TABLE}"
部署后,我在 CloudWatch 中收到此(已编辑)错误:
AccessDeniedException: User: arn:aws:sts::<redacted>:assumed-role/... is not authorized to perform: dynamodb:DescribeTable on resource: arn:aws:dynamodb:us-east-1<redacted>/PROD_TABLE
注意,arn:aws:dynamodb 资源(上图)正在引用旧表
重新部署不会更新新创建的假定 (lambda) 角色的资源。我不确定如何在没有“删除”和“部署”的情况下实现这一点。
放弃一个精确的解决方案是否有更简单的方法来切换到不同的 ddb 而不会对我们的用户造成任何重大干扰?
【问题讨论】:
标签: lambda amazon-dynamodb serverless