Serverless Framework dynamobd iamRoleStatements modify -> AccessDeniedException



我继承了一个使用ddb的API。不幸的是,一切都是在一个生产表上完成的。我正在完成开发设置的过程中,所以我们不必在生产表上进行实验。事实证明,新数据要干净得多,我们的客户想要使用它。我想,我可以简单地更新我们的ddb配置的资源块,以指向新的ddb表资源,但这就是我遇到麻烦的时候。

部分配置如下:

...  
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)角色更新资源。我不知道如何使这种情况发生没有"删除"one_answers"部署!">

放弃一个确切的解决方案,是否有一种更容易的方法来切换到不同的ddb,而不会对我们的用户造成任何重大干扰?

基于我在日志中看到的

AccessDeniedException: User: arn:aws:sts::: assumption -role/…没有权限对资源执行:dynamodb: DescribeTable: arn:aws:dynamodb:us-east-1/PROD_TABLE

配置已经生效,因为用户现在没有权限对旧表(PROD_TABLE)进行描述。可能在代码的某个地方,您仍然试图使用旧表而不是新表。

如果你仍然需要这个,你可以给两个表的角色权限:

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}"
- "arn:aws:dynamodb:us-east-1:*:table/${self:provider.environment.ENV_TABLE}"

相关内容

  • 没有找到相关文章

最新更新