如何使用 boto 获取正在运行的 EC2 实例的 self Instance Id?

Sam*_*ri 0 amazon-ec2 boto amazon-web-services

使用 python boto API(不是 Boto3),如何获取在用户数据中运行脚本的 CPU 的自实例 ID。

jar*_*mod 5

使用boto从本地元数据服务检索实例 ID,如下所示:

import boto.utils
meta = boto.utils.get_instance_metadata()
id = meta['instance-id']
print('instance ID:', id)
Run Code Online (Sandbox Code Playgroud)

请注意,boto3 不包含此功能。一种选择是简单地使用本机 urllib 包直接从元数据服务查询,如下所示:

# For python v2
import urllib2
id = urllib2.urlopen('http://169.254.169.254/latest/meta-data/instance-id').read()
print('instance ID:', id)

# For python v3
import urllib.request
id = urllib.request.urlopen('http://169.254.169.254/latest/meta-data/instance-id').read().decode()
print('instance ID:', id)
Run Code Online (Sandbox Code Playgroud)

或者,您可以 pip install 并使用adamchainz/ec2-metadata,如下所示:

from ec2_metadata import ec2_metadata
print('region:', ec2_metadata.region)
print('instance ID:', ec2_metadata.instance_id)
Run Code Online (Sandbox Code Playgroud)