2017-06-16 67 views
2

假設我的腳本正在名爲ec2-test1的EC2實例上運行,並且它與名爲s3-bucket-test1的S3存儲桶進行通信,但當腳本在ec2-test2上運行時,它能夠識別當前正在運行的EC2實例並更改目錄參考s3-bucket-test2。有沒有辦法做到這一點?我知道,對於內部路徑,您可以使用os.path.dirname(os.path.realpath(__file__)),但想知道是否有辦法在Python中爲EC2實例名稱做類似的事情?有沒有一種方法讓Python腳本「識別」它運行的EC2實例?

+0

嘗試EC2元查詢工具 – digitake

回答

3

使用以下Boto3來獲取當前實例名稱。 警告:不包含異常處理。

import boto3 
import os 

def get_inst_name(): 
    # Get Instance ID from EC2 Instance Metadata 
    inst_id = os.popen("curl -s http://169.254.169.254/latest/meta-data/instance-id").read() 

    # Get EC2 instance object 
    ec2 = boto3.resource('ec2') 
    inst = ec2.Instance(inst_id) 

    # Obtain tags associated with the EC2 instance object 
    for tags in inst.tags: 
    if tags["Key"] == 'Name': 
     #print tags["Value"] 
     return tags["Value"] 
  • 獲取從元數據服務器
  • 使用的實例ID實例ID查詢Boto3資源
相關問題