使用Boto3从DynamoDB提取时发生错误

时间:2019-03-10 06:55:36

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

我正在使用以下代码从dyanoDB中读取

 import boto3
 session = boto3.Session(
           aws_access_key_id='XXXXXXXXXXXXXXXXXXXX',
           aws_secret_access_key='XXXXXXXXXXXXXXXXXXXXXXX')

 dynamodb = session.resource('dynamodb')
 table = dynamodb.Table('Employee')

 resp = table.get_item(Key={"Empid": 551554297})

该用户具有AWSAdmin访问权限,DynamoDBfull访问权限和DyanamoDBread访问权限 但是我仍然在运行代码时陷入错误之中

 botocore.exceptions.ClientError: An error occurred (AccessDeniedException) 
 when calling the GetItem operation: User: 
 arn:aws:iam::944198216610:user/cduser is not authorized to perform: 
 dynamodb:GetItem on resource: arn:aws:dynamodb:us-east- 
 1:944198216610:table/Employee

有人可以帮我弄清楚我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

我发现使用 docker 容器,即使您在构建期间将访问和秘密密钥设置为环境变量,您仍然必须在脚本中明确声明区域、key_id 和 access_key:ex. boto3.resource('dynamodb', region_name=<>, aws_access_key_id=<>, aws_secret_access_key=<>) .

在脚本的纯文本中设置这些设置的另一种方法是将它们存储在 ~/.aws/config 和 ~/.aws/credentials 中,或者更好的是,作为秘密安装。