通过开发工具包向所有委托人添加 AWS SQS 权限



我正在尝试通过 Java 开发工具包创建 AWS SQS 队列,然后为所有用户添加所有权限。我可以很好地创建队列,但我很难知道我可以为委托人传递什么值。这是我的代码的样子:

CreateQueueRequest createQueueRequest = new CreateQueueRequest(queueName).withAttributes(attributes);
CreateQueueResult createQueueResult = amazonSqs.createQueue(createQueueRequest);
String queueUrl = createQueueResult.getQueueUrl();
amazonSqs.addPermission(queueUrl, "*", ????, Arrays.asList("*"));

???是我不确定的。我已经尝试过Arrays.asList("*")但它抱怨它无效。在 Web 控制台中,有一个"每个人"复选框,我只想在 SDK 中执行相同的操作。我可以为此传递一些价值吗?

---更新---

我已经能够通过Policy以另一种方式完成此操作:

String queueUrl = createQueueResult.getQueueUrl();
GetQueueAttributesResult getQueueAttributesResult = amazonSqs.getQueueAttributes(queueUrl, Arrays.asList(QUEUE_ARN_ATTRIBUTE_NAME));
String queueArn = getQueueAttributesResult.getAttributes().get(QUEUE_ARN_ATTRIBUTE_NAME);
if (needToSetPolicy)
{
  Policy allAccessPolicy = new Policy("SQSAllAccess", Arrays.asList(
    new Statement(Effect.Allow)
        .withActions(() -> "SQS:*")
        .withPrincipals(Principal.All)
        .withId("SQSAllAccessStatement")
        .withResources(new Resource(queueArn))
  ));
  Map<String, String> policyMap = new HashMap<>(1);
  policyMap.put(POLICY_ATTRIBUTE_NAME, allAccessPolicy.toJson());
  amazonSqs.setQueueAttributes(queueUrl, policyMap);
}

似乎应该有一种更好/更简单的方法来做到这一点。有没有更好/更清洁/更简单的方法?

在 kotlin 中使用 SDK 中的常量

val policy: Policy = Policy("AllowAllSendMessage", listOf(Statement(Effect.Allow)
    .withActions(SQSActions.SendMessage)
    .withPrincipals(Principal.All)
    .withId("AllowAllSendMessage")
    .withResources(Resource(queueArn))))
_sqs.setQueueAttributes(SetQueueAttributesRequest()
    .withQueueUrl(queueUrl)
    .withAttributes(mapOf(QueueAttributeName.Policy.toString() to policy.toJson())))

相关内容

  • 没有找到相关文章

最新更新