在调用扫描操作时如何解决(AccessDeniedException):用户:arn:aws:sts ...无权执行:dynamodb:对资源进行扫描。

时间:2019-04-03 14:18:12

标签: python amazon-web-services amazon-dynamodb amazon-iam

我正在尝试使用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

我正在使用:  Python 2.7  烧瓶1.0.2

1 个答案:

答案 0 :(得分:0)

您提供的策略RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.domain\.co.uk$ RewriteCond %{HTTP_HOST} ^(\w+)\.domain\.co.uk$ RewriteCond %{REQUEST_URI}:%1 !^/([^/]+)/([^:]*):\1 RewriteRule ^(.*)$ /%1 [QSA] 适用于DynamoDB流。它不允许访问表。

解决此问题的一种方法是添加AWSLambdaDynamoDBExecutionRole策略,尽管更好的方法是创建一个IAM策略,该策略仅允许所需的那些操作和仅所需的那些资源(DynamoDB表)。这是这样做的example