Boto3 эквивалентно boto.utils.get_instance_metadata()?

В обычном boto 2.38 я использовал для доступа к метаданным экземпляра экземпляра (например, получить текущее имя стека) через boto

boto.utils.get_instance_metadata()

Есть ли эквивалент в boto3, или мне нужно перейти к прямому http-адресу нижнего уровня для извлечения метаданных о запущенном экземпляре?

Ответ 1

Нет, все равно нет эквивалента в boto3, просто ударил этот пробел сам.
У них есть открытый запрос функции для этого https://github.com/boto/boto3/issues/313, который ссылается на этот вопрос.

Что касается обходных решений,
вы можете продолжать использовать boto.utils или использовать urllib/urllib2 для выполнения запросов HTTP вручную, т.е.

# Python2
import urllib2
instanceid = urllib2.urlopen('http://169.254.169.254/latest/meta-data/instance-id').read()

# Python3
import urllib.request
instanceid = urllib.request.urlopen('http://169.254.169.254/latest/meta-data/instance-id').read().decode()

см. Каков самый быстрый способ HTTP GET в Python? для быстрого ввода на urllib и http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-data-categories для структуры URI службы метаданных.