@@ -28,8 +28,8 @@ type EC2 interface {
28
28
DescribeInstance (instanceID string ) (* ec2.Instance , error )
29
29
DescribeVPC (vpcID string ) (* ec2.DescribeVpcsOutput , error )
30
30
DescribeNetworkInterface (interfaceIDs []string ) (* ec2.DescribeNetworkInterfacesOutput , error )
31
- AuthorizeSecurityGroupIngress (groupID string , protocol string , fromPort int , toPort int , cidrIP string ) error
32
- RevokeSecurityGroupIngress (groupID string , protocol string , fromPort int , toPort int , cidrIP string ) error
31
+ AuthorizeSecurityGroupIngress (groupID string , protocol string , fromPort int , toPort int , cidrIP string , sourceSG bool ) error
32
+ RevokeSecurityGroupIngress (groupID string , protocol string , fromPort int , toPort int , cidrIP string , sourceSG bool ) error
33
33
AuthorizeSecurityGroupEgress (groupID string , protocol string , fromPort int , toPort int , cidrIP string ) error
34
34
RevokeSecurityGroupEgress (groupID string , protocol string , fromPort int , toPort int , cidrIP string ) error
35
35
AssociateVPCCIDRBlock (vpcId string , cidrBlock string ) (* ec2.AssociateVpcCidrBlockOutput , error )
@@ -96,30 +96,44 @@ func (d *defaultEC2) DescribeInstance(instanceID string) (*ec2.Instance, error)
96
96
return describeInstanceOutput .Reservations [0 ].Instances [0 ], nil
97
97
}
98
98
99
- func (d * defaultEC2 ) AuthorizeSecurityGroupIngress (groupID string , protocol string , fromPort int , toPort int , cidrIP string ) error {
99
+ func (d * defaultEC2 ) AuthorizeSecurityGroupIngress (groupID string , protocol string , fromPort int , toPort int , cidrIP string , sourceSG bool ) error {
100
100
var ipv4Ranges []* ec2.IpRange
101
101
var ipv6Ranges []* ec2.Ipv6Range
102
- if strings .Contains (cidrIP , ":" ) {
103
- ipv6Ranges = []* ec2.Ipv6Range {
104
- {
105
- CidrIpv6 : aws .String (cidrIP ),
106
- },
102
+ var ipPermissions * ec2.IpPermission
103
+ if ! sourceSG {
104
+ if strings .Contains (cidrIP , ":" ) {
105
+ ipv6Ranges = []* ec2.Ipv6Range {
106
+ {
107
+ CidrIpv6 : aws .String (cidrIP ),
108
+ },
109
+ }
110
+ } else {
111
+ ipv4Ranges = []* ec2.IpRange {
112
+ {
113
+ CidrIp : aws .String (cidrIP ),
114
+ },
115
+ }
116
+ }
117
+
118
+ ipPermissions = & ec2.IpPermission {
119
+ FromPort : aws .Int64 (int64 (fromPort )),
120
+ ToPort : aws .Int64 (int64 (toPort )),
121
+ IpProtocol : aws .String (protocol ),
122
+ IpRanges : ipv4Ranges ,
123
+ Ipv6Ranges : ipv6Ranges ,
107
124
}
108
125
} else {
109
- ipv4Ranges = []* ec2.IpRange {
110
- {
111
- CidrIp : aws .String (cidrIP ),
126
+ ipPermissions = & ec2.IpPermission {
127
+ FromPort : aws .Int64 (int64 (fromPort )),
128
+ ToPort : aws .Int64 (int64 (toPort )),
129
+ IpProtocol : aws .String (protocol ),
130
+ UserIdGroupPairs : []* ec2.UserIdGroupPair {
131
+ {
132
+ GroupId : aws .String (cidrIP ),
133
+ },
112
134
},
113
135
}
114
136
}
115
-
116
- ipPermissions := & ec2.IpPermission {
117
- FromPort : aws .Int64 (int64 (fromPort )),
118
- ToPort : aws .Int64 (int64 (toPort )),
119
- IpProtocol : aws .String (protocol ),
120
- IpRanges : ipv4Ranges ,
121
- Ipv6Ranges : ipv6Ranges ,
122
- }
123
137
authorizeSecurityGroupIngressInput := & ec2.AuthorizeSecurityGroupIngressInput {
124
138
GroupId : aws .String (groupID ),
125
139
IpPermissions : []* ec2.IpPermission {ipPermissions },
@@ -128,30 +142,44 @@ func (d *defaultEC2) AuthorizeSecurityGroupIngress(groupID string, protocol stri
128
142
return err
129
143
}
130
144
131
- func (d * defaultEC2 ) RevokeSecurityGroupIngress (groupID string , protocol string , fromPort int , toPort int , cidrIP string ) error {
145
+ func (d * defaultEC2 ) RevokeSecurityGroupIngress (groupID string , protocol string , fromPort int , toPort int , cidrIP string , sourceSG bool ) error {
132
146
var ipv4Ranges []* ec2.IpRange
133
147
var ipv6Ranges []* ec2.Ipv6Range
134
- if strings .Contains (cidrIP , ":" ) {
135
- ipv6Ranges = []* ec2.Ipv6Range {
136
- {
137
- CidrIpv6 : aws .String (cidrIP ),
138
- },
148
+ var ipPermissions * ec2.IpPermission
149
+ if ! sourceSG {
150
+ if strings .Contains (cidrIP , ":" ) {
151
+ ipv6Ranges = []* ec2.Ipv6Range {
152
+ {
153
+ CidrIpv6 : aws .String (cidrIP ),
154
+ },
155
+ }
156
+ } else {
157
+ ipv4Ranges = []* ec2.IpRange {
158
+ {
159
+ CidrIp : aws .String (cidrIP ),
160
+ },
161
+ }
162
+ }
163
+
164
+ ipPermissions = & ec2.IpPermission {
165
+ FromPort : aws .Int64 (int64 (fromPort )),
166
+ ToPort : aws .Int64 (int64 (toPort )),
167
+ IpProtocol : aws .String (protocol ),
168
+ IpRanges : ipv4Ranges ,
169
+ Ipv6Ranges : ipv6Ranges ,
139
170
}
140
171
} else {
141
- ipv4Ranges = []* ec2.IpRange {
142
- {
143
- CidrIp : aws .String (cidrIP ),
172
+ ipPermissions = & ec2.IpPermission {
173
+ FromPort : aws .Int64 (int64 (fromPort )),
174
+ ToPort : aws .Int64 (int64 (toPort )),
175
+ IpProtocol : aws .String (protocol ),
176
+ UserIdGroupPairs : []* ec2.UserIdGroupPair {
177
+ {
178
+ GroupId : aws .String (cidrIP ),
179
+ },
144
180
},
145
181
}
146
182
}
147
-
148
- ipPermissions := & ec2.IpPermission {
149
- FromPort : aws .Int64 (int64 (fromPort )),
150
- ToPort : aws .Int64 (int64 (toPort )),
151
- IpProtocol : aws .String (protocol ),
152
- IpRanges : ipv4Ranges ,
153
- Ipv6Ranges : ipv6Ranges ,
154
- }
155
183
revokeSecurityGroupIngressInput := & ec2.RevokeSecurityGroupIngressInput {
156
184
GroupId : aws .String (groupID ),
157
185
IpPermissions : []* ec2.IpPermission {ipPermissions },
0 commit comments