我有多个 AWS安全组,我想在另一个安全组的1个安全组中创建入站流量规则。我可以从AWS控制台执行此操作,但我想使用java api自动执行此操作。我该怎么办?
对于使用Cidr Blocks的简单规则,我使用了 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 :(得分:0)
经过Aws Apis的一些尝试和错误后,我找到了适合我的解决方案。
我们可以使用模型 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);