简体   繁体   中英

Is there a way for a Python script to “recognize” which EC2 instance it is running on?

Let's say that my script is running on an EC2 instance named ec2-test1 and it communicates with an S3 bucket named: s3-bucket-test1 , but when the script is ran on ec2-test2 it's able to identify the EC2 instance it is currently running on and change the directory to reference s3-bucket-test2 . Is there a way to do that? I know that for internal paths you can use os.path.dirname(os.path.realpath(__file__)) but was wondering if there is a way to do something like that for EC2 instance name in Python?

Use the following Boto3 to get the current instance name. Warning : No exception handling is included.

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"]
  • Get the instance id from metadata server
  • Use the instance id to query Boto3 resource

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM