首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用for循环时畸形InstanceID的AWS InstanceID误差

使用for循环时畸形InstanceID的AWS InstanceID误差
EN

Stack Overflow用户
提问于 2022-09-07 19:29:45
回答 1查看 106关注 0票数 1

嗨,当使用for循环输入实例id时,我遇到了一个错误。下面是我的代码和错误。

代码只是将所有实例is放在一个文件中,我在for循环中使用该文件来获得一个描述实例输出。

格式似乎很好,当我手动输入实例id时,它工作得很好。让我知道

代码语言:javascript
复制
#!/usr/bin/python3
import boto3
import csv

ec2_re = boto3.resource('ec2')
ids= [instance.id for instance in ec2_re.instances.all()]
with open('ids.txt', 'w') as file_handler:
    for id in ids:
        file_handler.write("'{}'\n".format(id))

ec2 = boto3.client('ec2', region_name='us-east-1')
INSTANCE_ID = open("ids.txt", "r")  #need to loop thru this
for x in INSTANCE_ID:
    result = []
    response = ec2.describe_instances(
        InstanceIds=[
            x
        ]).get('Reservations')

错误

代码语言:javascript
复制
Traceback (most recent call last):
  File "./excel_new.py", line 17, in <module>
    x
  File "/usr/local/lib/python3.7/site-packages/botocore/client.py", line 514, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/local/lib/python3.7/site-packages/botocore/client.py", line 934, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (InvalidInstanceID.Malformed) when calling the DescribeInstances operation: Invalid id: "'i-03b6908c79e0dd9dd'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-07 19:44:30

在没有多余引号的情况下编写实例ID。例如:

代码语言:javascript
复制
file_handler.write("{}\n".format(id))

在以后如何读取文本文件中有一个次要问题。您需要从包含实例ID的文本行中删除换行符。例如:

代码语言:javascript
复制
with open("ids.txt", "r") as fp:
    for id in [line.rstrip() for line in fp.readlines()]:
        print(id)

下面是一个更完整的示例,它既写入又读取实例ID:

代码语言:javascript
复制
ids = ["id-12345", "id-23456", "id-34567"]

with open("ids.txt", "w") as fp:
    for id in ids:
        fp.write(f"{id}\n")

with open("ids.txt", "r") as fp:
    for id in [line.rstrip() for line in fp.readlines()]:
        print(id)

因为Python中的文件对象是迭代器,所以还可以使用:

代码语言:javascript
复制
for id in [line.rstrip() for line in open("ids.txt", "r")]:
    print(id)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73640611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档