Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Boto3从DynamoDB提取时出错_Python_Amazon Web Services_Amazon Dynamodb_Boto3 - Fatal编程技术网

Python 使用Boto3从DynamoDB提取时出错

Python 使用Boto3从DynamoDB提取时出错,python,amazon-web-services,amazon-dynamodb,boto3,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')

我使用下面的代码来读取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

有人能帮我找出我做错了什么吗

我发现使用docker容器,即使在构建期间将access和secret key设置为环境变量,也必须在脚本中显式声明region、key\u id和access\u key:ex.boto3.resource('dynamodb',region\u name=,aws\u access\u key\u id=,aws\u secret\u access\u key=)


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

我发现使用docker容器,即使在构建过程中将访问和密钥设置为环境变量,也必须显式声明区域,脚本中的key\u id和access\u key:ex.boto3.resource('dynamodb',region\u name=,aws\u access\u key\u id=,aws\u secret\u access\u key=)


除了在脚本的纯文本中设置这些内容外,还有一种选择,就是将它们存储在~/.aws/config和~/.aws/credentials中,或者更好地将它们作为秘密装入。

只是一些想法:这与区域或特定表有关吗?您是否检查了aws配置和凭据文件,以防这些文件被覆盖?是否还有其他错误,但您没有查看该错误的权限,因此会出现权限错误?感谢inputsSide注意:建议您不要将凭据放入代码中,以防它泄漏(例如存储在存储库中)。相反,请使用
aws configure
命令在本地存储您的凭据。@John Point注意到。症状表明您的凭据有效,但相关的权限不足。您应该仔细检查IAM user
cduser
的权限。有一些想法:这与区域或特定表有关吗?您是否检查了aws配置和凭据文件,以防这些文件被覆盖?是否还有其他错误,但您没有查看该错误的权限,因此会出现权限错误?感谢inputsSide注意:建议您不要将凭据放入代码中,以防它泄漏(例如存储在存储库中)。相反,请使用
aws configure
命令在本地存储您的凭据。@John Point注意到。症状表明您的凭据有效,但相关的权限不足。您应该仔细检查IAM用户的权限
cduser