クライアントオブジェクト(私の例ではそのインスタンスが呼び出されます)describeSecurityGroup
でセキュリティグループリストを取得できます。AmazonEC2
ec2
public List<SecurityGroup> findAllSecurityGroups() {
DescribeSecurityGroupsRequest securityRequest = new DescribeSecurityGroupsRequest();
DescribeSecurityGroupsResult securityDescription = ec2.describeSecurityGroups(securityRequest);
return securityDescription.getSecurityGroups();
}
を取得したらsecurityGroup
、を呼び出すことができます。securityGroup.getIpPermissions()
これにより、が得られますList<IpPermission>
。
詳細、特にIpPermissionについては、Javadocを確認できます。
アイデアを与えるために、サーバーが任意の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);
}
いくつかの基本的な統合テスト。AmazonEC2アカウントで機能するはずです。
@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