您可以將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
類的一個實例。