AWS 提供了 Dedicated Hosts (专用主机) 功能,使用户可控制将哪些实例放置在指定的物理主机上,这有助于避免多个客户共享同一台主机的情况。用户也可以使用 Amazon EC2 实例元数据来确定其实例是否共享一台物理主机。以下是一个示例 Python 代码,用于检查当前实例是否与其他实例共享同一台物理主机:
import urllib.request
import json
# Retrieve instance metadata
metadata_url = "http://169.254.169.254/latest/meta-data/"
instance_id = urllib.request.urlopen(metadata_url + "instance-id").read().decode()
ami_id = urllib.request.urlopen(metadata_url + "ami-id").read().decode()
hostname = urllib.request.urlopen(metadata_url + "hostname").read().decode()
# Determine if instance shares a physical host with other instances
instance_identity_url = "http://169.254.169.254/latest/dynamic/instance-identity/"
document = json.loads(urllib.request.urlopen(instance_identity_url + "document").read().decode())
signature = urllib.request.urlopen(instance_identity_url + "pkcs7").read().decode()
if document["instanceId"] != instance_id or document["imageId"] != ami_id or not signature:
print("Error: Unable to validate instance metadata!")
else:
print("This instance is running on a Dedicated Host: " + str(document["instanceId"] == document["devpayProductCodes"][0]))