2017-04-21 55 views
0

我有多个AWS安全组我想在另一个安全组的1个安全组中创建入站流量规则。我可以从AWS控制台执行此操作,但我想使用java api将其自动化。我该怎么做?从java中的另一个安全组创建Aws安全组入站规则

对于CIDR块简单的规则,我已经使用AuthorizeSecurityGroupIngressRequest,但在这我不能找到一种方法来实现这一目标。

示例代码:

AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest =new AuthorizeSecurityGroupIngressRequest(); 
authorizeSecurityGroupIngressRequest.withFromPort(securityGroupIngressRequestParam.getFromPort()); 
authorizeSecurityGroupIngressRequest.withIpProtocol(securityGroupIngressRequestParam.getIpProtocols().getName()); 
authorizeSecurityGroupIngressRequest.withToPort(securityGroupIngressRequestParam.getToPort()); 
authorizeSecurityGroupIngressRequest.withCidrIp(securityGroupIngressRequestParam.getCidrBlock()); 
authorizeSecurityGroupIngressRequest.setGroupId(securityGroupIngressRequestParam.getSecurityGroupId()); 
amazonEc2Client.authorizeSecurityGroupIngress(authorizeSecurityGroupIngressRequest); 
+0

我有两个AWS安全组SG-ac9cd2cb和SG-ac9cd2cb,我想创建SG-ac9cd2cb安全组SG-ac9cd2cb安全组入站规则。但是我无法在aws java sdk中找到任何API。我想知道如何实现这样的事情? –

回答

0

一些尝试和错误使用AWS蜜蜂后,我发现我的作品的解决方案。

我们可以使用模型IpPermission而不是设置规则详细信息并提供api来添加sourceSecurityGroupId。

AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest = new AuthorizeSecurityGroupIngressRequest(); 

    IpPermission ipPermission = new IpPermission(); 
    ipPermission.withFromPort(securityGroupIngressRequestParam.getFromPort()).withToPort(securityGroupIngressRequestParam.getToPort()) 
     .withIpProtocol(securityGroupIngressRequestParam.getIpProtocols().getName()); 

    if (!StringUtil.isEmpty(securityGroupIngressRequestParam.getCidrBlock())) { 
     ipPermission.withIpRanges(securityGroupIngressRequestParam.getCidrBlock()); 
    } else if (!StringUtil.isEmpty(securityGroupIngressRequestParam.getSourceSecurityGroupId())) { 
     UserIdGroupPair userIdGroupPairs = new UserIdGroupPair(); 
     userIdGroupPairs.setGroupId(securityGroupIngressRequestParam.getSourceSecurityGroupId()); 
     ipPermission.withUserIdGroupPairs(userIdGroupPairs); 
    } else { 
     // TODO throw exception 
    } 

    authorizeSecurityGroupIngressRequest.withIpPermissions(ipPermission); 
    authorizeSecurityGroupIngressRequest.setGroupId(securityGroupIngressRequestParam.getSecurityGroupId()); 

    amazonEc2Client.authorizeSecurityGroupIngress(authorizeSecurityGroupIngressRequest);