调用扫描操作时如何解决 (AccessDeniedException):用户:arn:aws:sts... 无权执行:dynamodb:Scan on resource.."?
Posted
技术标签:
【中文标题】调用扫描操作时如何解决 (AccessDeniedException):用户:arn:aws:sts... 无权执行:dynamodb:Scan on resource.."?【英文标题】:How to solve (AccessDeniedException) when calling the Scan operation: User: arn:aws:sts... is not authorized to perform: dynamodb:Scan on resource.."? 【发布时间】:2019-08-25 02:43:05 【问题描述】:我正在尝试使用 Elastic Beanstalk 和 Flask 将类似 Instagram 的应用程序部署到 AWS。使用 eb deploy 命令后,我可以访问应用程序主页,不需要访问 DynamoDB 表。当我尝试登录时,应用程序应该访问 DynamoDB 表来检索数据,例如图片中的点赞数,但是它显示了一个
500 内部服务器错误
而我的 eb 日志 会返回此错误。
ClientError:调用 >Scan 操作时发生错误 (AccessDeniedException):用户:arn:aws:sts::013051511429:assumed-role/aws->elasticbeanstalk-ec2-role/i-049593eb550052c8f 未授权 >执行:dynamodb:扫描资源:arn:aws:dynamodb:us-east->1:013051511429:table/cloudgram
我认为这是由于 IAM 配置错误造成的,它表示与我的 EC2 实例 (i-04959..) 对应的用户无权对我的 DynamoDB 表执行扫描。
我尝试过以下操作: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-api.html
这些是我附加到我的 aws-elasticbeanstalk-ec2-role 的策略:
AmazonRDSFullAccess AmazonS3FullAccess AWSLambdaDynamoDBExecutionRole AWSElasticBeanstalkWebTier AWSElasticBeanstalkMulticontainerDocker AWSElasticBeanstalkWorkerTier我正在使用: 蟒蛇 2.7 烧瓶 1.0.2
【问题讨论】:
您没有提供适当的 DynamoDB 角色来访问表。 AWSLambdaDynamoDBExecutionRole 用于 DynamoDB 流。 那我应该用哪一个? 【参考方案1】:您提供的策略 AWSLambdaDynamoDBExecutionRole
适用于 DynamoDB 流。它不允许访问表。
解决此问题的一种方法是添加 AmazonDynamoDBFullAccess
策略,但更好的方法是创建一个 IAM 策略,该策略仅允许那些所需的操作和您需要的那些资源(DynamoDB 表)。这是一个 example 这样做的。
【讨论】:
我添加了 FullAccess 策略,实际上它起作用了!稍后我将尝试遵循此示例并进行改进!非常感谢!【参考方案2】:我遇到了同样的问题,原因有很多。对于有同样情况的人,我想提一下my solution。
这是因为权限限制。
【讨论】:
【参考方案3】:我有同样的问题:elasticbeanstalk-ec2-role 无法在 dynamodb 上执行扫描,我为角色添加了完整的访问策略,甚至运行了策略模拟器并进行了检查,但是我的应用程序仍然有同样的问题
【讨论】:
这并不能真正回答问题。如果您有其他问题,可以点击 提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review 答案应该是为了解决问题?以上是关于调用扫描操作时如何解决 (AccessDeniedException):用户:arn:aws:sts... 无权执行:dynamodb:Scan on resource.."?的主要内容,如果未能解决你的问题,请参考以下文章
S3:调用GetObject操作时发生错误(AccessDenied):Access Denied
botocore.exceptions.ClientError:调用PutObject操作时发生错误(AccessDenied):访问被拒绝
通过 Lambda 到 GetObject 的 Cognito 身份验证角色 - 调用 GetObject 操作时发生错误 (AccessDenied):访问被拒绝
调用扫描操作时如何解决 (AccessDeniedException):用户:arn:aws:sts... 无权执行:dynamodb:Scan on resource.."?
如何解决这个问题? AWS updateAutoScalingGroup - 错误:AccessDenied:您无权使用启动模板