使用 IAM 角色进行跨账户 SQS 访问
Cross account SQS access with IAM roles
我是账户 A 中的 运行 EC2 实例并且在账户 A 和 B 中有 SQS 队列。我的应用程序在账户 A 的 EC2 实例上 运行。消息侦听器正在获取 queueUrl 和轮询来自队列的消息,可以在帐户 A 或 B 中。这是获取 queueUrl 的代码示例,如果我们获取帐户 A 的 queueUrl,它工作正常,但如果我们提供帐户 B sqs 队列作为输入参数,则失败:
public String getQueueUrl(String queueOwnerAccountId, String region, String queueName) throws AwsException {
try {
AmazonSQS sqs = AmazonSQSClientBuilder.standard().withRegion(Regions.fromName(region)).build();
GetQueueUrlRequest getQueueUrlRequest = new GetQueueUrlRequest(queueName).withQueueOwnerAWSAccountId(queueOwnerAccountId);
GetQueueUrlResult result = sqs.getQueueUrl(getQueueUrlRequest);
return result.getQueueUrl();
} catch (QueueDoesNotExistException e) {
throwAwsException("With accountId:"+queueOwnerAccountId+" ,Queue: "+queueName+" does not exists in region: "+region);
} catch (AmazonClientException e) {
throwAwsException("Invalid destination address:"+e.getMessage());
}
return null;
}
我已将策略(策略具有两个帐户队列的 ARN)添加到帐户 A 中两个帐户队列的 IAM 角色。如果我缺少任何设置,请告诉我。谢谢
我已在账户 A 中为 SQS 创建策略并添加了 ARN 资源(对于 账户 B 中的队列)
arn:aws:sqs:Region:AccountID_B:QueueName 然后将该策略附加到一个角色,并将相同的角色附加到帐户 A 的 EC2 实例。右键单击队列帐户 B 然后单击 添加权限。弹出窗口将显示为提供 原则 & 行动。 Principle是aws accountId who can access this queue(这里可以指定Account A accountId)&action是的集合该队列的权限(API 需要的标签访问权限)。
我是账户 A 中的 运行 EC2 实例并且在账户 A 和 B 中有 SQS 队列。我的应用程序在账户 A 的 EC2 实例上 运行。消息侦听器正在获取 queueUrl 和轮询来自队列的消息,可以在帐户 A 或 B 中。这是获取 queueUrl 的代码示例,如果我们获取帐户 A 的 queueUrl,它工作正常,但如果我们提供帐户 B sqs 队列作为输入参数,则失败:
public String getQueueUrl(String queueOwnerAccountId, String region, String queueName) throws AwsException {
try {
AmazonSQS sqs = AmazonSQSClientBuilder.standard().withRegion(Regions.fromName(region)).build();
GetQueueUrlRequest getQueueUrlRequest = new GetQueueUrlRequest(queueName).withQueueOwnerAWSAccountId(queueOwnerAccountId);
GetQueueUrlResult result = sqs.getQueueUrl(getQueueUrlRequest);
return result.getQueueUrl();
} catch (QueueDoesNotExistException e) {
throwAwsException("With accountId:"+queueOwnerAccountId+" ,Queue: "+queueName+" does not exists in region: "+region);
} catch (AmazonClientException e) {
throwAwsException("Invalid destination address:"+e.getMessage());
}
return null;
}
我已将策略(策略具有两个帐户队列的 ARN)添加到帐户 A 中两个帐户队列的 IAM 角色。如果我缺少任何设置,请告诉我。谢谢
我已在账户 A 中为 SQS 创建策略并添加了 ARN 资源(对于 账户 B 中的队列) arn:aws:sqs:Region:AccountID_B:QueueName 然后将该策略附加到一个角色,并将相同的角色附加到帐户 A 的 EC2 实例。右键单击队列帐户 B 然后单击 添加权限。弹出窗口将显示为提供 原则 & 行动。 Principle是aws accountId who can access this queue(这里可以指定Account A accountId)&action是的集合该队列的权限(API 需要的标签访问权限)。