I m trying to list out EC2 instance id using python boto3. I m new to python.
Below Code is working fine
import boto3
region = 'ap-south-1'
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
print('Into DescribeEc2Instance')
instances = ec2.describe_instances(Filters=[{'Name': 'instance-type', 'Values': ["t2.micro", "t3.micro"]}])
print(instances)
Output is
START RequestId: bb4e9b27-db8e-49fe-85ef-e26ae53f1308 Version: $LATEST
Into DescribeEc2Instance
{'Reservations': [{'Groups': [], 'Instances': [{'AmiLaunchIndex': 0, 'ImageId': 'ami-052c08d70def62', 'InstanceId': 'i-0a22a6209740df', 'InstanceType': 't2.micro', 'KeyName': 'testserver', 'LaunchTime': datetime.datetime(2020, 11, 12, 8, 11, 43, tzinfo=tzlocal()), 'Monitoring': {'State': 'disabled'}
Now to strip instance id from above output, I have added below code(last 2 lines) and for some reason its not working.
import boto3
region = 'ap-south-1'
instance = []
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
print('Into DescribeEc2Instance')
instances = ec2.describe_instances(Filters=[{'Name': 'instance-type', 'Values': ["t2.micro", "t3.micro"]}])
print(instances)
for ins_id in instances['Instances']:
print(ins_id['InstanceId'])
Error is
{
"errorMessage": "'Instances'",
"errorType": "KeyError",
"stackTrace": [
" File \"/var/task/lambda_function.py\", line 10, in lambda_handler\n for ins_id in instances['Instances']:\n"
]
}
The loop iteration should be
for ins_id in instances['Reservations'][0]['Instances']:
since you have a Reservation
key at the top level, then an array and objects in the array with the Instances
key which itself is yet another array that you then actually iterate.
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加