boto3 how to retrieve the elastic ip from an instance
up vote
0
down vote
favorite
I need to do the following:
I have some instances that contain a certain tag, I need to loop through those instances and for each instance which contains that certain tag, if that instance has an elastic ip attached, I need to tag that elastic ip with that same tag. My code is the following:
import boto3
import json
region_list = ['us-east-1']
session = boto3.Session(profile_name='default')
for region in region_list:
ec2 = session.resource('ec2',region)
client = boto3.client('ec2',region)
# Retrieve instances that contain this specific tag
instances = ec2.instances.filter(Filters=['Name':'tag:MyTargetTag', 'Values':['*']])
for instance in instances:
for tag in instance.tags:
if tag['Key'] == "MyTargetTag":
MyTargetTag = tag['Value']
## check if this instance has an elasticip
## if it has, assign the value of MyTargetTag to it
response = client.add_tags(
ResourceArns=[
#elasticip ip identifier of some sort,
],
Tags=[
'Key': 'MyTargetTag',
'Value': MyTargetTag
,
]
)
I've read through the docs and videos and what not but honestly I don't understand it quite completely and I'm just doing trial and error without any success.
amazon-ec2 boto3 elastic-ip
add a comment |
up vote
0
down vote
favorite
I need to do the following:
I have some instances that contain a certain tag, I need to loop through those instances and for each instance which contains that certain tag, if that instance has an elastic ip attached, I need to tag that elastic ip with that same tag. My code is the following:
import boto3
import json
region_list = ['us-east-1']
session = boto3.Session(profile_name='default')
for region in region_list:
ec2 = session.resource('ec2',region)
client = boto3.client('ec2',region)
# Retrieve instances that contain this specific tag
instances = ec2.instances.filter(Filters=['Name':'tag:MyTargetTag', 'Values':['*']])
for instance in instances:
for tag in instance.tags:
if tag['Key'] == "MyTargetTag":
MyTargetTag = tag['Value']
## check if this instance has an elasticip
## if it has, assign the value of MyTargetTag to it
response = client.add_tags(
ResourceArns=[
#elasticip ip identifier of some sort,
],
Tags=[
'Key': 'MyTargetTag',
'Value': MyTargetTag
,
]
)
I've read through the docs and videos and what not but honestly I don't understand it quite completely and I'm just doing trial and error without any success.
amazon-ec2 boto3 elastic-ip
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I need to do the following:
I have some instances that contain a certain tag, I need to loop through those instances and for each instance which contains that certain tag, if that instance has an elastic ip attached, I need to tag that elastic ip with that same tag. My code is the following:
import boto3
import json
region_list = ['us-east-1']
session = boto3.Session(profile_name='default')
for region in region_list:
ec2 = session.resource('ec2',region)
client = boto3.client('ec2',region)
# Retrieve instances that contain this specific tag
instances = ec2.instances.filter(Filters=['Name':'tag:MyTargetTag', 'Values':['*']])
for instance in instances:
for tag in instance.tags:
if tag['Key'] == "MyTargetTag":
MyTargetTag = tag['Value']
## check if this instance has an elasticip
## if it has, assign the value of MyTargetTag to it
response = client.add_tags(
ResourceArns=[
#elasticip ip identifier of some sort,
],
Tags=[
'Key': 'MyTargetTag',
'Value': MyTargetTag
,
]
)
I've read through the docs and videos and what not but honestly I don't understand it quite completely and I'm just doing trial and error without any success.
amazon-ec2 boto3 elastic-ip
I need to do the following:
I have some instances that contain a certain tag, I need to loop through those instances and for each instance which contains that certain tag, if that instance has an elastic ip attached, I need to tag that elastic ip with that same tag. My code is the following:
import boto3
import json
region_list = ['us-east-1']
session = boto3.Session(profile_name='default')
for region in region_list:
ec2 = session.resource('ec2',region)
client = boto3.client('ec2',region)
# Retrieve instances that contain this specific tag
instances = ec2.instances.filter(Filters=['Name':'tag:MyTargetTag', 'Values':['*']])
for instance in instances:
for tag in instance.tags:
if tag['Key'] == "MyTargetTag":
MyTargetTag = tag['Value']
## check if this instance has an elasticip
## if it has, assign the value of MyTargetTag to it
response = client.add_tags(
ResourceArns=[
#elasticip ip identifier of some sort,
],
Tags=[
'Key': 'MyTargetTag',
'Value': MyTargetTag
,
]
)
I've read through the docs and videos and what not but honestly I don't understand it quite completely and I'm just doing trial and error without any success.
amazon-ec2 boto3 elastic-ip
amazon-ec2 boto3 elastic-ip
asked Nov 8 at 20:15
Garo San
103
103
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
up vote
1
down vote
accepted
You may access VPC or classic Elastic IPs on the boto3.resource('ec2')
resources vpc_addresses
and classic_addresses
respectively.
If the addresses are associated, they will have an instance_id
attribute. You'll be able to get the tags with ec2.Instance(address.instance_id).tags
If you want to go through all addresses, the boto3.client('ec2')
client has describe_addresses
that will give you the same information.
Yes, this was helpful thanks!
– Garo San
Nov 14 at 17:50
add a comment |
up vote
0
down vote
ElasticIP addresses are 'associated' with a network interface. One instance may have multiple network interfaces, each of which may or may not have an Elastic IP address assigned to it.
This lists all the ElasticIPs attached to any of your instances, for example:
import boto3
from pprint import pprint
ec2 = boto3.resource('ec2')
instances = ec2.instances.filter()
for instance in instances:
for interface in instance.network_interfaces:
if interface.association_attribute is not None:
pprint (interface.association_attribute)
However I can't see any functionality in boto3 that allows you to return the ElasticIP as an object, or apply any tags to it. It's clearly possible, as you can do it via the console, I just can't see the functionality in boto3.
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
You may access VPC or classic Elastic IPs on the boto3.resource('ec2')
resources vpc_addresses
and classic_addresses
respectively.
If the addresses are associated, they will have an instance_id
attribute. You'll be able to get the tags with ec2.Instance(address.instance_id).tags
If you want to go through all addresses, the boto3.client('ec2')
client has describe_addresses
that will give you the same information.
Yes, this was helpful thanks!
– Garo San
Nov 14 at 17:50
add a comment |
up vote
1
down vote
accepted
You may access VPC or classic Elastic IPs on the boto3.resource('ec2')
resources vpc_addresses
and classic_addresses
respectively.
If the addresses are associated, they will have an instance_id
attribute. You'll be able to get the tags with ec2.Instance(address.instance_id).tags
If you want to go through all addresses, the boto3.client('ec2')
client has describe_addresses
that will give you the same information.
Yes, this was helpful thanks!
– Garo San
Nov 14 at 17:50
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
You may access VPC or classic Elastic IPs on the boto3.resource('ec2')
resources vpc_addresses
and classic_addresses
respectively.
If the addresses are associated, they will have an instance_id
attribute. You'll be able to get the tags with ec2.Instance(address.instance_id).tags
If you want to go through all addresses, the boto3.client('ec2')
client has describe_addresses
that will give you the same information.
You may access VPC or classic Elastic IPs on the boto3.resource('ec2')
resources vpc_addresses
and classic_addresses
respectively.
If the addresses are associated, they will have an instance_id
attribute. You'll be able to get the tags with ec2.Instance(address.instance_id).tags
If you want to go through all addresses, the boto3.client('ec2')
client has describe_addresses
that will give you the same information.
answered Nov 9 at 14:39
Vince
58539
58539
Yes, this was helpful thanks!
– Garo San
Nov 14 at 17:50
add a comment |
Yes, this was helpful thanks!
– Garo San
Nov 14 at 17:50
Yes, this was helpful thanks!
– Garo San
Nov 14 at 17:50
Yes, this was helpful thanks!
– Garo San
Nov 14 at 17:50
add a comment |
up vote
0
down vote
ElasticIP addresses are 'associated' with a network interface. One instance may have multiple network interfaces, each of which may or may not have an Elastic IP address assigned to it.
This lists all the ElasticIPs attached to any of your instances, for example:
import boto3
from pprint import pprint
ec2 = boto3.resource('ec2')
instances = ec2.instances.filter()
for instance in instances:
for interface in instance.network_interfaces:
if interface.association_attribute is not None:
pprint (interface.association_attribute)
However I can't see any functionality in boto3 that allows you to return the ElasticIP as an object, or apply any tags to it. It's clearly possible, as you can do it via the console, I just can't see the functionality in boto3.
add a comment |
up vote
0
down vote
ElasticIP addresses are 'associated' with a network interface. One instance may have multiple network interfaces, each of which may or may not have an Elastic IP address assigned to it.
This lists all the ElasticIPs attached to any of your instances, for example:
import boto3
from pprint import pprint
ec2 = boto3.resource('ec2')
instances = ec2.instances.filter()
for instance in instances:
for interface in instance.network_interfaces:
if interface.association_attribute is not None:
pprint (interface.association_attribute)
However I can't see any functionality in boto3 that allows you to return the ElasticIP as an object, or apply any tags to it. It's clearly possible, as you can do it via the console, I just can't see the functionality in boto3.
add a comment |
up vote
0
down vote
up vote
0
down vote
ElasticIP addresses are 'associated' with a network interface. One instance may have multiple network interfaces, each of which may or may not have an Elastic IP address assigned to it.
This lists all the ElasticIPs attached to any of your instances, for example:
import boto3
from pprint import pprint
ec2 = boto3.resource('ec2')
instances = ec2.instances.filter()
for instance in instances:
for interface in instance.network_interfaces:
if interface.association_attribute is not None:
pprint (interface.association_attribute)
However I can't see any functionality in boto3 that allows you to return the ElasticIP as an object, or apply any tags to it. It's clearly possible, as you can do it via the console, I just can't see the functionality in boto3.
ElasticIP addresses are 'associated' with a network interface. One instance may have multiple network interfaces, each of which may or may not have an Elastic IP address assigned to it.
This lists all the ElasticIPs attached to any of your instances, for example:
import boto3
from pprint import pprint
ec2 = boto3.resource('ec2')
instances = ec2.instances.filter()
for instance in instances:
for interface in instance.network_interfaces:
if interface.association_attribute is not None:
pprint (interface.association_attribute)
However I can't see any functionality in boto3 that allows you to return the ElasticIP as an object, or apply any tags to it. It's clearly possible, as you can do it via the console, I just can't see the functionality in boto3.
answered Nov 9 at 8:10
weegolo
414
414
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53215469%2fboto3-how-to-retrieve-the-elastic-ip-from-an-instance%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown