簡體   English   中英

通過boto3中的IAM角色過濾實例?

[英]Filtering instances by IAM role in boto3?

有沒有一種方法可以通過IAM角色過濾實例? 基本上,我想要一個腳本來終止我已啟動的所有實例,但不涉及使用其他IAM角色啟動的實例。

方法1:

如果這只是一次活動,則可以考慮使用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>替換為實例配置文件Arn

注意:您必須輸入Instance Profile Arn不是 Role ARN

實例配置文件Arn的格式為:

阿爾恩:AWS:IAM :: XXXXXXXXXXXX:實例資料/檔案,ASDNSDLKJ

然后,您可以將上面返回的Instance-id's列表傳遞給terminate-instance cli命令。 實例ID必須用空格分隔。

aws ec2 terminate-instances --instance-ids i-1234567890abcdef0 i-1234567890jkefpq1

方法2:

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)

暫無
暫無

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

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