Skip to content

Instantly share code, notes, and snippets.

@alastairhm
Created March 6, 2019 15:56
Show Gist options
  • Save alastairhm/366e57a6c850cfed818c15aa04e90e1f to your computer and use it in GitHub Desktop.
Save alastairhm/366e57a6c850cfed818c15aa04e90e1f to your computer and use it in GitHub Desktop.
Get AWS VPC tags external data source when you need to assume a role.
import json
import boto3
import sys
input_json = sys.stdin.read()
try:
data = json.loads(input_json)
except ValueError as value_error:
sys.exit(value_error)
boto_sts=boto3.client('sts')
stsresponse = boto_sts.assume_role(
RoleArn=data["role_arn"],
RoleSessionName='newsession'
)
newsession_id = stsresponse["Credentials"]["AccessKeyId"]
newsession_key = stsresponse["Credentials"]["SecretAccessKey"]
newsession_token = stsresponse["Credentials"]["SessionToken"]
ec2 = boto3.resource('ec2',
region_name=data["region"],
aws_access_key_id=newsession_id,
aws_secret_access_key=newsession_key,
aws_session_token=newsession_token
)
client = boto3.client('ec2',
region_name=data["region"],
aws_access_key_id=newsession_id,
aws_secret_access_key=newsession_key,
aws_session_token=newsession_token
)
filters = [{'Name':'tag:Name', 'Values':[data["vpc_name"]]}]
vpcs = list(ec2.vpcs.filter(Filters=filters))
tags = {}
for vpc in vpcs:
response = client.describe_vpcs(
VpcIds=[
vpc.id,
]
)
for tag in response["Vpcs"][0]["Tags"]:
tags[tag["Key"]] = tag["Value"]
sys.stdout.write(json.dumps(tags))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment