web-dev-qa-db-ja.com

boto3はboto.utils.get_instance_metadata()と同等ですか?

通常のboto 2.38では、botoからインスタンスメタデータにアクセス(例:現在のスタック名を取得)していました

boto.utils.get_instance_metadata()

Boto3に同等のものはありますか、または実行中のインスタンスに関するメタデータを取得するには、ダウンレベルのダイレクトhttpアドレスに移動する必要がありますか?

32
user2123288

いいえ、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()

urllibの簡単な紹介については、 PythonでHTTP GETを行う最も速い方法は何ですか?http://を参照してくださいメタデータサービスのURI構造については、docs.aws.Amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html#instancedata-data-categories をご覧ください。

16
Nath

ec2-metadata を使用できます。

EC2リージョンを取得する方法を示す docs の例:

  >>> from ec2_metadata import ec2_metadata
  >>> print(ec2_metadata.region)
  us-east-1
0
barbasa