我们有一个需求,我们需要从在EC2实例上运行的代码中验证AWS accountID。我发现的一种方法是通过以下URL从AWS元数据IP获取此信息:
http://169.254.169.254/latest/dynamic/instance-identity/document
但是如果我无法访问互联网怎么办。是否可以在不对任何外部URL进行ping操作的情况下从Instance中保存并检索它。
答案 0 :(得分:1)
即使您的实例没有Internet访问权限,您也可以访问该URL。获取ID的另一种方法是使用aws cli。 get-caller-identity命令返回帐户,用户标识和ARN。您将要确保您的EC2实例具有调用此权限。
aws sts get-caller-identity
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:GetCallerIdentity",
"Resource": "*"
}
]
}
答案 1 :(得分:0)
但是如果我无法访问互联网怎么办。是否可以在不对任何外部URL进行ping操作的情况下从Instance中保存并检索它。
这不是外部IP,此IP是ec2实例的本地元数据服务。它没有通过互联网。使用它来检索帐户ID是完全可以接受的,实际上,亚马逊为您提供了使用其各种SDK从实例检索此类信息所需的一切。
quasar指出,替代解决方案是使用aws sts get-caller-identity
,但这将需要对实例角色的权限才能工作。