残念ながら、私はこの作業のためにサーバーの日数を失いました。別のawsアカウントによって公開されたAWS IAMロールでクレデンシャルを取得できますか?
IAMロールで一時的な資格情報を取得するにはどうすればよいですか?これは可能ですか?ここ
は私のシナリオとコードです。(AWS SDKのjavaに)
STSインスタンスAWSアカウントのアクセスキーと秘密鍵
によってAWSSecurityTokenService tokenService = new AWSSecurityTokenServiceClient(new BasicAWSCredentials(awsProperty.getAccess(), awsProperty.getSecret()));
AssumeRoleRequest
AssumeRoleRequest assumeRoleRequest = new AssumeRoleRequest(); assumeRoleRequest.setRoleArn(arn); assumeRoleRequest.setDurationSeconds(900); assumeRoleRequest.setRoleSessionName("for_test"); assumeRoleRequest.setExternalId("ext_id");
を作りますSessionCredentialsを取得する
AmazonCloudFrontClient cloudFrontClient = new AmazonCloudFrontClient(awsCredentials);
AssumeRoleResult roleResult = tokenService.assumeRole(assumeRoleRequest);
Credentials credentials = roleResult.getCredentials();
AWSCredentials awsCredentials = new BasicSessionCredentials(credentials.getAccessKeyId(), credentials.getSecretAccessKey(), credentials.getSessionToken());
仕事はそれは私はこのようなポリシーを作るAWSSecurityTokenServiceException
User: arn:aws:iam::{account}:user/{user_name} is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::{role_account}:role/{role_name} (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied;
をスローします。 IAM役割とIAMユーザーの両方に接続します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1490674259000",
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"*"
]
}
]
}
EDIT:
私はIAMポリシーシミュレータとポリシー(変更)をテストしました。 AWS Security Token Service-AssumeRole
をIAM Role ARN
と選択してください。
あなたは別のAWSアカウントで役割を担っていますか?あなたの役割には[信頼関係](http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html)が定義されていますか? –
@JohnRotensteinは本当にありがとう!私は信頼関係を確認し、パラメータを修正する。できます! – myoungjin