我是 amazon Dynamo DB 的新手。我收到访问被拒绝异常。
请帮助我摆脱这个困境。
错误:
User: arn:aws:sts::xx:assumed-role/Cognito_SampleUnauth_Role/CognitoIdentityCredentials is not authorized to perform: dynamodb:DescribeTable on resource: arn:xxx
最佳答案
首先确保您所担任的角色有权访问 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,你之前做的是否相似?请发布您的代码以了解出了什么问题。
关于java - AWS DynamoDB 中的 AccessDeniedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44691817/