2012-06-18 1 views
0

Мотивация здесь заключается в создании способа запроса моей среды AWS для дампа конфигурации, ее сериализации и последующей проверки запроса любые соответствующие изменения.Как перечислить правила для группы безопасности с использованием AWS java SDK

У меня есть идентификаторы группы из:

private List<String> getSecurityGroups(InstanceNetworkInterface netInt) { 
    List<String> result = new Vector<String>(); 

    List<GroupIdentifier> groups = netInt.getGroups(); 
    for(GroupIdentifier gi : groups) { 
     result.add(gi.getGroupName()); 
    } 

    return result; 
} 

ответ

1

Вы можете получить список групп безопасности с describeSecurityGroup на объекте AmazonEC2 клиента (чей экземпляр называется ec2 в моем примере).

public List<SecurityGroup> findAllSecurityGroups() { 
    DescribeSecurityGroupsRequest securityRequest = new DescribeSecurityGroupsRequest(); 
    DescribeSecurityGroupsResult securityDescription = ec2.describeSecurityGroups(securityRequest); 
    return securityDescription.getSecurityGroups(); 
} 

После того, как у Вас есть securityGroup, вы можете позвонить securityGroup.getIpPermissions(), который дает вам List<IpPermission>.

Подробнее об Javadoc, в частности о IpPermission.

Чтобы дать Вам идею, toString() представления IpPermission правила позволяет сервер, чтобы связаться с портом 80 по любому IP, является следующим:

{IpProtocol: tcp, FromPort: 80, ToPort: 80, IpRanges: [0.0.0.0/0], } 

Если вы заинтересованы только в частности, группа безопасности, вы можете использовать:

public SecurityGroup findOneSecurityGroupByName(String securityGroupName) { 
    DescribeSecurityGroupsRequest securityRequest = new DescribeSecurityGroupsRequest(); 
    securityRequest.setGroupNames(Arrays.asList(securityGroupName)); 
    DescribeSecurityGroupsResult securityDescription = ec2.describeSecurityGroups(securityRequest); 
    return securityDescription.getSecurityGroups().get(0); 
} 

Некоторые базовые интеграционные тесты, которые должны работать в любой учетной записи Amazon EC2.

@Test 
public void findsAllSecurityGroups() { 
    assertThat(firewall.findAllSecurityGroups().size(), is(greaterThan(0))); 
} 

@Test 
public void findsDefaultSecurityGroupByName() { 
    SecurityGroup defaultGroup = firewall.findOneSecurityGroupByName("default"); 
    assertThat(defaultGroup.getGroupName(), is(equalTo("default"))); 
} 

@Test(expected = AmazonServiceException.class) 
public void throwsExceptionWhenfindingNonExistentSecurityGroup() { 
    firewall.findOneSecurityGroupByName("inexistent"); 
} 

Где firewall является экземпляром класса, который содержит findOneSecurityGroupByName и findsAllSecurityGroups.

Смежные вопросы