Amazon web services 从userArn获取IAM用户ID

Amazon web services 从userArn获取IAM用户ID,amazon-web-services,amazon-iam,amazon-sqs,Amazon Web Services,Amazon Iam,Amazon Sqs,我有一个用例,其中有多个aws帐户向我的sqs队列发送消息,我想唯一地标识谁发送了什么。在SQS消息中,我看到一个发送者帐户ID,它是发送消息的IAM用户/角色的用户ID 是否有一种方法可以将此userId转换为userArn,以便识别消息来自哪个帐户。我看到的唯一API是,但它需要授权凭据。我不想使用userId,因为它会增加我端的操作开销,从而计算出所有有权发送消息的用户/角色的所有userId <User> <UserId>AIDACKCEVSQ6C2EXAMP

我有一个用例,其中有多个aws帐户向我的sqs队列发送消息,我想唯一地标识谁发送了什么。在SQS消息中,我看到一个
发送者帐户ID
,它是发送消息的IAM用户/角色的用户ID

是否有一种方法可以将此userId转换为userArn,以便识别消息来自哪个帐户。我看到的唯一API是,但它需要授权凭据。我不想使用userId,因为它会增加我端的操作开销,从而计算出所有有权发送消息的用户/角色的所有userId

<User>
  <UserId>AIDACKCEVSQ6C2EXAMPLE</UserId>
  <Path>/division_abc/subdivision_xyz/</Path>
  <UserName>Bob</UserName>
  <Arn>arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/Bob</Arn>
  <CreateDate>2013-10-02T17:01:44Z</CreateDate>
  <PasswordLastUsed>2014-10-10T14:37:51Z</PasswordLastUsed>
</User>

AIDACKCEVSq6c2示例
/abc分部/xyz分部/
上下快速移动
提供有关用户ID的信息

从理论上讲,如果我不能在没有用户凭证的情况下从userId公开获取userArn,那么不提供它的原因是什么呢


如果我们看一看getUser API的响应,它看起来像这样-

AWS并没有真正提供“谁”在AWS帐户中做事情的详细信息。如果用户有足够的权限执行API调用(例如
SendMessage()
向SNS队列发送消息),则实际发送消息的是AWS帐户,而不是单个用户

存储在AmazonS3上的对象(没有拥有该对象的“用户”)和AmazonEC2实例(没有实例的“所有者”)也是如此

您可以在AWS CloudTrail中识别谁在做事情,它提供了API调用的审计跟踪。它将显示每个API调用,以及发出请求的用户的时间戳和详细信息


在SQS邮件中,
发件人帐户ID
是发件人使用的AWS帐户的ID。它不是特定用户的ID(只是他们使用的AWS帐户)。

这里混合了不同的东西。帐户ID映射到发送消息的用户/角色的帐户,但不具体标识用户/角色。帐户!=用户!=角色和所有这些东西都有不同的ARN格式,不能互换。嗨@Danielvarrell,也许我的问题不清楚。我已经用更多的信息更新了这个问题,请看一看。另外,将其命名为
发送方帐户ID
的逻辑可能是,当aws帐户的根用户发送SQS消息时,在这种情况下,我们在该属性中接收发送方帐户的12位accountId。