【发布时间】:2022-12-22 00:43:06
【问题描述】:
我正在尝试使用 PrivateIP 启动 EC2 实例,我在其中提供参数“PrivateIP”,下面的代码将描述 ec2 并获取 InstanceId。收到 InstanceId 后,它会启动 EC2 实例
def status_ec2_instance(instanceIds_list, region_Name):
ec2 = boto3.resource('ec2', region_name=region_Name)
ec2_client = boto3.client('ec2', region_name=region_Name)
print(instanceIds_list)
a=instanceIds_list[0]
print(a)
#response=ec2_client.describe_instances(InstanceIds=instanceIds_list)
response = ec2_client.describe_instances(Filters=[
{
'Name': 'private-ip-address',
'Values': [
a,
]
}
])
for ec2 in response['Reservations'][0]['Instances']:
instanceIds = ec2['InstanceId']
print(instanceIds)
response=ec2_client.start_instances(InstanceIds=[instanceIds])
print('started your instances: ' + str(instanceIds))
instance_started = []
print(instanceIds)
instance_response = ec2.Instance([instanceIds])
instance_state = instance_response.state
if instance_state['Name'] == 'running'and instance not in instance_started:
instance_started.append(instance)
print(instance,instance_state['Name'])
print("started instances ",str(instance_started))
return instance_started
if __name__ == "__main__":
PrivateIP = sys.argv[1]
region_Name = "us-east-1"
#instanceIds_list = [instanceIds]
instanceIds_list = [PrivateIP]
status_list=status_ec2_instance(instanceIds_list, region_Name)
但是,我收到以下错误
Traceback (most recent call last):
File "test3-status.py", line 100, in <module>
status_list=status_ec2_instance(instanceIds_list, region_Name)
File "test3-status.py", line 71, in status_ec2_instance
instance_response = ec2.Instance([instanceIds])
AttributeError: 'dict' object has no attribute 'Instance'
请帮助如何解决这个问题?
【问题讨论】:
-
您正在重用您的
ec2变量。当您第二次使用它时,它不再存储 boto 客户端。
标签: python python-3.x amazon-ec2 boto3 boto