[英]Error while creating DynamoDB table using another existing table's structure in python using boto3
[英]error while fetching from DynamoDB using 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
有人可以帮我弄清楚我在这里做错了什么吗?
我发现使用 docker 容器,即使您在构建期间将访问和秘密密钥设置为环境变量,您仍然必须在脚本中明确声明区域、key_id 和 access_key:例如。 boto3.resource('dynamodb', region_name=<>, aws_access_key_id=<>, aws_secret_access_key=<>) 。
将这些设置为脚本的纯文本的另一种方法是将它们存储在 ~/.aws/config 和 ~/.aws/credentials 中,或者更好的是,作为秘密安装。
我在使用 lambda 函数的默认角色时遇到了类似的问题。 在我的案例中,向策略添加额外的 dynamodb 语句解决了这个问题。
{
"Effect": "Allow",
"Action": [
"dynamodb:BatchGetItem",
"dynamodb:DescribeTable",
"dynamodb:GetItem",
"dynamodb:ListTables",
"dynamodb:Query",
"dynamodb:Scan"
],
"Resource": [<dynamodb table ARN>]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.