urllib

Get ec2 arn for local ec2 machine with python

A super minimal urllib based arn constructor based on local metadata import urllib.request # local ec2 arn: f = urllib.request.urlopen('http://169.254.169.254/latest/meta-data/placement/availability-zone') az = f.read().decode('utf-8') f = urllib.request.urlopen('http://169.254.169.254/latest/meta-data/instance-id') instance = f.read().decode('utf-8') arn = 'arn:aws:ec2:' + az + ':instance/' + instance print(arn) This returns arn as used by the EC2 Spot Instance Interruption Warning event { "version": "0", "id": "03a51c99-95cb-c6e8-03a8-3ce3ac402d64", "detail-type": "EC2 Spot Instance Interruption Warning", "source": "aws.ec2", "account": "763603311319", "time": "2018-09-16T13:17:10Z", "region": "eu-west-1", "resources": [ "arn:aws:ec2:eu-west-1b:instance/i-05493b58ebcba0c43" ], "detail": { "instance-id": "i-05493b58ebcba0c43", "instance-action": "terminate" } }