gpt4 book ai didi

android - 亚马逊服务异常 : User is not authorized to perform: dynamodb:DescribeTable Status Code: 400; Error Code: AccessDeniedException

转载 作者:可可西里 更新时间:2023-11-01 18:45:47 27 4
gpt4 key购买 nike

我原本以为这个问题是由于区域不匹配造成的,但在更改区域后,我在尝试此处找到的 Amazon AWS 示例时仍然遇到以下错误:

DynamoDBMapper

 AmazonServiceException: User: arn:aws:sts::[My Account
ARN]:assumed-role/Cognito_AndroidAppUnauth_DefaultRole/ProviderSession
is not authorized to perform: dynamodb:DescribeTable on resource:
arn:aws:dynamodb:us-east-1:[My Account ARN]:table/test_table (Service:
AmazonDynamoDBv2; Status Code: 400; Error Code: AccessDeniedException;
Request ID: BBFTS0Q8UHTMG120IORC2KSASVVV4KQNSO5AEMVJF66Q9ASUAAJG)

一切都差不多,我唯一改变的是将 DBclient 区域更改为 US_EAST_1,我的测试表托管在该区域并修改使用“Amazon Cognito 入门代码”页面中的信息的常量文件,该页面是通过遵循 Cognito 入门文档生成的。

sdkforandroid-cognito-auth

对于我的 Cognito_AndroidAppUnauth_DefaultRole 角色策略,我修改了默认的移动分析和同步服务权限,以还包括对所有表的所有操作的访问权限,无论是否存在:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CognitoPolicy",
"Action": [
"mobileanalytics:PutEvents",
"cognito-sync:*"
],
"Effect": "Allow",
"Resource": [
"*"
]
},
{
"Sid": "DynamoDBPolicy",
"Effect": "Allow",
"Action": [
"dynamodb: *"
],
"Resource": "*"
}
]
}

那么,当使用正确的区域并且 Unauth 策略应该允许表访问时,为什么它声称它没有权限?

编辑:调用 DynamoDB 资源(创建表)上的方法时的堆栈跟踪,它是否有用

   com.amazonaws.AmazonServiceException: User: arn:aws:sts::[My Account ARN]:assumed-role/Cognito_AndroidAppUnauth_DefaultRole/ProviderSession is not authorized to perform: dynamodb:CreateTable on resource: arn:aws:dynamodb:us-east-1:[My Account ARN]:table/test_table (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: AccessDeniedException; Request ID: SDELNSMLO10EV7CM2STC1R9RU3VV4KQNSO5AEMVJF66Q9ASUAAJG)
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(Unknown Source)
at com.amazonaws.http.AmazonHttpClient.executeHelper(Unknown Source)
at com.amazonaws.http.AmazonHttpClient.execute(Unknown Source)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(Unknown Source)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.createTable(Unknown Source)
at com.amazonaws.demo.userpreferencesom.DynamoDBManager.createTable(DynamoDBManager.java:72)
at com.amazonaws.demo.userpreferencesom.UserPreferenceDemoActivity$DynamoDBManagerTask.doInBackground(UserPreferenceDemoActivity.java:99)
at com.amazonaws.demo.userpreferencesom.UserPreferenceDemoActivity$DynamoDBManagerTask.doInBackground(UserPreferenceDemoActivity.java:85)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)

最佳答案

与 Amazon 工程师合作,发现问题出在策略配置中:

"dynamodb: *"

应该是

"dynamodb:*"

空间的功能令人惊叹。

关于android - 亚马逊服务异常 : User is not authorized to perform: dynamodb:DescribeTable Status Code: 400; Error Code: AccessDeniedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24765256/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com