簡體   English   中英

實例初始化時,ec2實例的公網IP地址為None

[英]Public ip address of ec2 instance is None while the instance is initializing

在我的 ec2 實例創建並使用以下代碼運行后,我試圖獲取它的公共 IP 地址:

instance = ec2_resource.create_instances(ImageId='ami-a0cfeed8', 
MinCount=1, MaxCount=1, InstanceType='t2.micro', SecurityGroups= . 
['some_security_group'], KeyName='some_key')

instance[0].wait_until_running()
print(instance[0].public_ip_address)

但即使公共 ip 在 aws 控制台中可見,上述代碼打印的值也是None 如果我在實例的所有狀態檢查完成后嘗試打印該值,那么它打印得很好。

  1. 為什么會發生這種情況?
  2. 如何知道實例的狀態檢查仍在進行中,即它處於初始化狀態?

要采用@Michael - sqlbot 的答案並將其全部放在一個地方,以下是此代碼的工作方式:

import boto3

# create the session and resource objects
boto3_session = boto3.Session(profile_name=some_profile_you_configured)
ec2_resource = boto3_session('ec2')

# create the instance
instance = ec2_resource.create_instances(ImageId='ami-a0cfeed8', 
MinCount=1, MaxCount=1, InstanceType='t2.micro', SecurityGroups= . 
['some_security_group'], KeyName='some_key')

# use the boto3 waiter
instance[0].wait_until_running()

# reload the instance object
instance[0].reload()

public_ip = instance[0].public_ip_address

print(public_ip)

boto3 實例文檔 - reload()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM