botocore.exceptions.Waiter错误: Waiter 实例运行失败: 无效 id: "instance_id"



我正在尝试通过 boto3 运行一个已经存在于 amazon ec2 上的实例。

import sys
import boto3

instance_id = "i-03e7f6391a0f523ee"
action = 'ON'
ec2 = boto3.client('ec2')
if action == 'ON':
response = ec2.start_instances(InstanceIds=[instance_id], DryRun=False)
else:
response = ec2.stop_instances(InstanceIds=[instance_id], DryRun=False)
print(response)

#resp2=ec2.describe_instances()
#foo = response['Reservations'][0]['Instances'][0]['NetworkInterfaces'][0]['Association']['PublicDnsName']
#filter=[{'Name':'Association','Values':['PublicDnsName']}]
#print (foo)
#instance = ec2.resource('ec2').instance(instance_id)
#while instance.state['Name'] not in ('running', 'stopped'):
#        sleep(5)
#        print("the instance is initializing")
x2=boto3.resource('ec2')
instance=x2.Instance('instance_id')
foo=instance.wait_until_running('self',Filters=[{'Name':'instance-state-name','Values':['running']}])
print ("instance.wait_until_running('self',Filters=[{'Name':'instance-state-name','Values':['running']}]) = "+foo)

但在这一行

foo=instance.wait_until_running('self',Filters=[{'Name':'instance-state-name','Values':['running']}])

我收到错误

File "E:installation2python3libsite-packagesboto3resourcesfactory.py", line 369, in do_waiter
waiter(self, *args, **kwargs)
File "E:installation2python3libsite-packagesboto3resourcesaction.py", line 202, in __call__
response = waiter.wait(**params)
File "E:installation2python3libsite-packagesbotocorewaiter.py", line 53, in wait
Waiter.wait(self, **kwargs)
File "E:installation2python3libsite-packagesbotocorewaiter.py", line 313, in wait
last_response=response
botocore.exceptions.WaiterError: Waiter InstanceRunning failed: Invalid id: "instance_id"

这里的使用有什么问题

foo=instance.wait_until_running('self',Filters=[{'Name':'instance-state-name','Values':['running']}])

我只是想了解此处提到的属性如何可用 https://boto3.readthedocs.io/en/latest/reference/services/ec2.html#instance 可以在程序中使用。像wait_until_running这样的方法,我无法使用。

好的,我解决了由于使用

instance=x2.Instance('instance_id')

它应该像这样使用

instance=x2.Instance(instance_id)

最新更新