Python 3 Boto Unable to parse pagination error
Tim Dunphy
bluethundr at gmail.com
Tue Feb 26 15:06:14 EST 2019
Hi all,
I'm trying to create a python 3 script that takes a list of AWS instance
IDs. It then prints out some information about the instances and then
terminates them.
I am very new to python, so still working through some basic issues.
This is the error I get when I run the script:
python3 .\aws_ec2_termiante_instances.py
Enter an instance ID separated by commas:
i-0463897140af217f8,i-0634fc5fa453462fb
enter code here
Deleting Instance IDs:
i-0463897140af217f8
i-0634fc5fa453462fb
Traceback (most recent call last):
File ".\aws_ec2_termiante_instances.py", line 37, in <module>
NextToken='string'
File
"C:\Users\tdunphy\AppData\Local\Programs\Python\Python37-32\lib\site-packages\botocore\client.py",
line 357, in _api_call
return self._make_api_call(operation_name, kwargs)
File
"C:\Users\tdunphy\AppData\Local\Programs\Python\Python37-32\lib\site-packages\botocore\client.py",
line 661, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred
(InvalidParameterValue) when calling the DescribeInstances operation:
Unable to parse pagination token
This is my script that produces the above output:
from collections import defaultdict
import boto3
# Connect to EC2
ec2 = boto3.client('ec2')
instance_id_list = input("Enter an instance ID separated by commas: ")
instance_ids_text = instance_id_list.split(",")
print("Deleting Instance IDs:")
for instance_id in instance_ids_text:
print(instance_id)
ec2info = defaultdict()
for instance_id in instance_ids_text:
instance = ec2.describe_instances(
Filters=[
{
'Name': 'string',
'Values': [
'string',
]
},
],
InstanceIds=[
'instance_id',
],
MaxResults=123,
NextToken='string'
)
for tag in instance.tags:
if 'Name'in tag['Key']:
name = tag['Value']
# Add instance info to a dictionary
ec2info[instance.id] = {
'Name': name,
'Instance ID': instance.id,
'Type': instance.instance_type,
'State': instance.state['Name'],
'Private IP': instance.private_ip_address,
'Public IP': instance.public_ip_address,
'Launch Time': instance.launch_time
}
attributes = ['Name', 'Instance ID', 'Type', 'State',
'Private IP', 'Public IP', 'Launch Time']
for instance_id, instance in ec2info.items():
for key in attributes:
print("{0}: {1}".format(key, instance[key]))
print("------")
ec2.instances.filter(InstanceIds=instance.id).stop()
ec2.instances.filter(InstanceIds=instance.id).terminate()
To recap, what I would like to do is give the script a list of instance
IDs, print out the list of instance IDs, then print some info about those
instances. Then terminate them.
How can I get past this error and produce that result?
Thank you,
Tim
--
GPG me!!
gpg --keyserver pool.sks-keyservers.net --recv-keys F186197B
More information about the Python-list
mailing list