java - 如何使用 AWS java SDK 列出安全组的规则

标签 java amazon-web-services sdk

这里的动机是创建一种方法来查询我的 AWS 环境以获取配置转储,将其序列化,然后能够再次运行查询以查看任何相关更改。

我的组标识符来自:

    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;
}

最佳答案

您可以通过 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 的表示允许任何 IP 在端口 80 上联系服务器的规则如下:

{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 .

关于java - 如何使用 AWS java SDK 列出安全组的规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11090734/

相关文章:

java - 如何获取默认的 FileAttributs 以创建路径

amazon-web-services - 试图从 sqs 触发我的 lambda 函数,它正在触发 lambda 但队列中没有消息

java - @class 被添加,即使它是 defaultImpl

java - @Valid不抛出异常

amazon-web-services - 如何使用 aws-cli 将日志写入 cloudwatch?

amazon-web-services - 如何将一个 AWS CodeCommit 存储库 fork 到另一个 CodeCommit 存储库?

android - Sinch Calls App-App 不工作。原因 : UserNotFound

JavaScript SDK 变量不起作用

java - VMware vCenter Web 客户端 UI 和数据服务调整

java - 用户总是需要按两次谷歌登录按钮