Я пытаюсь создать SQS с помощью AWS Java SDK. У меня нет ключа доступа и идентификатора ключа, я захожу в консоль AWS по ссылке, предоставленной моей компанией. Это доступ на основе ролей SAML (федеративный вход в систему). Всякий раз, когда я пытаюсь создать SQS из кода Java, либо я получаю ошибку 403 (если я не пишу код для учетных данных), либо я сталкиваюсь с большим количеством ошибок, если я пытаюсь использовать код, указанный в блогах AWS для федеративных пользователей.
Я пробовал следующий код, но он не работает:
AWSSecurityTokenService stsClient = AWSSecurityTokenServiceClientBuilder
.standard()
.withCredentials(new DefaultAWSCredentialsProviderChain())
.withRegion(Regions.EU_WEST_1)
.build();
GetFederationTokenRequest getFederationTokenRequest = new GetFederationTokenRequest();
getFederationTokenRequest.setDurationSeconds(7200);
getFederationTokenRequest.setName("<username>@<company>.com");
// Define the policy and add it to the request.
Policy policy = new Policy();
policy.withStatements(new Statement(Statement.Effect.Allow)
.withActions(SQSActions.AllSQSActions)
.withResources(new Resource("arn:aws:sqs:::test-queue")));
getFederationTokenRequest.setPolicy(policy.toJson());
// Get the temporary security credentials.
GetFederationTokenResult federationTokenResult = stsClient.getFederationToken(getFederationTokenRequest);
Credentials sessionCredentials = federationTokenResult.getCredentials();
// Package the session credentials as a BasicSessionCredentials BasicSessionCredentials basicSessionCredentials = new BasicSessionCredentials(
sessionCredentials.getAccessKeyId(),
sessionCredentials.getSecretAccessKey(),
sessionCredentials.getSessionToken());
AmazonSQSAsync amazonSQS = AmazonSQSAsyncClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(basicSessionCredentials))
.withRegion(Regions.EU_WEST_1)
.build();
CreateQueueRequest request = new CreateQueueRequest("wifi-test-queue");
String result = amazonSQS.createQueue(request).getQueueUrl();
Приведенный выше код не работает, к сожалению.
Я уверен, что у моей учетной записи есть разрешения на создание / доступ к SQS, потому что я могу добиться аналогичных результатов с помощью Terraform.
Может кто-нибудь помочь мне, как создать ресурс с таким аккаунтом?