如何从 ec2 实例获取电子邮件信息?

Posted

技术标签:

【中文标题】如何从 ec2 实例获取电子邮件信息?【英文标题】:How do I get email information from ec2 instance? 【发布时间】:2021-02-10 17:13:16 【问题描述】:

如何找到我通过 SSH 创建 EC2/lightsail 实例时使用的电子邮件地址?

【问题讨论】:

AWS 账户电子邮件地址? EC2 实例本身没有电子邮件地址。 根据我在文档中查看的内容,您不需要电子邮件地址来创建 lightail(或 EC2)实例,并且在据我所知,用于描述实例的输出。这是您在自己的环境中使用的标签吗?还是您的 IAM 用户帐户是使用您的电子邮件作为用户名设置的?您是否启用了 CloudTrail? 【参考方案1】:

首先,他们可能并不总是像其他人所说的那样是一封电子邮件。要调用 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 中完成。

【讨论】:

【参考方案2】:

不确定我们是否可以获取电子邮件 ID,但我们肯定可以在 EC2 实例上使用以下命令获取 accountid。出于安全考虑,AWS 可能不允许获取电子邮件地址。

curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | grep -i accountid

【讨论】:

以上是关于如何从 ec2 实例获取电子邮件信息?的主要内容,如果未能解决你的问题,请参考以下文章

如何将电子邮件适配器添加到我的亚马逊 EC2 实例以启用我的应用程序的密码重置

设置电子邮件帐户 EC2

Django - 如何从模型实例中获取管理员 URL

使用第三方 smtp 服务器时的 AWS EC2 电子邮件发送限制

ec2 实例创建和终止的 SNS 通知

使用 Amazon EC2 实例发送邮件