【发布时间】: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 流。
-
那我应该用哪一个?
标签: python amazon-web-services amazon-dynamodb amazon-iam