问题描述
如何找到用于通过SSH创建EC2 / lightsail实例的电子邮件地址?
解决方法
首先,他们可能并不总是像别人所说的那样成为电子邮件。至于调用AWS API,您需要能够承担一个能够调用ec2:RunInstances
的角色。例如,如果您将此角色授予了Lambda
函数,那么Lambda确实可以创建一个新的ec2实例,但这并不像它有一封电子邮件。
使用标签
您想看到的是那个ec2实例的调用者ec2:RunInstances
。如果启用了“费用分配”标签,则可以使用aws:createdBy
标签,如here所述。要访问实例中的标签,您首先需要id,然后查询标签:
instance_id=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
aws ec2 describe-tags \
--filters "Name=resource-id,Values=$instance_id" 'Name=key,Values=aws:createdBy' \
--query 'Tags[].Value' --output text
CloudTrail
如果您不在实例中,则可以搜索名称为RunInstances
的事件,并找到responseElements.instanceSet.items[].instanceId == 'YOUR INSTANCE ID'
的位置。我相信,如果您已从创建日期起为您的实例启用它,我也相信可以在AWS Config中完成。
不确定是否可以获取电子邮件ID,但是肯定可以在EC2实例上使用以下命令来获取accountid。为了安全起见,AWS可能不允许获取电子邮件地址。
curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | grep -i accountid