我真的是一个法律新手,如果这是一个愚蠢的问题,那么很抱歉。
我做了一个与在线DynamoDB表连接的网站,它完全在我的本地工作,但是当我在我的Elastic Beanstalk环境中部署网站代码时,它不连接到DynamoDB表。
有什么我应该做的配置吗?
恐怕没有别人遇到过这个问题。
我的网站是用aws php sdk编写的,由aws.phar.
我为iam用户创建了一个策略,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"dynamodb:GetItem",
"dynamodb:PutItem"
],
"Effect": "Allow",
"Resource": [DynamoDB table],
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:Attributes": [
[Lists of attributes]
]
}
}
}
]
}
通过将Elastic Beanstalk自动创建的角色的正确权限添加到EC2实例来解决这个问题。
http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html当我在代码中包含有关区域,访问密钥和密钥的详细信息时,它对我有效。我替换了
dynamodb = boto3.resource('dynamodb')
dynamodb = boto3.resource('dynamodb', region_name = Region_NAME,
aws_access_key_id = ACCESS_KEY, aws_secret_access_key =
SECRET_ACCESS_KEY)
尽管这不是一个推荐的解决方案,因为由于安全问题,您不应该在代码中包含凭据。