我正在尝试使用 Elastic Beanstalk 和 Flask 将类似 Instagram 的应用程序部署到 AWS。使用后电子部署命令,我能够访问应用程序主页,这不需要访问 DynamoDB 表。当我尝试登录时,应用程序应访问 DynamoDB 表来检索数据,例如图片中的点赞数,但它显示
500内部服务器错误
And my eb logs返回此错误。
ClientError:调用 >Scan 操作时发生错误 (AccessDeniedException):用户:arn:aws:sts::013051511429:assumed-role/aws->elasticbeanstalk-ec2-role/i-049593eb550052c8f 无权执行 >perform: 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 https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-api.html
这些是我附加到我的 aws-elasticbeanstalk-ec2-role 的策略:
- 亚马逊RDS完全访问
- AmazonS3完全访问
- AWSLambdaDynamoDBExecutionRole
- AWSElasticBeanstalkWebTier
- AWSElasticBeanstalk多容器Docker
- AWSElasticBeanstalkWorkerTier
我在用着:
Python 2.7
烧瓶1.0.2
您提供的保单,AWSLambdaDynamoDBExecutionRole
,适用于 DynamoDB 流。它不允许访问表。
解决这个问题的一种方法是添加AmazonDynamoDBFullAccess
尽管更好的方法是创建一个 IAM 策略,该策略仅允许所需的操作以及您需要的资源(DynamoDB 表)。这是一个example https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_specific-table.html这样做的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)