您可以将AmazonEC2
客户端对象(其实例在我的例子被称为ec2
)与describeSecurityGroup
获得安全组列表。
public List<SecurityGroup> findAllSecurityGroups() {
DescribeSecurityGroupsRequest securityRequest = new DescribeSecurityGroupsRequest();
DescribeSecurityGroupsResult securityDescription = ec2.describeSecurityGroups(securityRequest);
return securityDescription.getSecurityGroups();
}
一旦你一个securityGroup
,你可以调用securityGroup.getIpPermissions()
,它给你一个List<IpPermission>
。
您可以查看Javadoc了解详情,特别是关于IpPermission。
为了给你一个想法,在IpPermission
规则的toString()
表示允许服务器在端口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
类的一个实例。