まず、あなたの想定したロールは、DynamoDBのにアクセスする権限を持っていることを確認してください。
ラップトップからEC2/Beanstalkではなくアプリを実行する場合は、STS認証情報(http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-cli.html)を設定してください。
AmazonDynamoDB amazonDynamoDB = new AmazonDynamoDBClient(amazonAWSCredentials);
amazonDynamoDB.setEndpoint(amazonDynamoDBEndpoint);
amazonDynamoDB.setRegion(Region.getRegion(Regions.valueOf(amazonAWSRegion)));
return new DynamoDBMapper(amazonDynamoDB);
とDynamoDBMapperであなたのようなCRUD操作を行うことができますが:あなたはDynamoDBMapperのinstanseを作成することができます。その後
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.save(entity);
dynamoDBMapper.load(Entity.class, entityId);
@karthik、これは以前と同じですか?何が起こっているのかを理解するためにコードを投稿してください。
私は次のURLの例を使用しています。私はこのアプリケーション "DynamoDBMapper_UserPreference_Cognito"を使用しています..そのアプリケーションで私は自分の認証情報と地域のみを変更します.. https://github.com/awslabs/aws-sdk-android-samples .. – karthik