方法一:
如果只是一次性活动,可以考虑使用 aws-cli 本身。
使用以下 aws-cli 命令列出具有特定 IAM 角色的所有实例。
aws ec2 describe-instances --region us-east-1 --query 'Reservations[*].Instances[?IamInstanceProfile.Arn==`<Enter you Instance Profile ARN here>`].{InstanceId: InstanceId}' --output text
将<Enter you Instance Profile ARN here> 替换为Instance Profile Arn。
注意:
您必须输入 Instance Profile Arn 并且 NOT Role ARN。
Instance Profile Arn 将采用以下形式:
arn:aws:iam::xxxxxxxxxxxx:instance-profile/Profile-ASDNSDLKJ
然后您可以将上面返回的Instance-id's 列表传递给terminate-instance cli 命令。 instance-ids 必须用空格分隔。
aws ec2 terminate-instances --instance-ids i-1234567890abcdef0 i-1234567890jkefpq1
方法二:
import boto3
client = boto3.client('ec2',region_name='us-east-1')
response = client.describe_instances(
Filters=[
{
'Name': 'iam-instance-profile.arn',
'Values': [
'arn:aws:iam::1234567890:instance-profile/MyProfile-ASDNSDLKJ',
]
},
]
)
terminate_instance_list = []
for resp in response['Reservations']:
for inst in resp['Instances']:
#print inst['InstanceId']
terminate_instance_list.append(inst['InstanceId'])
#print(terminate_instance_list)
if terminate_instance_list:
response = client.terminate_instances(
InstanceIds=terminate_instance_list
)
print(response)