gpt4 book ai didi

java - 使用 AWS Java SDK 为基于角色的联合用户创建 SQS 而无需凭据

转载 作者:搜寻专家 更新时间:2023-11-01 03:45:53 25 4
gpt4 key购买 nike

我正在尝试使用 AWS Java SDK 创建 SQS。我没有访问 key 和 key ID,我使用我公司提供的链接进入 AWS 控制台。它是基于角色的 SAML 访问(联合登录)。每当我尝试从 Java 代码创建 SQS 时,我都会收到 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 实现类似的事情。

有人可以帮助我如何使用这样的帐户创建资源吗?

最佳答案

您需要为 AWS 区域和帐号包含通配符

new Resource("arn:aws:sqs:*:*:test-queue")

您可以使用 IAM simulator 测试等效的 IAM 策略

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sqs:CreateQueue",
"Resource": "arn:aws:sqs:*:*:test-queue"
}
]
}

关于java - 使用 AWS Java SDK 为基于角色的联合用户创建 SQS 而无需凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55448458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com