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