aws-sdk-ec2 1.0.0.rc2 → 1.0.0.rc3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/aws-sdk-ec2.rb +2 -2
- data/lib/aws-sdk-ec2/classic_address.rb +198 -200
- data/lib/aws-sdk-ec2/client.rb +17169 -14563
- data/lib/aws-sdk-ec2/client_api.rb +6458 -6301
- data/lib/aws-sdk-ec2/dhcp_options.rb +158 -160
- data/lib/aws-sdk-ec2/errors.rb +4 -13
- data/lib/aws-sdk-ec2/image.rb +404 -406
- data/lib/aws-sdk-ec2/instance.rb +1423 -1422
- data/lib/aws-sdk-ec2/internet_gateway.rb +178 -180
- data/lib/aws-sdk-ec2/key_pair.rb +98 -100
- data/lib/aws-sdk-ec2/key_pair_info.rb +102 -104
- data/lib/aws-sdk-ec2/network_acl.rb +326 -328
- data/lib/aws-sdk-ec2/network_interface.rb +428 -430
- data/lib/aws-sdk-ec2/network_interface_association.rb +126 -128
- data/lib/aws-sdk-ec2/placement_group.rb +400 -399
- data/lib/aws-sdk-ec2/resource.rb +2696 -2659
- data/lib/aws-sdk-ec2/route.rb +229 -231
- data/lib/aws-sdk-ec2/route_table.rb +243 -245
- data/lib/aws-sdk-ec2/route_table_association.rb +148 -150
- data/lib/aws-sdk-ec2/security_group.rb +515 -517
- data/lib/aws-sdk-ec2/snapshot.rb +431 -433
- data/lib/aws-sdk-ec2/subnet.rb +981 -977
- data/lib/aws-sdk-ec2/tag.rb +185 -187
- data/lib/aws-sdk-ec2/types.rb +24081 -20965
- data/lib/aws-sdk-ec2/volume.rb +513 -512
- data/lib/aws-sdk-ec2/vpc.rb +1671 -1649
- data/lib/aws-sdk-ec2/vpc_address.rb +189 -191
- data/lib/aws-sdk-ec2/vpc_peering_connection.rb +219 -221
- data/lib/aws-sdk-ec2/waiters.rb +1252 -1210
- metadata +2 -2
@@ -1,177 +1,175 @@
|
|
1
1
|
# WARNING ABOUT GENERATED CODE
|
2
2
|
#
|
3
|
-
# This file is generated. See the contributing for
|
3
|
+
# This file is generated. See the contributing guide for more information:
|
4
4
|
# https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
|
5
5
|
#
|
6
6
|
# WARNING ABOUT GENERATED CODE
|
7
7
|
|
8
|
-
module Aws
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
8
|
+
module Aws::EC2
|
9
|
+
class RouteTableAssociation
|
10
|
+
|
11
|
+
extend Aws::Deprecations
|
12
|
+
|
13
|
+
# @overload def initialize(id, options = {})
|
14
|
+
# @param [String] id
|
15
|
+
# @option options [Client] :client
|
16
|
+
# @overload def initialize(options = {})
|
17
|
+
# @option options [required, String] :id
|
18
|
+
# @option options [Client] :client
|
19
|
+
def initialize(*args)
|
20
|
+
options = Hash === args.last ? args.pop.dup : {}
|
21
|
+
@id = extract_id(args, options)
|
22
|
+
@data = options.delete(:data)
|
23
|
+
@client = options.delete(:client) || Client.new(options)
|
24
|
+
end
|
26
25
|
|
27
|
-
|
26
|
+
# @!group Read-Only Attributes
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
# @return [String]
|
29
|
+
def id
|
30
|
+
@id
|
31
|
+
end
|
32
|
+
alias :route_table_association_id :id
|
34
33
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
34
|
+
# The ID of the route table.
|
35
|
+
# @return [String]
|
36
|
+
def route_table_id
|
37
|
+
data.route_table_id
|
38
|
+
end
|
40
39
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
40
|
+
# The ID of the subnet. A subnet ID is not returned for an implicit
|
41
|
+
# association.
|
42
|
+
# @return [String]
|
43
|
+
def subnet_id
|
44
|
+
data.subnet_id
|
45
|
+
end
|
47
46
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
47
|
+
# Indicates whether this is the main route table.
|
48
|
+
# @return [Boolean]
|
49
|
+
def main
|
50
|
+
data.main
|
51
|
+
end
|
53
52
|
|
54
|
-
|
53
|
+
# @!endgroup
|
55
54
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
55
|
+
# @return [Client]
|
56
|
+
def client
|
57
|
+
@client
|
58
|
+
end
|
60
59
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
60
|
+
# @raise [NotImplementedError]
|
61
|
+
# @api private
|
62
|
+
def load
|
63
|
+
msg = "#load is not implemented, data only available via enumeration"
|
64
|
+
raise NotImplementedError, msg
|
65
|
+
end
|
66
|
+
alias :reload :load
|
67
|
+
|
68
|
+
# @raise [NotImplementedError] Raises when {#data_loaded?} is `false`.
|
69
|
+
# @return [Types::RouteTableAssociation]
|
70
|
+
# Returns the data for this {RouteTableAssociation}.
|
71
|
+
def data
|
72
|
+
load unless @data
|
73
|
+
@data
|
74
|
+
end
|
76
75
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
76
|
+
# @return [Boolean]
|
77
|
+
# Returns `true` if this resource is loaded. Accessing attributes or
|
78
|
+
# {#data} on an unloaded resource will trigger a call to {#load}.
|
79
|
+
def data_loaded?
|
80
|
+
!!@data
|
81
|
+
end
|
83
82
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
83
|
+
# @!group Actions
|
84
|
+
|
85
|
+
# @example Request syntax with placeholder values
|
86
|
+
#
|
87
|
+
# route_table_association.delete({
|
88
|
+
# dry_run: false,
|
89
|
+
# })
|
90
|
+
# @param [Hash] options ({})
|
91
|
+
# @option options [Boolean] :dry_run
|
92
|
+
# Checks whether you have the required permissions for the action,
|
93
|
+
# without actually making the request, and provides an error response.
|
94
|
+
# If you have the required permissions, the error response is
|
95
|
+
# `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
|
96
|
+
# @return [EmptyStructure]
|
97
|
+
def delete(options = {})
|
98
|
+
options = options.merge(association_id: @id)
|
99
|
+
resp = @client.disassociate_route_table(options)
|
100
|
+
resp.data
|
101
|
+
end
|
102
|
+
|
103
|
+
# @example Request syntax with placeholder values
|
104
|
+
#
|
105
|
+
# routetableassociation = route_table_association.replace_subnet({
|
106
|
+
# dry_run: false,
|
107
|
+
# route_table_id: "String", # required
|
108
|
+
# })
|
109
|
+
# @param [Hash] options ({})
|
110
|
+
# @option options [Boolean] :dry_run
|
111
|
+
# Checks whether you have the required permissions for the action,
|
112
|
+
# without actually making the request, and provides an error response.
|
113
|
+
# If you have the required permissions, the error response is
|
114
|
+
# `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
|
115
|
+
# @option options [required, String] :route_table_id
|
116
|
+
# The ID of the new route table to associate with the subnet.
|
117
|
+
# @return [RouteTableAssociation]
|
118
|
+
def replace_subnet(options = {})
|
119
|
+
options = options.merge(association_id: @id)
|
120
|
+
resp = @client.replace_route_table_association(options)
|
121
|
+
RouteTableAssociation.new(
|
122
|
+
id: resp.data.new_association_id,
|
123
|
+
client: @client
|
124
|
+
)
|
125
|
+
end
|
126
|
+
|
127
|
+
# @!group Associations
|
103
128
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
# })
|
110
|
-
# @param [Hash] options ({})
|
111
|
-
# @option options [Boolean] :dry_run
|
112
|
-
# Checks whether you have the required permissions for the action,
|
113
|
-
# without actually making the request, and provides an error response.
|
114
|
-
# If you have the required permissions, the error response is
|
115
|
-
# `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
|
116
|
-
# @option options [required, String] :route_table_id
|
117
|
-
# The ID of the new route table to associate with the subnet.
|
118
|
-
# @return [RouteTableAssociation]
|
119
|
-
def replace_subnet(options = {})
|
120
|
-
options = options.merge(association_id: @id)
|
121
|
-
resp = @client.replace_route_table_association(options)
|
122
|
-
RouteTableAssociation.new(
|
123
|
-
id: resp.data.new_association_id,
|
129
|
+
# @return [RouteTable, nil]
|
130
|
+
def route_table
|
131
|
+
if data.route_table_id
|
132
|
+
RouteTable.new(
|
133
|
+
id: data.route_table_id,
|
124
134
|
client: @client
|
125
135
|
)
|
136
|
+
else
|
137
|
+
nil
|
126
138
|
end
|
139
|
+
end
|
127
140
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
else
|
138
|
-
nil
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
# @return [Subnet, nil]
|
143
|
-
def subnet
|
144
|
-
if data.subnet_id
|
145
|
-
Subnet.new(
|
146
|
-
id: data.subnet_id,
|
147
|
-
client: @client
|
148
|
-
)
|
149
|
-
else
|
150
|
-
nil
|
151
|
-
end
|
141
|
+
# @return [Subnet, nil]
|
142
|
+
def subnet
|
143
|
+
if data.subnet_id
|
144
|
+
Subnet.new(
|
145
|
+
id: data.subnet_id,
|
146
|
+
client: @client
|
147
|
+
)
|
148
|
+
else
|
149
|
+
nil
|
152
150
|
end
|
151
|
+
end
|
153
152
|
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
end
|
153
|
+
# @deprecated
|
154
|
+
# @api private
|
155
|
+
def identifiers
|
156
|
+
{ id: @id }
|
157
|
+
end
|
158
|
+
deprecated(:identifiers)
|
159
|
+
|
160
|
+
private
|
161
|
+
|
162
|
+
def extract_id(args, options)
|
163
|
+
value = args[0] || options.delete(:id)
|
164
|
+
case value
|
165
|
+
when String then value
|
166
|
+
when nil then raise ArgumentError, "missing required option :id"
|
167
|
+
else
|
168
|
+
msg = "expected :id to be a String, got #{value.class}"
|
169
|
+
raise ArgumentError, msg
|
172
170
|
end
|
173
|
-
|
174
|
-
class Collection < Aws::Resources::Collection; end
|
175
171
|
end
|
172
|
+
|
173
|
+
class Collection < Aws::Resources::Collection; end
|
176
174
|
end
|
177
175
|
end
|
@@ -1,554 +1,552 @@
|
|
1
1
|
# WARNING ABOUT GENERATED CODE
|
2
2
|
#
|
3
|
-
# This file is generated. See the contributing for
|
3
|
+
# This file is generated. See the contributing guide for more information:
|
4
4
|
# https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
|
5
5
|
#
|
6
6
|
# WARNING ABOUT GENERATED CODE
|
7
7
|
|
8
|
-
module Aws
|
9
|
-
|
10
|
-
class SecurityGroup
|
8
|
+
module Aws::EC2
|
9
|
+
class SecurityGroup
|
11
10
|
|
12
|
-
|
11
|
+
extend Aws::Deprecations
|
13
12
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
13
|
+
# @overload def initialize(id, options = {})
|
14
|
+
# @param [String] id
|
15
|
+
# @option options [Client] :client
|
16
|
+
# @overload def initialize(options = {})
|
17
|
+
# @option options [required, String] :id
|
18
|
+
# @option options [Client] :client
|
19
|
+
def initialize(*args)
|
20
|
+
options = Hash === args.last ? args.pop.dup : {}
|
21
|
+
@id = extract_id(args, options)
|
22
|
+
@data = options.delete(:data)
|
23
|
+
@client = options.delete(:client) || Client.new(options)
|
24
|
+
end
|
26
25
|
|
27
|
-
|
26
|
+
# @!group Read-Only Attributes
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
# @return [String]
|
29
|
+
def id
|
30
|
+
@id
|
31
|
+
end
|
32
|
+
alias :group_id :id
|
34
33
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
34
|
+
# The AWS account ID of the owner of the security group.
|
35
|
+
# @return [String]
|
36
|
+
def owner_id
|
37
|
+
data.owner_id
|
38
|
+
end
|
40
39
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
40
|
+
# The name of the security group.
|
41
|
+
# @return [String]
|
42
|
+
def group_name
|
43
|
+
data.group_name
|
44
|
+
end
|
46
45
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
46
|
+
# A description of the security group.
|
47
|
+
# @return [String]
|
48
|
+
def description
|
49
|
+
data.description
|
50
|
+
end
|
52
51
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
52
|
+
# One or more inbound rules associated with the security group.
|
53
|
+
# @return [Array<Types::IpPermission>]
|
54
|
+
def ip_permissions
|
55
|
+
data.ip_permissions
|
56
|
+
end
|
58
57
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
58
|
+
# \[EC2-VPC\] One or more outbound rules associated with the security
|
59
|
+
# group.
|
60
|
+
# @return [Array<Types::IpPermission>]
|
61
|
+
def ip_permissions_egress
|
62
|
+
data.ip_permissions_egress
|
63
|
+
end
|
65
64
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
65
|
+
# \[EC2-VPC\] The ID of the VPC for the security group.
|
66
|
+
# @return [String]
|
67
|
+
def vpc_id
|
68
|
+
data.vpc_id
|
69
|
+
end
|
71
70
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
71
|
+
# Any tags assigned to the security group.
|
72
|
+
# @return [Array<Types::Tag>]
|
73
|
+
def tags
|
74
|
+
data.tags
|
75
|
+
end
|
77
76
|
|
78
|
-
|
77
|
+
# @!endgroup
|
79
78
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
79
|
+
# @return [Client]
|
80
|
+
def client
|
81
|
+
@client
|
82
|
+
end
|
84
83
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
84
|
+
# Loads, or reloads {#data} for the current {SecurityGroup}.
|
85
|
+
# Returns `self` making it possible to chain methods.
|
86
|
+
#
|
87
|
+
# security_group.reload.data
|
88
|
+
#
|
89
|
+
# @return [self]
|
90
|
+
def load
|
91
|
+
resp = @client.describe_security_groups(group_ids: [@id])
|
92
|
+
@data = resp.securitygroups[0]
|
93
|
+
self
|
94
|
+
end
|
95
|
+
alias :reload :load
|
97
96
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
97
|
+
# @return [Types::SecurityGroup]
|
98
|
+
# Returns the data for this {SecurityGroup}. Calls
|
99
|
+
# {Client#describe_security_groups} if {#data_loaded?} is `false`.
|
100
|
+
def data
|
101
|
+
load unless @data
|
102
|
+
@data
|
103
|
+
end
|
105
104
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
105
|
+
# @return [Boolean]
|
106
|
+
# Returns `true` if this resource is loaded. Accessing attributes or
|
107
|
+
# {#data} on an unloaded resource will trigger a call to {#load}.
|
108
|
+
def data_loaded?
|
109
|
+
!!@data
|
110
|
+
end
|
112
111
|
|
113
|
-
|
112
|
+
# @!group Actions
|
114
113
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
114
|
+
# @example Request syntax with placeholder values
|
115
|
+
#
|
116
|
+
# security_group.authorize_egress({
|
117
|
+
# dry_run: false,
|
118
|
+
# source_security_group_name: "String",
|
119
|
+
# source_security_group_owner_id: "String",
|
120
|
+
# ip_protocol: "String",
|
121
|
+
# from_port: 1,
|
122
|
+
# to_port: 1,
|
123
|
+
# cidr_ip: "String",
|
124
|
+
# ip_permissions: [
|
125
|
+
# {
|
126
|
+
# ip_protocol: "String",
|
127
|
+
# from_port: 1,
|
128
|
+
# to_port: 1,
|
129
|
+
# user_id_group_pairs: [
|
130
|
+
# {
|
131
|
+
# user_id: "String",
|
132
|
+
# group_name: "String",
|
133
|
+
# group_id: "String",
|
134
|
+
# vpc_id: "String",
|
135
|
+
# vpc_peering_connection_id: "String",
|
136
|
+
# peering_status: "String",
|
137
|
+
# },
|
138
|
+
# ],
|
139
|
+
# ip_ranges: [
|
140
|
+
# {
|
141
|
+
# cidr_ip: "String",
|
142
|
+
# },
|
143
|
+
# ],
|
144
|
+
# ipv_6_ranges: [
|
145
|
+
# {
|
146
|
+
# cidr_ipv_6: "String",
|
147
|
+
# },
|
148
|
+
# ],
|
149
|
+
# prefix_list_ids: [
|
150
|
+
# {
|
151
|
+
# prefix_list_id: "String",
|
152
|
+
# },
|
153
|
+
# ],
|
154
|
+
# },
|
155
|
+
# ],
|
156
|
+
# })
|
157
|
+
# @param [Hash] options ({})
|
158
|
+
# @option options [Boolean] :dry_run
|
159
|
+
# Checks whether you have the required permissions for the action,
|
160
|
+
# without actually making the request, and provides an error response.
|
161
|
+
# If you have the required permissions, the error response is
|
162
|
+
# `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
|
163
|
+
# @option options [String] :source_security_group_name
|
164
|
+
# The name of a destination security group. To authorize outbound access
|
165
|
+
# to a destination security group, we recommend that you use a set of IP
|
166
|
+
# permissions instead.
|
167
|
+
# @option options [String] :source_security_group_owner_id
|
168
|
+
# The AWS account number for a destination security group. To authorize
|
169
|
+
# outbound access to a destination security group, we recommend that you
|
170
|
+
# use a set of IP permissions instead.
|
171
|
+
# @option options [String] :ip_protocol
|
172
|
+
# The IP protocol name or number. We recommend that you specify the
|
173
|
+
# protocol in a set of IP permissions instead.
|
174
|
+
# @option options [Integer] :from_port
|
175
|
+
# The start of port range for the TCP and UDP protocols, or an ICMP type
|
176
|
+
# number. We recommend that you specify the port range in a set of IP
|
177
|
+
# permissions instead.
|
178
|
+
# @option options [Integer] :to_port
|
179
|
+
# The end of port range for the TCP and UDP protocols, or an ICMP type
|
180
|
+
# number. We recommend that you specify the port range in a set of IP
|
181
|
+
# permissions instead.
|
182
|
+
# @option options [String] :cidr_ip
|
183
|
+
# The CIDR IPv4 address range. We recommend that you specify the CIDR
|
184
|
+
# range in a set of IP permissions instead.
|
185
|
+
# @option options [Array<Types::IpPermission>] :ip_permissions
|
186
|
+
# A set of IP permissions. You can't specify a destination security
|
187
|
+
# group and a CIDR IP address range.
|
188
|
+
# @return [EmptyStructure]
|
189
|
+
def authorize_egress(options = {})
|
190
|
+
options = options.merge(group_id: @id)
|
191
|
+
resp = @client.authorize_security_group_egress(options)
|
192
|
+
resp.data
|
193
|
+
end
|
195
194
|
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
195
|
+
# @example Request syntax with placeholder values
|
196
|
+
#
|
197
|
+
# security_group.authorize_ingress({
|
198
|
+
# dry_run: false,
|
199
|
+
# group_name: "String",
|
200
|
+
# source_security_group_name: "String",
|
201
|
+
# source_security_group_owner_id: "String",
|
202
|
+
# ip_protocol: "String",
|
203
|
+
# from_port: 1,
|
204
|
+
# to_port: 1,
|
205
|
+
# cidr_ip: "String",
|
206
|
+
# ip_permissions: [
|
207
|
+
# {
|
208
|
+
# ip_protocol: "String",
|
209
|
+
# from_port: 1,
|
210
|
+
# to_port: 1,
|
211
|
+
# user_id_group_pairs: [
|
212
|
+
# {
|
213
|
+
# user_id: "String",
|
214
|
+
# group_name: "String",
|
215
|
+
# group_id: "String",
|
216
|
+
# vpc_id: "String",
|
217
|
+
# vpc_peering_connection_id: "String",
|
218
|
+
# peering_status: "String",
|
219
|
+
# },
|
220
|
+
# ],
|
221
|
+
# ip_ranges: [
|
222
|
+
# {
|
223
|
+
# cidr_ip: "String",
|
224
|
+
# },
|
225
|
+
# ],
|
226
|
+
# ipv_6_ranges: [
|
227
|
+
# {
|
228
|
+
# cidr_ipv_6: "String",
|
229
|
+
# },
|
230
|
+
# ],
|
231
|
+
# prefix_list_ids: [
|
232
|
+
# {
|
233
|
+
# prefix_list_id: "String",
|
234
|
+
# },
|
235
|
+
# ],
|
236
|
+
# },
|
237
|
+
# ],
|
238
|
+
# })
|
239
|
+
# @param [Hash] options ({})
|
240
|
+
# @option options [Boolean] :dry_run
|
241
|
+
# Checks whether you have the required permissions for the action,
|
242
|
+
# without actually making the request, and provides an error response.
|
243
|
+
# If you have the required permissions, the error response is
|
244
|
+
# `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
|
245
|
+
# @option options [String] :group_name
|
246
|
+
# \[EC2-Classic, default VPC\] The name of the security group.
|
247
|
+
# @option options [String] :source_security_group_name
|
248
|
+
# \[EC2-Classic, default VPC\] The name of the source security group.
|
249
|
+
# You can't specify this parameter in combination with the following
|
250
|
+
# parameters: the CIDR IP address range, the start of the port range,
|
251
|
+
# the IP protocol, and the end of the port range. Creates rules that
|
252
|
+
# grant full ICMP, UDP, and TCP access. To create a rule with a specific
|
253
|
+
# IP protocol and port range, use a set of IP permissions instead. For
|
254
|
+
# EC2-VPC, the source security group must be in the same VPC.
|
255
|
+
# @option options [String] :source_security_group_owner_id
|
256
|
+
# \[EC2-Classic\] The AWS account number for the source security group,
|
257
|
+
# if the source security group is in a different account. You can't
|
258
|
+
# specify this parameter in combination with the following parameters:
|
259
|
+
# the CIDR IP address range, the IP protocol, the start of the port
|
260
|
+
# range, and the end of the port range. Creates rules that grant full
|
261
|
+
# ICMP, UDP, and TCP access. To create a rule with a specific IP
|
262
|
+
# protocol and port range, use a set of IP permissions instead.
|
263
|
+
# @option options [String] :ip_protocol
|
264
|
+
# The IP protocol name (`tcp`, `udp`, `icmp`) or number (see [Protocol
|
265
|
+
# Numbers][1]). (VPC only) Use `-1` to specify all protocols. If you
|
266
|
+
# specify `-1`, or a protocol number other than `tcp`, `udp`, `icmp`, or
|
267
|
+
# `58` (ICMPv6), traffic on all ports is allowed, regardless of any
|
268
|
+
# ports you specify. For `tcp`, `udp`, and `icmp`, you must specify a
|
269
|
+
# port range. For protocol `58` (ICMPv6), you can optionally specify a
|
270
|
+
# port range; if you don't, traffic for all types and codes is allowed.
|
271
|
+
#
|
272
|
+
#
|
273
|
+
#
|
274
|
+
# [1]: http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml
|
275
|
+
# @option options [Integer] :from_port
|
276
|
+
# The start of port range for the TCP and UDP protocols, or an
|
277
|
+
# ICMP/ICMPv6 type number. For the ICMP/ICMPv6 type number, use `-1` to
|
278
|
+
# specify all types.
|
279
|
+
# @option options [Integer] :to_port
|
280
|
+
# The end of port range for the TCP and UDP protocols, or an ICMP/ICMPv6
|
281
|
+
# code number. For the ICMP/ICMPv6 code number, use `-1` to specify all
|
282
|
+
# codes.
|
283
|
+
# @option options [String] :cidr_ip
|
284
|
+
# The CIDR IPv4 address range. You can't specify this parameter when
|
285
|
+
# specifying a source security group.
|
286
|
+
# @option options [Array<Types::IpPermission>] :ip_permissions
|
287
|
+
# A set of IP permissions. Can be used to specify multiple rules in a
|
288
|
+
# single command.
|
289
|
+
# @return [EmptyStructure]
|
290
|
+
def authorize_ingress(options = {})
|
291
|
+
options = options.merge(group_id: @id)
|
292
|
+
resp = @client.authorize_security_group_ingress(options)
|
293
|
+
resp.data
|
294
|
+
end
|
296
295
|
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
end
|
331
|
-
Tag::Collection.new([batch], size: batch.size)
|
296
|
+
# @example Request syntax with placeholder values
|
297
|
+
#
|
298
|
+
# tag = security_group.create_tags({
|
299
|
+
# dry_run: false,
|
300
|
+
# tags: [ # required
|
301
|
+
# {
|
302
|
+
# key: "String",
|
303
|
+
# value: "String",
|
304
|
+
# },
|
305
|
+
# ],
|
306
|
+
# })
|
307
|
+
# @param [Hash] options ({})
|
308
|
+
# @option options [Boolean] :dry_run
|
309
|
+
# Checks whether you have the required permissions for the action,
|
310
|
+
# without actually making the request, and provides an error response.
|
311
|
+
# If you have the required permissions, the error response is
|
312
|
+
# `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
|
313
|
+
# @option options [required, Array<Types::Tag>] :tags
|
314
|
+
# One or more tags. The `value` parameter is required, but if you don't
|
315
|
+
# want the tag to have a value, specify the parameter with no value, and
|
316
|
+
# we set the value to an empty string.
|
317
|
+
# @return [Tag::Collection]
|
318
|
+
def create_tags(options = {})
|
319
|
+
batch = []
|
320
|
+
options = Aws::Util.deep_merge(options, resources: [@id])
|
321
|
+
resp = @client.create_tags(options)
|
322
|
+
options[:tags].each do |t|
|
323
|
+
batch << Tag.new(
|
324
|
+
resource_id: @id,
|
325
|
+
key: t[:key],
|
326
|
+
value: t[:value],
|
327
|
+
client: @client
|
328
|
+
)
|
332
329
|
end
|
330
|
+
Tag::Collection.new([batch], size: batch.size)
|
331
|
+
end
|
333
332
|
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
333
|
+
# @example Request syntax with placeholder values
|
334
|
+
#
|
335
|
+
# security_group.delete({
|
336
|
+
# dry_run: false,
|
337
|
+
# group_name: "String",
|
338
|
+
# })
|
339
|
+
# @param [Hash] options ({})
|
340
|
+
# @option options [Boolean] :dry_run
|
341
|
+
# Checks whether you have the required permissions for the action,
|
342
|
+
# without actually making the request, and provides an error response.
|
343
|
+
# If you have the required permissions, the error response is
|
344
|
+
# `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
|
345
|
+
# @option options [String] :group_name
|
346
|
+
# \[EC2-Classic, default VPC\] The name of the security group. You can
|
347
|
+
# specify either the security group name or the security group ID.
|
348
|
+
# @return [EmptyStructure]
|
349
|
+
def delete(options = {})
|
350
|
+
options = options.merge(group_id: @id)
|
351
|
+
resp = @client.delete_security_group(options)
|
352
|
+
resp.data
|
353
|
+
end
|
355
354
|
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
355
|
+
# @example Request syntax with placeholder values
|
356
|
+
#
|
357
|
+
# security_group.revoke_egress({
|
358
|
+
# dry_run: false,
|
359
|
+
# source_security_group_name: "String",
|
360
|
+
# source_security_group_owner_id: "String",
|
361
|
+
# ip_protocol: "String",
|
362
|
+
# from_port: 1,
|
363
|
+
# to_port: 1,
|
364
|
+
# cidr_ip: "String",
|
365
|
+
# ip_permissions: [
|
366
|
+
# {
|
367
|
+
# ip_protocol: "String",
|
368
|
+
# from_port: 1,
|
369
|
+
# to_port: 1,
|
370
|
+
# user_id_group_pairs: [
|
371
|
+
# {
|
372
|
+
# user_id: "String",
|
373
|
+
# group_name: "String",
|
374
|
+
# group_id: "String",
|
375
|
+
# vpc_id: "String",
|
376
|
+
# vpc_peering_connection_id: "String",
|
377
|
+
# peering_status: "String",
|
378
|
+
# },
|
379
|
+
# ],
|
380
|
+
# ip_ranges: [
|
381
|
+
# {
|
382
|
+
# cidr_ip: "String",
|
383
|
+
# },
|
384
|
+
# ],
|
385
|
+
# ipv_6_ranges: [
|
386
|
+
# {
|
387
|
+
# cidr_ipv_6: "String",
|
388
|
+
# },
|
389
|
+
# ],
|
390
|
+
# prefix_list_ids: [
|
391
|
+
# {
|
392
|
+
# prefix_list_id: "String",
|
393
|
+
# },
|
394
|
+
# ],
|
395
|
+
# },
|
396
|
+
# ],
|
397
|
+
# })
|
398
|
+
# @param [Hash] options ({})
|
399
|
+
# @option options [Boolean] :dry_run
|
400
|
+
# Checks whether you have the required permissions for the action,
|
401
|
+
# without actually making the request, and provides an error response.
|
402
|
+
# If you have the required permissions, the error response is
|
403
|
+
# `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
|
404
|
+
# @option options [String] :source_security_group_name
|
405
|
+
# The name of a destination security group. To revoke outbound access to
|
406
|
+
# a destination security group, we recommend that you use a set of IP
|
407
|
+
# permissions instead.
|
408
|
+
# @option options [String] :source_security_group_owner_id
|
409
|
+
# The AWS account number for a destination security group. To revoke
|
410
|
+
# outbound access to a destination security group, we recommend that you
|
411
|
+
# use a set of IP permissions instead.
|
412
|
+
# @option options [String] :ip_protocol
|
413
|
+
# The IP protocol name or number. We recommend that you specify the
|
414
|
+
# protocol in a set of IP permissions instead.
|
415
|
+
# @option options [Integer] :from_port
|
416
|
+
# The start of port range for the TCP and UDP protocols, or an ICMP type
|
417
|
+
# number. We recommend that you specify the port range in a set of IP
|
418
|
+
# permissions instead.
|
419
|
+
# @option options [Integer] :to_port
|
420
|
+
# The end of port range for the TCP and UDP protocols, or an ICMP type
|
421
|
+
# number. We recommend that you specify the port range in a set of IP
|
422
|
+
# permissions instead.
|
423
|
+
# @option options [String] :cidr_ip
|
424
|
+
# The CIDR IP address range. We recommend that you specify the CIDR
|
425
|
+
# range in a set of IP permissions instead.
|
426
|
+
# @option options [Array<Types::IpPermission>] :ip_permissions
|
427
|
+
# A set of IP permissions. You can't specify a destination security
|
428
|
+
# group and a CIDR IP address range.
|
429
|
+
# @return [EmptyStructure]
|
430
|
+
def revoke_egress(options = {})
|
431
|
+
options = options.merge(group_id: @id)
|
432
|
+
resp = @client.revoke_security_group_egress(options)
|
433
|
+
resp.data
|
434
|
+
end
|
436
435
|
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
436
|
+
# @example Request syntax with placeholder values
|
437
|
+
#
|
438
|
+
# security_group.revoke_ingress({
|
439
|
+
# dry_run: false,
|
440
|
+
# group_name: "String",
|
441
|
+
# source_security_group_name: "String",
|
442
|
+
# source_security_group_owner_id: "String",
|
443
|
+
# ip_protocol: "String",
|
444
|
+
# from_port: 1,
|
445
|
+
# to_port: 1,
|
446
|
+
# cidr_ip: "String",
|
447
|
+
# ip_permissions: [
|
448
|
+
# {
|
449
|
+
# ip_protocol: "String",
|
450
|
+
# from_port: 1,
|
451
|
+
# to_port: 1,
|
452
|
+
# user_id_group_pairs: [
|
453
|
+
# {
|
454
|
+
# user_id: "String",
|
455
|
+
# group_name: "String",
|
456
|
+
# group_id: "String",
|
457
|
+
# vpc_id: "String",
|
458
|
+
# vpc_peering_connection_id: "String",
|
459
|
+
# peering_status: "String",
|
460
|
+
# },
|
461
|
+
# ],
|
462
|
+
# ip_ranges: [
|
463
|
+
# {
|
464
|
+
# cidr_ip: "String",
|
465
|
+
# },
|
466
|
+
# ],
|
467
|
+
# ipv_6_ranges: [
|
468
|
+
# {
|
469
|
+
# cidr_ipv_6: "String",
|
470
|
+
# },
|
471
|
+
# ],
|
472
|
+
# prefix_list_ids: [
|
473
|
+
# {
|
474
|
+
# prefix_list_id: "String",
|
475
|
+
# },
|
476
|
+
# ],
|
477
|
+
# },
|
478
|
+
# ],
|
479
|
+
# })
|
480
|
+
# @param [Hash] options ({})
|
481
|
+
# @option options [Boolean] :dry_run
|
482
|
+
# Checks whether you have the required permissions for the action,
|
483
|
+
# without actually making the request, and provides an error response.
|
484
|
+
# If you have the required permissions, the error response is
|
485
|
+
# `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
|
486
|
+
# @option options [String] :group_name
|
487
|
+
# \[EC2-Classic, default VPC\] The name of the security group.
|
488
|
+
# @option options [String] :source_security_group_name
|
489
|
+
# \[EC2-Classic, default VPC\] The name of the source security group.
|
490
|
+
# You can't specify this parameter in combination with the following
|
491
|
+
# parameters: the CIDR IP address range, the start of the port range,
|
492
|
+
# the IP protocol, and the end of the port range. For EC2-VPC, the
|
493
|
+
# source security group must be in the same VPC. To revoke a specific
|
494
|
+
# rule for an IP protocol and port range, use a set of IP permissions
|
495
|
+
# instead.
|
496
|
+
# @option options [String] :source_security_group_owner_id
|
497
|
+
# \[EC2-Classic\] The AWS account ID of the source security group, if
|
498
|
+
# the source security group is in a different account. You can't
|
499
|
+
# specify this parameter in combination with the following parameters:
|
500
|
+
# the CIDR IP address range, the IP protocol, the start of the port
|
501
|
+
# range, and the end of the port range. To revoke a specific rule for an
|
502
|
+
# IP protocol and port range, use a set of IP permissions instead.
|
503
|
+
# @option options [String] :ip_protocol
|
504
|
+
# The IP protocol name (`tcp`, `udp`, `icmp`) or number (see [Protocol
|
505
|
+
# Numbers][1]). Use `-1` to specify all.
|
506
|
+
#
|
507
|
+
#
|
508
|
+
#
|
509
|
+
# [1]: http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml
|
510
|
+
# @option options [Integer] :from_port
|
511
|
+
# The start of port range for the TCP and UDP protocols, or an ICMP type
|
512
|
+
# number. For the ICMP type number, use `-1` to specify all ICMP types.
|
513
|
+
# @option options [Integer] :to_port
|
514
|
+
# The end of port range for the TCP and UDP protocols, or an ICMP code
|
515
|
+
# number. For the ICMP code number, use `-1` to specify all ICMP codes
|
516
|
+
# for the ICMP type.
|
517
|
+
# @option options [String] :cidr_ip
|
518
|
+
# The CIDR IP address range. You can't specify this parameter when
|
519
|
+
# specifying a source security group.
|
520
|
+
# @option options [Array<Types::IpPermission>] :ip_permissions
|
521
|
+
# A set of IP permissions. You can't specify a source security group
|
522
|
+
# and a CIDR IP address range.
|
523
|
+
# @return [EmptyStructure]
|
524
|
+
def revoke_ingress(options = {})
|
525
|
+
options = options.merge(group_id: @id)
|
526
|
+
resp = @client.revoke_security_group_ingress(options)
|
527
|
+
resp.data
|
528
|
+
end
|
530
529
|
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
530
|
+
# @deprecated
|
531
|
+
# @api private
|
532
|
+
def identifiers
|
533
|
+
{ id: @id }
|
534
|
+
end
|
535
|
+
deprecated(:identifiers)
|
537
536
|
|
538
|
-
|
537
|
+
private
|
539
538
|
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
end
|
539
|
+
def extract_id(args, options)
|
540
|
+
value = args[0] || options.delete(:id)
|
541
|
+
case value
|
542
|
+
when String then value
|
543
|
+
when nil then raise ArgumentError, "missing required option :id"
|
544
|
+
else
|
545
|
+
msg = "expected :id to be a String, got #{value.class}"
|
546
|
+
raise ArgumentError, msg
|
549
547
|
end
|
550
|
-
|
551
|
-
class Collection < Aws::Resources::Collection; end
|
552
548
|
end
|
549
|
+
|
550
|
+
class Collection < Aws::Resources::Collection; end
|
553
551
|
end
|
554
552
|
end
|