Amazon web services 有没有办法确定公共ip属于哪个aws帐户?

Amazon web services 有没有办法确定公共ip属于哪个aws帐户?,amazon-web-services,amazon-ec2,ip,Amazon Web Services,Amazon Ec2,Ip,我有多个aws帐户,我不记得这个EC2实例是在哪个aws帐户中创建的,有没有最佳的方法可以在更短的时间内解决这个问题 注意:我需要知道帐户DNS名称或别名。(不是帐户号码)如果您有权访问您可以使用的实例: 它返回带有accountId字段的json。如果为所有帐户配置AWS CLI,则可以获取帐户ID、ARN和用户ID。 脚本执行以下操作 获取AWS配置文件列表 在所有剖面上循环 获取所有Ec2公共IP地址的列表 如果IP匹配,则打印帐户信息并退出 跑 script.sh #!/bin/ba

我有多个aws帐户,我不记得这个EC2实例是在哪个aws帐户中创建的,有没有最佳的方法可以在更短的时间内解决这个问题


注意:我需要知道帐户DNS名称或别名。(不是帐户号码)

如果您有权访问您可以使用的实例:


它返回带有
accountId
字段的json。

如果为所有帐户配置AWS CLI,则可以获取帐户ID、ARN和用户ID。 脚本执行以下操作

  • 获取AWS配置文件列表
  • 在所有剖面上循环
  • 获取所有Ec2公共IP地址的列表
  • 如果IP匹配,则打印帐户信息并退出 跑
script.sh

#!/bin/bash
INSTANCE_IP="${1}"
if [ -z "${INSTANCE_IP}" ]; then
    echo "pls provide instance IP"
    echo "./scipt.sh 54.x.x.x"
    exit 1
fi
PROFILE_LIST=$(grep -o "\\[[^]]*]"  < ~/.aws/credentials  | tr -d "[]")
for PROFILE in $PROFILE_LIST; do
 ALL_IPS=$(aws ec2 describe-instances --profile "${PROFILE}" --query "Reservations[].Instances[][PublicIpAddress]" --output text | tr '\r\n' ' ')
 echo "looking against profile ${PROFILE}"
    for IP in $ALL_IPS; do
        if [ "${INSTANCE_IP}" == "${IP}" ]; then
            echo "Instance IP matched in below account"
            aws sts get-caller-identity
            exit 0
        fi
    done
done
echo "seems like instance not belong to these profile"
echo "${PROFILE_LIST}"
exit 1
#/bin/bash
实例_IP=“${1}”
如果[-z“${INSTANCE_IP}”];然后
echo“请提供实例IP”
回声“/scipt.sh 54.x.x.x”
出口1
fi
PROFILE_LIST=$(grep-o“\\[[^]]*]”<~/.aws/credentials | tr-d“[]))
对于$PROFILE_列表中的PROFILE;做
ALL_IPS=$(aws ec2描述实例--配置文件“${profile}”--查询“保留[]。实例[][PublicIpAddress]”--输出文本| tr'\r\n')
echo“查看配置文件${profile}”
以$ALL_IP表示的IP;做
如果[“${INSTANCE_IP}”==“${IP}”];然后
echo“以下帐户中匹配的实例IP”
aws sts获取呼叫者身份
出口0
fi
完成
完成
echo“似乎实例不属于这些配置文件”
回显“${PROFILE_LIST}”
出口1

是否可以获取帐户dns名称而不是帐户ID?@SatishKumar如何将dns连接到您的帐户?我所说的dna名称实际上是别名为了获取帐户名称,您需要调用ListAccountAlias api。仅当您启用了别名并且您的IAM用户/角色具有此API的权限时,此操作才有效。
./script.sh 52.x.x.x
#!/bin/bash
INSTANCE_IP="${1}"
if [ -z "${INSTANCE_IP}" ]; then
    echo "pls provide instance IP"
    echo "./scipt.sh 54.x.x.x"
    exit 1
fi
PROFILE_LIST=$(grep -o "\\[[^]]*]"  < ~/.aws/credentials  | tr -d "[]")
for PROFILE in $PROFILE_LIST; do
 ALL_IPS=$(aws ec2 describe-instances --profile "${PROFILE}" --query "Reservations[].Instances[][PublicIpAddress]" --output text | tr '\r\n' ' ')
 echo "looking against profile ${PROFILE}"
    for IP in $ALL_IPS; do
        if [ "${INSTANCE_IP}" == "${IP}" ]; then
            echo "Instance IP matched in below account"
            aws sts get-caller-identity
            exit 0
        fi
    done
done
echo "seems like instance not belong to these profile"
echo "${PROFILE_LIST}"
exit 1