【问题标题】:AccessDeniedException in AWS DynamoDBAWS DynamoDB 中的 AccessDeniedException
【发布时间】:2017-06-23 14:06:41
【问题描述】:

我是亚马逊 Dynamo DB 的新手。我收到拒绝访问异常。
请帮我解决这个问题。

错误:

用户:arn:aws:sts::xx:assumed-role/Cognito_SampleUnauth_Role/CognitoIdentityCredentials 无权执行:dynamodb:DescribeTable on resource:arn:xxx

【问题讨论】:

    标签: java android amazon-dynamodb


    【解决方案1】:

    首先确保您的代入角色有权访问 DynamoDB。

    如果您从笔记本电脑而不是 EC2/Beanstalk 上运行应用程序,请确保您设置了 STS 凭据 (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-cli.html)。

    要从假定角色接收凭据,您可以使用以下内容:

    public Credentials getCredentialsFromAssumedRole() {
            AWSSecurityTokenService awsSecurityTokenService = AWSSecurityTokenServiceClientBuilder.defaultClient();
            AssumeRoleRequest assumeRequest = new AssumeRoleRequest()
                    .withRoleArn("arn:aws:iam::XX:role/assume-role-DynamoDB-ReadOnly")
                    .withDurationSeconds(3600)
                    .withRoleSessionName("assumed-role-session");
    
            AssumeRoleResult assumeResult = awsSecurityTokenService.assumeRole(assumeRequest);
            Credentials credentials = assumeResult.getCredentials();
            return credentials;
        }
    

    之后您可以创建 DynamoDBMapper 实例:

    AmazonDynamoDB amazonDynamoDB = new AmazonDynamoDBClient(amazonAWSCredentials);
            amazonDynamoDB.setEndpoint(amazonDynamoDBEndpoint);
            amazonDynamoDB.setRegion(Region.getRegion(Regions.valueOf(amazonAWSRegion)));
            return new DynamoDBMapper(amazonDynamoDB);
    

    使用 DynamoDBMapper,您可以执行以下 CRUD 操作:

    dynamoDBMapper.save(entity);
    dynamoDBMapper.load(Entity.class, entityId);
    

    @karthik,和你之前做的一样吗?请发布您的代码以了解问题所在。

    【讨论】:

    • 我正在使用以下 URL 中给出的示例。我正在使用此应用程序“DynamoDBMapper_UserPreference_Cognito”。在该应用程序中,我只更改了我的凭据和区域。github.com/awslabs/aws-sdk-android-samples..
    • 使用相同的示例遇到了同样的问题 - 我的 CognitoCachingCredentialsProvider 将区域设置为 EU_WEST_1 并且我在 eu-west-1 有一个表,但一直给我错误说我无权访问我们的表- east-1 - 但此表不存在! - 在 eu-west-1 地区没有看到我的桌子!疯了!!!!
    猜你喜欢
    • 2017-04-19
    • 2016-10-10
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2022-01-21
    • 2021-12-09
    • 2023-03-19
    • 2023-01-14
    相关资源
    最近更新 更多