Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save udhos/067371815eb28e001530c1024ff83f7d to your computer and use it in GitHub Desktop.
Save udhos/067371815eb28e001530c1024ff83f7d to your computer and use it in GitHub Desktop.
Method to determine your AWS account ID using boto3 for either a user or an ec2 instance or lambda function
import boto3
print(boto3.client('sts').get_caller_identity()['Account'])
aws sts get-caller-identity --query 'Account' --output text
# This method is no longer needed with the release of the STS GetCallerIdentity method
def get_account_id(context):
return context.invoked_function_arn.split(':')[4]
def lambda_handler(event, context):
print("My account ID is %s" % get_account_id(context))
# This method is no longer needed with the release of the STS GetCallerIdentity method
from botocore.vendored import requests
import boto3
def get_account_id():
try:
# We're running in an ec2 instance, get the account id from the
# instance profile ARN
return requests.get(
'http://169.254.169.254/latest/meta-data/iam/info/',
timeout=1).json()['InstanceProfileArn'].split(':')[4]
except:
pass
try:
# We're not on an ec2 instance but have api keys, get the account
# id from the user ARN
return boto3.client('iam').get_user()['User']['Arn'].split(':')[4]
except:
pass
return False
# This method is no longer needed with the release of the STS GetCallerIdentity method
import urllib2, json
import boto3
def get_account_id():
try:
# We're running in an ec2 instance, get the account id from the
# instance profile ARN
return json.loads(urllib2.urlopen(
'http://169.254.169.254/latest/meta-data/iam/info/',
None,
1).read())['InstanceProfileArn'].split(':')[4]
except:
pass
try:
# We're not on an ec2 instance but have api keys, get the account
# id from the user ARN
return boto3.client('iam').get_user()['User']['Arn'].split(':')[4]
except:
pass
return False
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment