【发布时间】:2021-03-01 18:07:02
【问题描述】:
我有下面的代码,它在本地运行良好,可以停止 EC2 实例,但是当我试图移动它的生产时,它只停止第一个实例而不是第二个/第 n 个实例
import boto3
import json
access_key = "AKIAJSVXXXXXXXXXX"
secret_key = "mSvhX5q7uw8dTZ543qtC6OXXXXXXXXXXXX"
client = boto3.client('ec2', aws_access_key_id=access_key, aws_secret_access_key=secret_key, region_name='us-east-1')
file1 = open("Myfile.txt", "r").read().split("\n")
print(file1)
ec2_result = client.describe_instances(
Filters=[
{
'Name': 'tag:Name',
'Values': file1
}
]
)
ids = [ec2_result['Reservations'][0]['Instances'][i]['InstanceId'] for i in
range(len(ec2_result['Reservations'][0]['Instances']))]
print(ids)
response = client.stop_instances(
InstanceIds=ids
)
print("stooped now")
我的文件.txt
instanceonename
instance2name
它在我的本地系统中运行良好,但在生产中,它只停止第一个 EC2 实例 不是第二个
【问题讨论】:
-
确保正确标记实例。确保您期望的标签在生产中与您期望的标签匹配。确保在您执行
print(ids)时显示您期望的实例 ID -
打印显示的 ID ['instanceonename']
-
再次检查您的标签。检查
response是否有任何信息/错误。检查未终止实例上的 Ec2 终止保护状态 -
如果我在做 print(file1),它会显示 `` ['insatceone','instacne2', ' ']`` 虽然没有第三个实例
-
@rdas 如果我停止单独的实例,它在 prod 中工作得很好
标签: python amazon-web-services amazon-ec2 boto3 boto