【问题标题】:Boto3 ec2 describe_instances always returns emptyBoto3 ec2 describe_instances 总是返回空
【发布时间】:2018-05-21 20:34:22
【问题描述】:

我有一个非常简单的沙箱,我正在尝试开始工作,以便可以在更大的应用程序中使用它:

ec2_client = boto3.client(
    'ec2',
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY)

response = ec2_client.describe_instances()
print(response)

结果...

{
  'Reservations': [], 
  'ResponseMetadata': {
    'RequestId': '2c28e8aa-da6d-4ca4-8ea7-f672518cac9f',
    'HTTPStatusCode': 200, 
    'HTTPHeaders': {
      'content-type': 'text/xml;charset=UTF-8', 
      'transfer-encoding': 'chunked', 
      'vary': 'Accept-Encoding', 
      'date': 'Thu, 07 Dec 2017 16:44:30 GMT', 
      'server': 'AmazonEC2'
  }, 
  'RetryAttempts': 0}
}

但是问题是不管我运行多少次Reservations总是空的:(。

在 AWS 控制台中,我可以清楚地看到一个实例正在运行...

我尝试启动更多实例,重新启动我正在运行的实例。我将我的初始脚本放在一个循环中并重复运行它,同时我这样做是为了寻找 Reservations 数组实际上有数据的任何迹象。

我仔细检查了我的 aws ACCESS_KEY 和 SECRET_KEY 是否正确并指向正确的帐户。他们是。

我不知道这是为什么。它是如此简单,应该可以工作。我是 AWS 新手,因此感谢您提供任何帮助。

【问题讨论】:

  • 您确定查询的区域正确吗?
  • 我不知道我正在查询一个特定区域。您知道如何指定特定区域吗?
  • 仔细检查了文档boto3.readthedocs.io/en/latest/reference/services/…,他们没有说任何关于查询特定区域的内容。你认为它可能在使用我的位置??
  • 试试boto3.client(..., region_name='us-xxx-x')
  • 你自己搞定了。做出一个答案,我会排除它。谢谢@kichik!

标签: python amazon-web-services amazon-ec2 boto3


【解决方案1】:

您好像忘记添加地区了。

创建客户端时设置区域

ec2_client = boto3.client(
  'ec2',
  aws_access_key_id=ACCESS_KEY,
  aws_secret_access_key=SECRET_KEY,
  region_name=REGION_NAME
)

response = ec2_client.describe_instances()
print(response)

如果您的 EC2 实例位于俄勒冈州,您可以使用region_name='us-west-2'

不建议使用硬编码凭据。您可以使用awscli 配置您的配置文件,然后在您的代码中引用它。

session = boto3.Session(profile_name='dev')
# Any clients created from this session will use credentials
# from the [dev] section of ~/.aws/credentials.
ec2_client = session.client('ec2')

您可以阅读有关 Boto3 凭据的更多信息Boto3 Credentials

【讨论】:

    【解决方案2】:

    问题在于,boto3 不知何故使用了我的实例未在其中运行的区域。解决方案是在初始化客户端时指定该区域:

    ec2_client = boto3.client(
        'ec2',
        region_name='us-east-2',
        aws_access_key_id=ACCESS_KEY,
        aws_secret_access_key=SECRET_KEY)
    

    感谢@kichik 告诉我去哪里看!

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 1970-01-01
      • 2012-10-12
      • 2016-07-11
      • 2017-12-19
      • 2019-12-02
      • 1970-01-01
      • 1970-01-01
      • 2019-02-18
      相关资源
      最近更新 更多