2017-10-05 2 views
-2

1)에 :BOTO 내가 boto3 코드로 BOTO에서이를 구현하려면 어떻게 Boto3 기능 구현

conn = boto.connect_ec2() # boto way 
sgs = conn.get_all_security_groups() # boto way 
for sg in sgs: 
    if len(sg.instances()) == 0: 
     print(sg.name, sg.id, len(sg.instances())) 

위의 코드는 기본적으로 연결없는 경우 모든 보안 그룹을 인쇄합니다. duct.sh() 모듈을 사용


2)이 개개의 명령

command = 'aws ec2 describe-instances --filters "Name=instance.group-id,Values=' + sg.id + '\" --query \'Reservations[*].Instances[*].[InstanceId,Tags[?Key==`Name`] | [0].Value]\' --output json' 
+1

은 '나를위한 코드 작성'과 매우 유사하므로 boto 3 doc (http://boto3.readthedocs.io/en/latest/reference/services/ec2.html#EC2.Client.describe_security_groups) 및 2 확인 http://boto3.readthedocs.io/en/latest/reference/services /ec2.html#EC2.Client.describe_instances –

+0

질문의 두 번째 부분에서 실제로 무엇을 묻고 있습니까? 서로 관련이없는 경우 별도의 질문을 만드십시오. –

답변

1

BOTO : get_all_security_groups()

boto3 : security_group_iterator = ec2.security_groups.all() 그러나

, BOTO가 boto.ec2.securitygroup.SecurityGroup.instances() 방법 반면 갖는다 boto3에는 ec2.SecurityGroup에 해당하는 메소드가 없습니다.

response = client.describe_instances(
    Filters=[{'Name':'instance.group-id','Values':['sg-abcd1234']}]) 

이 지정된 보안 그룹을 사용하는 인스턴스의 목록을 반환합니다 : 당신이 Filter으로 보안 그룹을 전달 describe_instances()를 호출하는 것처럼

따라서, 그것은 보인다.

그런 다음 len(response['Reservations'])을 계산하여 사용하지 않은 보안 그룹을 찾을 수 있습니다. (참고 : 이것은 길이가 0 인 응답을 찾는 쉬운 방법이지만 실제 인스턴스를 계산하려면 모두 Reservations.Instances을 추가해야합니다.)

+0

이걸 시험해 보시라. 나는 boto3에서 방법을 찾을 수 없었다. – codelinx

관련 문제