![](/img/trans.png)
[英]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.