Подтвердить что ты не робот

AmazonServiceException: Пользователь не имеет права выполнять: dynamodb: DescribeTable Код состояния: 400; Код ошибки: AccessDeniedException

Я изначально думал, что эта проблема связана с несоответствующими регионами, но после изменения региона я все еще сталкиваюсь с следующей ошибкой при опробовании примера 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, где размещена моя тестовая таблица и изменяет файл Constants, используя информацию из "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 должна разрешать доступ к таблице?

EDIT: Stacktrace при вызове метода на ресурсе 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)
4b9b3361

Ответ 1

Работает с инженером Amazon, и выясняется, что проблема была в конфигурации политики:

"dynamodb: *"

должен быть

"dynamodb:*"

Удивительно, что может сделать пространство.