运行aws boto3 ec2清单脚本名称时遇到问题错误:未定义名称“实例名称”

2024-04-25 05:28:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从Boto3脚本中获取Ec2清单信息该脚本在jupyter笔记本上运行良好,但当我在我的project Linux环境中运行时,我遇到了以下问题

名称错误:未定义名称“实例名称”

以下是我的脚本:

import boto3
import csv
import pprint as pprint
aws_mang_con=boto3.session.Session(profile_name='root')
ec2_cli=aws_mang_con.client('ec2')
cnt=1
csv_ob=open("demo3.csv","w",newline='')
csv_w=csv.writer(csv_ob)
csv_w.writerow(["S_NO","Enviroment",'Application','Componenets','Instance_id','IP','Instance_Name','Instance_Size','Status'])
response=ec2_cli.describe_instances()['Reservations']
for each_item in response:
  for instances in each_item['Instances']:
    for tags in instances['Tags']:
      if tags['Key'] in 'Name':
        name=tags['Value']
        print(name)
      elif tags['Key'] in 'Application':
        application=tags['Value']
        print(application)
      elif tags['Key'] in 'Components':
        components=tags['Value']
        print(components)  

    csv_w.writerow([cnt,'dev',application,components,instances['PrivateIpadress'],name,instances['InstanceType'],instances['State']['Name']])
    cnt+=1
csv_ob.close()

      

这里还需要添加什么,因为它在我本地的jupyter笔记本上运行良好,但在我的project Linux机器上显示了上述错误。任何帮助都将不胜感激


Tags: csvinstancesinstancekeynameinimport脚本
1条回答
网友
1楼 · 发布于 2024-04-25 05:28:03

我认为下面这行的缩进不正确

csv_w.writerow([cnt,'dev',application,components,instances['PrivateIpadress'],name,instances['InstanceType'],instances['State']['Name']])

标识应与表示for tags in instances['Tags']:的行相同

应该是这样的:

for instances in each_item['Instances']:
  for tags in instances['Tags']:
    # assign the value to variables
    #
  csv_w.writerow([cnt,'dev',application,components,instances['PrivateIpadress'],name,instances['InstanceType'],instances['State']['Name']])
    cnt+=1
csv_ob.close()

相关问题 更多 >