您可以在客户端对象(在我的示例中调用其实例)describeSecurityGroup
上获取安全组列表。AmazonEC2
ec2
public List<SecurityGroup> findAllSecurityGroups() {
DescribeSecurityGroupsRequest securityRequest = new DescribeSecurityGroupsRequest();
DescribeSecurityGroupsResult securityDescription = ec2.describeSecurityGroups(securityRequest);
return securityDescription.getSecurityGroups();
}
一旦你有了 a securityGroup
,你就可以调用securityGroup.getIpPermissions()
,这会给你一个List<IpPermission>
。
您可以查看Javadoc以获取详细信息,尤其是有关IpPermission的信息。
为了给你一个想法,允许任何 IP 在端口 80 上联系服务器toString()
的IpPermission
规则表示如下:
{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");
}
wherefirewall
是包含findOneSecurityGroupByName
和的类的实例findsAllSecurityGroups
。