awspec 0.28.0 → 0.28.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f73c5f63d506b9942d39232be4d5d3ed4459ba8
4
- data.tar.gz: bc58760a303309b3699ac78c8b5f91bd7a214562
3
+ metadata.gz: 20ed13efcb8640c392acddfac6a0a5549a864327
4
+ data.tar.gz: 73089cd4e5a596637343845a2ca7b0e9c29ac278
5
5
  SHA512:
6
- metadata.gz: 33982233fcd1c9b6014f958911146d9d53d2ecfc6561d61164cf7c87e1cb45e0d3838c447725170ddd579bcab99a69720cce4c457323828efe30be042f65c72d
7
- data.tar.gz: 1859a5181cbba64c2dcce3840af265fce99a362c6c26eba903dfee19b315ab1ae5ce56d9e864921a82fdfa4425234d741bb754ae7ca6de383e8e6da57e8bec3c
6
+ metadata.gz: cf67c07ceb07b99fa0f7b084603928df154f1a10fde662db419002651b7f4ba537ee306334f6d9e288d27f8c21455a8f557979e2451b325fddd0a6d57d5f3a0e
7
+ data.tar.gz: 3fcc0f0602fa94a8e1a8765e4b5c410913af8468817a5f5b7a6b741c496502b12e506629536ebe9dd5b518e4c7d41fb10de08613e2d8c1e49351555d4beca83a
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ end
8
8
 
9
9
  require 'awspec'
10
10
 
11
- types = Awspec::Helper::Type::TYPES.reject { |type| type == 'base' }.map do |type|
11
+ types = Awspec::Helper::Type::TYPES.map do |type|
12
12
  'spec:' + type
13
13
  end
14
14
 
@@ -1,1030 +1,1067 @@
1
1
  # Resource Types
2
2
 
3
- [ec2](#ec2)
4
- | [rds](#rds)
5
- | [rds_db_parameter_group](#rds_db_parameter_group)
6
- | [security_group](#security_group)
7
- | [vpc](#vpc)
8
- | [s3_bucket](#s3_bucket)
9
- | [route53_hosted_zone](#route53_hosted_zone)
10
- | [autoscaling_group](#autoscaling_group)
11
- | [subnet](#subnet)
12
- | [route_table](#route_table)
3
+ [autoscaling_group](#autoscaling_group)
4
+ | [cloudwatch_alarm](#cloudwatch_alarm)
5
+ | [directconnect_virtual_interface](#directconnect_virtual_interface)
13
6
  | [ebs](#ebs)
7
+ | [ec2](#ec2)
8
+ | [elasticache](#elasticache)
9
+ | [elasticache_cache_parameter_group](#elasticache_cache_parameter_group)
14
10
  | [elb](#elb)
15
- | [lambda](#lambda)
16
- | [iam_user](#iam_user)
17
11
  | [iam_group](#iam_group)
18
- | [iam_role](#iam_role)
19
12
  | [iam_policy](#iam_policy)
20
- | [elasticache](#elasticache)
21
- | [elasticache_cache_parameter_group](#elasticache_cache_parameter_group)
22
- | [cloudwatch_alarm](#cloudwatch_alarm)
23
- | [ses_identity](#ses_identity)
24
- | [network_acl](#network_acl)
25
- | [directconnect_virtual_interface](#directconnect_virtual_interface)
13
+ | [iam_role](#iam_role)
14
+ | [iam_user](#iam_user)
15
+ | [lambda](#lambda)
26
16
  | [nat_gateway](#nat_gateway)
17
+ | [network_acl](#network_acl)
18
+ | [rds](#rds)
19
+ | [rds_db_parameter_group](#rds_db_parameter_group)
20
+ | [route53_hosted_zone](#route53_hosted_zone)
21
+ | [route_table](#route_table)
22
+ | [s3_bucket](#s3_bucket)
23
+ | [security_group](#security_group)
24
+ | [ses_identity](#ses_identity)
25
+ | [subnet](#subnet)
26
+ | [vpc](#vpc)
27
27
 
28
- ## <a name="ec2">ec2</a>
28
+ ## <a name="autoscaling_group">autoscaling_group</a>
29
29
 
30
- EC2 resource type.
30
+ AutoscalingGroup resource type.
31
31
 
32
32
  ### exist
33
33
 
34
34
  ```ruby
35
- describe ec2('my-ec2') do
35
+ describe autoscaling_group('my-auto-scaling-group') do
36
36
  it { should exist }
37
37
  end
38
38
  ```
39
39
 
40
40
 
41
- ### be_disabled_api_termination
41
+ ### have_ec2
42
42
 
43
43
  ```ruby
44
- describe ec2('my-ec2') do
45
- it { should be_disabled_api_termination }
44
+ describe autoscaling_group('my-auto-scaling-group') do
45
+ it { should have_ec2('my-ec2') }
46
46
  end
47
47
  ```
48
48
 
49
49
 
50
- ### be_pending, be_running, be_shutting_down, be_terminated, be_stopping, be_stopped
50
+ ### have_elb
51
51
 
52
52
  ```ruby
53
- describe ec2('my-ec2') do
54
- it { should be_running }
53
+ describe autoscaling_group('my-auto-scaling-group') do
54
+ it { should have_elb('my-elb') }
55
55
  end
56
56
  ```
57
57
 
58
+ ### its(:auto_scaling_group_name), its(:auto_scaling_group_arn), its(:launch_configuration_name), its(:min_size), its(:max_size), its(:desired_capacity), its(:default_cooldown), its(:health_check_type), its(:health_check_grace_period), its(:created_time), its(:placement_group), its(:vpc_zone_identifier), its(:status), its(:new_instances_protected_from_scale_in)
59
+ ## <a name="cloudwatch_alarm">cloudwatch_alarm</a>
58
60
 
59
- ### have_ebs
61
+ CloudwatchAlarm resource type.
62
+
63
+ ### exist
60
64
 
61
65
  ```ruby
62
- describe ec2('my-ec2') do
63
- it { should have_ebs('vol-123a123b') }
64
- it { should have_ebs('my-volume') }
66
+ describe cloudwatch_alarm('my-cloudwatch-alarm') do
67
+ it { should exist }
65
68
  end
66
69
  ```
67
70
 
68
71
 
69
- ### have_eip
72
+ ### have_alarm_action
70
73
 
71
74
  ```ruby
72
- describe ec2('my-ec2') do
73
- it { should have_eip('123.0.456.789') }
75
+ describe cloudwatch_alarm('my-cloudwatch-alarm') do
76
+ it { should have_alarm_action('arn:aws:sns:ap-northeast-1:1234567890:sns_alert') }
74
77
  end
75
78
  ```
76
79
 
77
80
 
78
- ### have_security_group
81
+ ### have_insufficient_data_action
79
82
 
80
83
  ```ruby
81
- describe ec2('my-ec2') do
82
- it { should have_security_group('my-security-group-name') }
83
- it { should have_security_group('sg-1a2b3cd4') }
84
+ describe cloudwatch_alarm('my-cloudwatch-alarm') do
85
+ it { should have_insufficient_data_action('arn:aws:sns:ap-northeast-1:1234567890:sns_alert') }
84
86
  end
85
87
  ```
86
88
 
87
89
 
88
- ### belong_to_subnet
90
+ ### have_ok_action
89
91
 
90
92
  ```ruby
91
- describe ec2('my-ec2') do
92
- it { should belong_to_subnet('subnet-1234a567') }
93
- it { should belong_to_subnet('my-subnet') }
93
+ describe cloudwatch_alarm('my-cloudwatch-alarm') do
94
+ it { should have_ok_action('arn:aws:sns:ap-northeast-1:1234567890:sns_alert') }
94
95
  end
95
96
  ```
96
97
 
97
98
 
98
- ### belong_to_vpc
99
+ ### belong_to_metric
99
100
 
100
101
  ```ruby
101
- describe ec2('my-ec2') do
102
- it { should belong_to_vpc('vpc-ab123cde') }
103
- it { should belong_to_vpc('my-vpc') }
102
+ describe cloudwatch_alarm('my-cloudwatch-alarm') do
103
+ it { should belong_to_metric('NumberOfProcesses').namespace('my-cloudwatch-namespace') }
104
104
  end
105
105
  ```
106
106
 
107
+ ### its(:alarm_name), its(:alarm_arn), its(:alarm_description), its(:alarm_configuration_updated_timestamp), its(:actions_enabled), its(:state_value), its(:state_reason), its(:state_reason_data), its(:state_updated_timestamp), its(:metric_name), its(:namespace), its(:statistic), its(:period), its(:unit), its(:evaluation_periods), its(:threshold), its(:comparison_operator)
108
+ ## <a name="directconnect_virtual_interface">directconnect_virtual_interface</a>
107
109
 
108
- ### its(:instance_id), its(:image_id), its(:private_dns_name), its(:public_dns_name), its(:state_transition_reason), its(:key_name), its(:ami_launch_index), its(:instance_type), its(:launch_time), its(:placement), its(:kernel_id), its(:ramdisk_id), its(:platform), its(:monitoring), its(:subnet_id), its(:vpc_id), its(:private_ip_address), its(:public_ip_address), its(:state_reason), its(:architecture), its(:root_device_type), its(:root_device_name), its(:virtualization_type), its(:instance_lifecycle), its(:spot_instance_request_id), its(:client_token), its(:source_dest_check), its(:hypervisor), its(:iam_instance_profile), its(:ebs_optimized), its(:sriov_net_support)
109
- ### :unlock: Advanced use
110
-
111
- `ec2` can use `Aws::EC2::Instance` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Instance.html).
110
+ DirectconnectVirtualInterface resource type.
112
111
 
113
112
  ```ruby
114
- describe ec2('my-ec2') do
115
- its('vpc.id') { should eq 'vpc-ab123cde' }
113
+ describe directconnect_virtual_interface('my-directconnect-virtual-interface') do
114
+ it { should exist }
115
+ it { should be_available }
116
+ its(:connection_id) { should eq 'dxcon-abcd5fgh' }
117
+ its(:virtual_interface_id) { should eq 'dxvif-aabbccdd' }
118
+ its(:amazon_address) { should eq '170.252.252.1/30' }
119
+ its(:customer_address) { should eq '123.456.789.2/30' }
120
+ its(:virtual_gateway_id) { should eq 'vgw-d234e5f6' }
116
121
  end
117
122
  ```
118
123
 
119
- or
124
+
125
+ ### exist
120
126
 
121
127
  ```ruby
122
- describe ec2('my-ec2') do
123
- its('resource.vpc.id') { should eq 'vpc-ab123cde' }
128
+ describe directconnect_virtual_interface('my-directconnect-virtual-interface') do
129
+ it { should exist }
124
130
  end
125
131
  ```
126
132
 
127
- ## <a name="rds">rds</a>
128
-
129
- RDS resource type.
130
133
 
131
- ### exist
134
+ ### be_confirming, be_verifying, be_pending, be_available, be_deleting, be_deleted, be_rejected
132
135
 
133
136
  ```ruby
134
- describe rds('my-rds') do
137
+ describe directconnect_virtual_interface('my-directconnect-virtual-interface') do
135
138
  it { should exist }
139
+ it { should be_available }
136
140
  end
137
141
  ```
138
142
 
143
+ ### its(:owner_account), its(:virtual_interface_id), its(:location), its(:connection_id), its(:virtual_interface_type), its(:virtual_interface_name), its(:vlan), its(:asn), its(:auth_key), its(:amazon_address), its(:customer_address), its(:virtual_interface_state), its(:customer_router_config), its(:virtual_gateway_id)
144
+ ## <a name="ebs">ebs</a>
145
+
146
+ EBS resource type.
139
147
 
140
- ### be_available, be_backing_up, be_creating, be_deleting, be_failed, be_inaccessible_encryption_credentials, be_incompatible_credentials, be_incompatible_network, be_incompatible_option_group, be_incompatible_parameters, be_incompatible_restore, be_maintenance, be_modifying, be_rebooting, be_renaming, be_resetting_master_credentials, be_restore_error, be_storage_full, be_upgrading
148
+ ### exist
141
149
 
142
150
  ```ruby
143
- describe rds('my-rds') do
144
- it { should be_available }
151
+ describe ebs('my-volume') do
152
+ it { should exist }
145
153
  end
146
154
  ```
147
155
 
148
156
 
149
- ### have_db_parameter_group
157
+ ### be_attached_to
150
158
 
151
159
  ```ruby
152
- describe rds('my-rds') do
153
- it { should belong_to_db_subnet_group('my-db-subnet-group') }
160
+ describe ebs('my-volume') do
161
+ it { should be_attached_to('my-ec2') }
154
162
  end
155
163
  ```
156
164
 
157
165
 
158
- ### have_option_group
166
+ ### be_creating, be_available, be_in_use, be_deleting, be_deleted, be_error
159
167
 
160
168
  ```ruby
161
- describe rds('my-rds') do
162
- it { should have_option_group('default:mysql-5-6') }
169
+ describe ebs('my-volume') do
170
+ it { should be_in_use }
163
171
  end
164
172
  ```
165
173
 
166
174
 
167
- ### have_security_group
175
+ ### its(:volume_id), its(:size), its(:snapshot_id), its(:availability_zone), its(:state), its(:create_time), its(:volume_type), its(:iops), its(:encrypted), its(:kms_key_id)
176
+ ### :unlock: Advanced use
177
+
178
+ `ebs` can use `Aws::EC2::Volume` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Volume.html).
168
179
 
169
180
  ```ruby
170
- describe rds('my-rds') do
171
- it { should have_security_group('sg-5a6b7cd8') }
172
- it { should have_security_group('my-db-sg') }
181
+ describe ebs('my-volume') do
182
+ its('attachments.first.instance_id') { should eq 'i-ec12345a' }
173
183
  end
174
184
  ```
175
185
 
176
-
177
- ### belong_to_db_subnet_group
186
+ or
178
187
 
179
188
  ```ruby
180
- describe rds('my-rds') do
181
- it { should belong_to_db_subnet_group('my-db-subnet-group') }
189
+ describe ebs('my-volume') do
190
+ its('resource.attachments.first.instance_id') { should eq 'i-ec12345a' }
182
191
  end
183
192
  ```
184
193
 
194
+ ## <a name="ec2">ec2</a>
185
195
 
186
- ### belong_to_subnet
196
+ EC2 resource type.
197
+
198
+ ### exist
187
199
 
188
200
  ```ruby
189
- describe rds('my-rds') do
190
- it { should belong_to_subnet('subnet-8901b123') }
191
- it { should belong_to_subnet('db-subnet-a') }
201
+ describe ec2('my-ec2') do
202
+ it { should exist }
192
203
  end
193
204
  ```
194
205
 
195
206
 
196
- ### belong_to_vpc
207
+ ### be_disabled_api_termination
197
208
 
198
209
  ```ruby
199
- describe rds('my-rds') do
200
- it { should belong_to_vpc('vpc-ab123cde') }
201
- it { should belong_to_vpc('my-vpc') }
210
+ describe ec2('my-ec2') do
211
+ it { should be_disabled_api_termination }
202
212
  end
203
213
  ```
204
214
 
205
215
 
206
- ### its(:vpc_id), its(:db_instance_identifier), its(:db_instance_class), its(:engine), its(:db_instance_status), its(:master_username), its(:db_name), its(:endpoint), its(:allocated_storage), its(:instance_create_time), its(:preferred_backup_window), its(:backup_retention_period), its(:availability_zone), its(:preferred_maintenance_window), its(:pending_modified_values), its(:latest_restorable_time), its(:multi_az), its(:engine_version), its(:auto_minor_version_upgrade), its(:read_replica_source_db_instance_identifier), its(:license_model), its(:iops), its(:character_set_name), its(:secondary_availability_zone), its(:publicly_accessible), its(:storage_type), its(:tde_credential_arn), its(:db_instance_port), its(:db_cluster_identifier), its(:storage_encrypted), its(:kms_key_id), its(:dbi_resource_id), its(:ca_certificate_identifier), its(:copy_tags_to_snapshot), its(:monitoring_interval), its(:enhanced_monitoring_resource_arn), its(:monitoring_role_arn)
207
- ### :unlock: Advanced use
208
-
209
- `rds` can use `Aws::RDS::DBInstance` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/RDS/DBInstance.html).
216
+ ### be_pending, be_running, be_shutting_down, be_terminated, be_stopping, be_stopped
210
217
 
211
218
  ```ruby
212
- describe rds('my-rds') do
213
- its('db_subnet_group.db_subnet_group_name') { should eq 'my-db-subnet-group' }
219
+ describe ec2('my-ec2') do
220
+ it { should be_running }
214
221
  end
215
222
  ```
216
223
 
217
- or
224
+
225
+ ### have_ebs
218
226
 
219
227
  ```ruby
220
- describe rds('my-rds') do
221
- its('resource.db_subnet_group.db_subnet_group_name') { should eq 'my-db-subnet-group' }
228
+ describe ec2('my-ec2') do
229
+ it { should have_ebs('vol-123a123b') }
230
+ it { should have_ebs('my-volume') }
222
231
  end
223
232
  ```
224
233
 
225
- ## <a name="rds_db_parameter_group">rds_db_parameter_group</a>
226
234
 
227
- RdsDbParameterGroup resource type.
235
+ ### have_eip
228
236
 
229
237
  ```ruby
230
- describe rds_db_parameter_group('my-rds-db-parameter-group') do
231
- its(:basedir) { should eq '/rdsdbbin/mysql' }
232
- its(:innodb_buffer_pool_size) { '{DBInstanceClassMemory*3/4}' }
238
+ describe ec2('my-ec2') do
239
+ it { should have_eip('123.0.456.789') }
233
240
  end
234
241
  ```
235
242
 
236
- ### exist
243
+
244
+ ### have_security_group
237
245
 
238
246
  ```ruby
239
- describe rds_db_parameter_group('my-rds-db-parameter-group') do
240
- it { should exist }
247
+ describe ec2('my-ec2') do
248
+ it { should have_security_group('my-security-group-name') }
249
+ it { should have_security_group('sg-1a2b3cd4') }
241
250
  end
242
251
  ```
243
252
 
244
253
 
245
- ## <a name="security_group">security_group</a>
246
-
247
- SecurityGroup resource type.
248
-
249
- ### exist
254
+ ### belong_to_subnet
250
255
 
251
256
  ```ruby
252
- describe security_group('my-security-group-name') do
253
- it { should exist }
257
+ describe ec2('my-ec2') do
258
+ it { should belong_to_subnet('subnet-1234a567') }
259
+ it { should belong_to_subnet('my-subnet') }
254
260
  end
255
261
  ```
256
262
 
257
263
 
258
- ### its(:inbound), its(:outbound)
264
+ ### belong_to_vpc
259
265
 
260
266
  ```ruby
261
- describe security_group('my-security-group-name') do
262
- its(:outbound) { should be_opened }
263
- its(:inbound) { should be_opened(80) }
264
- its(:inbound) { should be_opened(80).protocol('tcp').for('203.0.113.1/32') }
265
- its(:inbound) { should be_opened(22).protocol('tcp').for('sg-5a6b7cd8') }
267
+ describe ec2('my-ec2') do
268
+ it { should belong_to_vpc('vpc-ab123cde') }
269
+ it { should belong_to_vpc('my-vpc') }
266
270
  end
267
271
  ```
268
272
 
269
273
 
270
- ### its(:inbound_rule_count), its(:outbound_rule_count), its(:inbound_permissions_count), its(:outbound_permissions_count), its(:owner_id), its(:group_name), its(:group_id), its(:description), its(:vpc_id)
274
+ ### its(:instance_id), its(:image_id), its(:private_dns_name), its(:public_dns_name), its(:state_transition_reason), its(:key_name), its(:ami_launch_index), its(:instance_type), its(:launch_time), its(:placement), its(:kernel_id), its(:ramdisk_id), its(:platform), its(:monitoring), its(:subnet_id), its(:vpc_id), its(:private_ip_address), its(:public_ip_address), its(:state_reason), its(:architecture), its(:root_device_type), its(:root_device_name), its(:virtualization_type), its(:instance_lifecycle), its(:spot_instance_request_id), its(:client_token), its(:source_dest_check), its(:hypervisor), its(:iam_instance_profile), its(:ebs_optimized), its(:sriov_net_support)
271
275
  ### :unlock: Advanced use
272
276
 
273
- `security_group` can use `Aws::EC2::SecurityGroup` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/SecurityGroup.html).
277
+ `ec2` can use `Aws::EC2::Instance` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Instance.html).
274
278
 
275
279
  ```ruby
276
- describe security_group('my-security-group-name') do
277
- its('group_name') { should eq 'my-security-group-name' }
280
+ describe ec2('my-ec2') do
281
+ its('vpc.id') { should eq 'vpc-ab123cde' }
278
282
  end
279
283
  ```
280
284
 
281
285
  or
282
286
 
283
287
  ```ruby
284
- describe security_group('my-security-group-name') do
285
- its('resource.group_name') { should eq 'my-security-group-name' }
288
+ describe ec2('my-ec2') do
289
+ its('resource.vpc.id') { should eq 'vpc-ab123cde' }
286
290
  end
287
291
  ```
288
292
 
289
- ## <a name="vpc">vpc</a>
293
+ ## <a name="elasticache">elasticache</a>
290
294
 
291
- VPC resource type.
295
+ Elasticache resource type.
292
296
 
293
297
  ### exist
294
298
 
295
299
  ```ruby
296
- describe vpc('my-vpc') do
300
+ describe elasticache('my-rep-group-001') do
297
301
  it { should exist }
298
302
  end
299
303
  ```
300
304
 
301
305
 
302
- ### be_available, be_pending
306
+ ### be_available, be_creating, be_deleted, be_deleting, be_incompatible_network, be_modifying, be_rebooting_cache_cluster_nodes, be_restore_failed, be_snapshotting
303
307
 
304
308
  ```ruby
305
- describe vpc('vpc-ab123cde') do
309
+ describe elasticache('my-rep-group-001') do
306
310
  it { should be_available }
307
311
  end
308
312
  ```
309
313
 
310
314
 
311
- ### have_network_acl
315
+ ### have_cache_parameter_group
312
316
 
313
317
  ```ruby
314
- describe vpc('vpc-ab123cde') do
315
- it { should have_network_acl('acl-1abc2d3e') }
316
- it { should have_network_acl('my-network-acl') }
318
+ describe elasticache('my-rep-group-001') do
319
+ it { should have_cache_parameter_group('my-cache-parameter-group') }
317
320
  end
318
321
  ```
319
322
 
320
323
 
321
- ### have_route_table
324
+ ### belong_to_cache_subnet_group
322
325
 
323
326
  ```ruby
324
- describe vpc('vpc-ab123cde') do
325
- it { should have_network_acl('acl-1abc2d3e') }
326
- it { should have_network_acl('my-network-acl') }
327
+ describe elasticache('my-rep-group-001') do
328
+ it { should belong_to_cache_subnet_group('my-cache-subnet-group') }
327
329
  end
328
330
  ```
329
331
 
330
332
 
331
- ### its(:vpc_id), its(:state), its(:cidr_block), its(:dhcp_options_id), its(:instance_tenancy), its(:is_default)
332
- ### :unlock: Advanced use
333
-
334
- `vpc` can use `Aws::EC2::Vpc` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Vpc.html).
333
+ ### belong_to_replication_group
335
334
 
336
335
  ```ruby
337
- describe vpc('my-vpc') do
338
- its('route_tables.first.route_table_id') { should eq 'rtb-a12bcd34' }
336
+ describe elasticache('my-rep-group-001') do
337
+ it { should belong_to_replication_group('my-rep-group') }
339
338
  end
340
339
  ```
341
340
 
342
- or
341
+
342
+ ### belong_to_vpc
343
343
 
344
344
  ```ruby
345
- describe vpc('my-vpc') do
346
- its('resource.route_tables.first.route_table_id') { should eq 'rtb-a12bcd34' }
345
+ describe elasticache('my-rep-group-001') do
346
+ it { should belong_to_vpc('my-vpc') }
347
347
  end
348
348
  ```
349
349
 
350
- ## <a name="s3_bucket">s3_bucket</a>
350
+ ### its(:cache_cluster_id), its(:configuration_endpoint), its(:client_download_landing_page), its(:cache_node_type), its(:engine), its(:engine_version), its(:cache_cluster_status), its(:num_cache_nodes), its(:preferred_availability_zone), its(:cache_cluster_create_time), its(:preferred_maintenance_window), its(:notification_configuration), its(:cache_subnet_group_name), its(:auto_minor_version_upgrade), its(:replication_group_id), its(:snapshot_retention_limit), its(:snapshot_window)
351
+ ## <a name="elasticache_cache_parameter_group">elasticache_cache_parameter_group</a>
352
+
353
+ ElasticacheCacheParameterGroup resource type.
354
+
355
+ ```ruby
356
+ describe elasticache_cache_parameter_group('my-cache-parameter-group') do
357
+ it { should exist }
358
+ its(:activerehashing) { should eq 'yes' }
359
+ its(:client_output_buffer_limit_pubsub_hard_limit) { should eq '33554432' }
360
+ end
361
+ ```
351
362
 
352
- S3Bucket resource type.
353
363
 
354
364
  ### exist
355
365
 
356
366
  ```ruby
357
- describe s3_bucket('my-bucket') do
367
+ describe elasticache_cache_parameter_group('my-cache-parameter-group') do
358
368
  it { should exist }
359
369
  end
360
370
  ```
361
371
 
362
372
 
363
- ### have_acl_grant
373
+ ## <a name="elb">elb</a>
374
+
375
+ ELB resource type.
376
+
377
+ ### exist
364
378
 
365
379
  ```ruby
366
- describe s3_bucket('my-bucket') do
367
- its(:acl_owner) { should eq 'my-bucket-owner' }
368
- its(:acl_grants_count) { should eq 3 }
369
- it { should have_acl_grant(grantee: 'my-bucket-owner', permission: 'FULL_CONTROL') }
370
- it { should have_acl_grant(grantee: 'http://acs.amazonaws.com/groups/s3/LogDelivery', permission: 'WRITE') }
371
- it { should have_acl_grant(grantee: '68f4bb06b094152df53893bfba57760e', permission: 'READ') }
380
+ describe elb('my-elb') do
381
+ it { should exist }
372
382
  end
373
383
  ```
374
384
 
375
385
 
376
- ### have_cors_rule
386
+ ### have_ec2
377
387
 
378
388
  ```ruby
379
- describe s3_bucket('my-bucket') do
380
- it do
381
- should have_cors_rule(
382
- allowed_methods: ['GET'],
383
- allowed_origins: ['*']
384
- )
385
- end
386
- it do
387
- should have_cors_rule(
388
- allowed_headers: ['*'],
389
- allowed_methods: ['GET'],
390
- allowed_origins: ['https://example.org', 'https://example.com'],
391
- expose_headers: ['X-Custom-Header'],
392
- max_age_seconds: 3600
393
- )
394
- end
389
+ describe elb('my-elb') do
390
+ it { should have_ec2('my-ec2') }
395
391
  end
396
392
  ```
397
393
 
398
394
 
399
- ### have_object
395
+ ### have_listener
396
+
397
+ http://docs.aws.amazon.com/en_us/ElasticLoadBalancing/latest/DeveloperGuide/elb-listener-config.html
400
398
 
401
399
  ```ruby
402
- describe s3_bucket('my-bucket') do
403
- it { should have_object('path/to/object') }
400
+ describe elb('my-elb') do
401
+ it { should have_listener(protocol: 'HTTPS', port: 443, instance_protocol: 'HTTP', instance_port: 80) }
404
402
  end
405
403
  ```
406
404
 
407
405
 
408
- ### have_policy
406
+ ### have_security_group
409
407
 
410
408
  ```ruby
411
- describe s3_bucket('my-bucket') do
412
- should have_policy <<-POLICY
413
- {
414
- "Version": "2012-10-17",
415
- "Statement": [
416
- {
417
- "Sid": "AllowPublicRead",
418
- "Effect": "Allow",
419
- "Principal": "*",
420
- "Action": "s3:GetObject",
421
- "Resource": "arn:aws:s3:::my-bucket/*"
422
- }
423
- ]
424
- }
425
- POLICY
426
- end
409
+ describe elb('my-elb') do
410
+ it { should have_security_group('my-lb-security-group-tag-name') }
427
411
  end
428
412
  ```
429
413
 
430
414
 
431
- ### its(:acl_grants_count), its(:acl_owner), its(:cors_rules_count), its(:name), its(:creation_date)
432
- ### :unlock: Advanced use
433
-
434
- `s3_bucket` can use `Aws::S3::Bucket` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Bucket.html).
415
+ ### have_subnet
435
416
 
436
417
  ```ruby
437
- describe s3_bucket('my-bucket') do
438
- its('acl.owner.display_name') { should eq 'my-bucket-owner' }
418
+ describe elb('my-elb') do
419
+ it { should have_subnet('my-subnet') }
439
420
  end
440
421
  ```
441
422
 
442
- or
423
+
424
+ ### belong_to_vpc
443
425
 
444
426
  ```ruby
445
- describe s3_bucket('my-bucket') do
446
- its('resource.acl.owner.display_name') { should eq 'my-bucket-owner' }
427
+ describe elb('my-elb') do
428
+ it { should belong_to_vpc('my-vpc') }
447
429
  end
448
430
  ```
449
431
 
450
- ## <a name="route53_hosted_zone">route53_hosted_zone</a>
432
+ ### its(:health_check_target), its(:health_check_interval), its(:health_check_timeout), its(:health_check_unhealthy_threshold), its(:health_check_healthy_threshold), its(:load_balancer_name), its(:dns_name), its(:canonical_hosted_zone_name), its(:canonical_hosted_zone_name_id), its(:vpc_id), its(:created_time), its(:scheme)
433
+ ## <a name="iam_group">iam_group</a>
451
434
 
452
- Route53HostedZone resource type.
435
+ IamGroup resource type.
453
436
 
454
437
  ### exist
455
438
 
456
439
  ```ruby
457
- describe route53_hosted_zone('example.com.') do
440
+ describe iam_group('my-iam-group') do
458
441
  it { should exist }
459
442
  end
460
443
  ```
461
444
 
462
445
 
463
- ### have_record_set
446
+ ### be_allowed_action
464
447
 
465
448
  ```ruby
466
- describe route53_hosted_zone('example.com.') do
467
- its(:resource_record_set_count) { should eq 6 }
468
- it { should have_record_set('example.com.').a('123.456.7.890') }
469
- it { should have_record_set('*.example.com.').cname('example.com') }
470
- it { should have_record_set('example.com.').mx('10 mail.example.com') }
471
- it { should have_record_set('mail.example.com.').a('123.456.7.890').ttl(3600) }
472
- ns = 'ns-123.awsdns-45.net.
473
- ns-6789.awsdns-01.org.
474
- ns-2345.awsdns-67.co.uk.
475
- ns-890.awsdns-12.com.'
476
- it { should have_record_set('example.com.').ns(ns) }
477
- it { should have_record_set('s3.example.com.').alias('s3-website-us-east-1.amazonaws.com.', 'Z2ABCDEFGHIJKL') }
449
+ describe iam_group('my-iam-group') do
450
+ it { should be_allowed_action('ec2:DescribeInstances') }
451
+ it { should be_allowed_action('s3:Put*').resource_arn('arn:aws:s3:::my-bucket-name/*') }
478
452
  end
479
453
  ```
480
454
 
481
- ### its(:id), its(:name), its(:caller_reference), its(:config), its(:resource_record_set_count)
482
- ## <a name="autoscaling_group">autoscaling_group</a>
483
455
 
484
- AutoscalingGroup resource type.
485
-
486
- ### exist
456
+ ### have_iam_policy
487
457
 
488
458
  ```ruby
489
- describe autoscaling_group('my-auto-scaling-group') do
490
- it { should exist }
459
+ describe iam_group('my-iam-group') do
460
+ it { should have_iam_policy('ReadOnlyAccess') }
491
461
  end
492
462
  ```
493
463
 
494
464
 
495
- ### have_ec2
465
+ ### have_iam_user
496
466
 
497
467
  ```ruby
498
- describe autoscaling_group('my-auto-scaling-group') do
499
- it { should have_ec2('my-ec2') }
468
+ describe iam_group('my-iam-group') do
469
+ it { should have_iam_user('my-iam-user') }
500
470
  end
501
471
  ```
502
472
 
473
+ ### its(:path), its(:group_name), its(:group_id), its(:arn), its(:create_date)
474
+ ## <a name="iam_policy">iam_policy</a>
475
+
476
+ IamPolicy resource type.
503
477
 
504
- ### have_elb
478
+ ### exist
505
479
 
506
480
  ```ruby
507
- describe autoscaling_group('my-auto-scaling-group') do
508
- it { should have_elb('my-elb') }
481
+ describe iam_policy('my-iam-policy') do
482
+ it { should exist }
509
483
  end
510
484
  ```
511
485
 
512
- ### its(:auto_scaling_group_name), its(:auto_scaling_group_arn), its(:launch_configuration_name), its(:min_size), its(:max_size), its(:desired_capacity), its(:default_cooldown), its(:health_check_type), its(:health_check_grace_period), its(:created_time), its(:placement_group), its(:vpc_zone_identifier), its(:status), its(:new_instances_protected_from_scale_in)
513
- ## <a name="subnet">subnet</a>
514
-
515
- Subnet resource type.
516
486
 
517
- ### exist
487
+ ### be_attachable
518
488
 
519
489
  ```ruby
520
- describe subnet('my-subnet') do
521
- it { should exist }
490
+ describe iam_policy('my-iam-policy') do
491
+ it { should be_attachable }
522
492
  end
523
493
  ```
524
494
 
525
495
 
526
- ### be_available, be_pending
496
+ ### be_attached_to_group
527
497
 
528
498
  ```ruby
529
- describe subnet('my-subnet') do
530
- it { should be_available }
499
+ describe iam_policy('my-iam-policy') do
500
+ it { should be_attached_to_group('my-iam-group') }
531
501
  end
532
502
  ```
533
503
 
534
504
 
535
- ### its(:subnet_id), its(:state), its(:vpc_id), its(:cidr_block), its(:available_ip_address_count), its(:availability_zone), its(:default_for_az), its(:map_public_ip_on_launch)
536
- ### :unlock: Advanced use
537
-
538
- `subnet` can use `Aws::EC2::Subnet` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Subnet.html).
505
+ ### be_attached_to_role
539
506
 
540
507
  ```ruby
541
- describe subnet('my-subnet') do
542
- its('vpc.id') { should eq 'vpc-ab123cde' }
508
+ describe iam_policy('my-iam-policy') do
509
+ it { should be_attached_to_role('HelloIAmGodRole') }
543
510
  end
544
511
  ```
545
512
 
546
- or
513
+
514
+ ### be_attached_to_user
547
515
 
548
516
  ```ruby
549
- describe subnet('my-subnet') do
550
- its('resource.vpc.id') { should eq 'vpc-ab123cde' }
517
+ describe iam_policy('my-iam-policy') do
518
+ it { should be_attached_to_policy('my-iam-policy') }
551
519
  end
552
520
  ```
553
521
 
554
- ## <a name="route_table">route_table</a>
522
+ ### its(:policy_name), its(:policy_id), its(:arn), its(:path), its(:default_version_id), its(:attachment_count), its(:is_attachable), its(:description), its(:create_date), its(:update_date)
523
+ ## <a name="iam_role">iam_role</a>
555
524
 
556
- RouteTable resource type.
525
+ IamRole resource type.
557
526
 
558
527
  ### exist
559
528
 
560
529
  ```ruby
561
- describe route_table('my-route-table') do
530
+ describe iam_role('my-iam-role') do
562
531
  it { should exist }
563
532
  end
564
533
  ```
565
534
 
566
535
 
567
- ### have_route
536
+ ### be_allowed_action
568
537
 
569
538
  ```ruby
570
- describe route_table('my-route-table') do
571
- it { should have_route('10.0.0.0/16').target(gateway: 'local') }
572
- it { should have_route('0.0.0.0/0').target(gateway: 'igw-1ab2345c') }
573
- it { should have_route('192.168.1.0/24').target(instance: 'my-ec2') }
574
- it { should have_route('192.168.2.0/24').target(vpc_peering_connection: 'my-pcx') }
575
- it { should have_route('192.168.3.0/24').target(nat: 'nat-7ff7777f') }
539
+ describe iam_role('my-iam-role') do
540
+ it { should be_allowed_action('ec2:DescribeInstances') }
541
+ it { should be_allowed_action('s3:Put*').resource_arn('arn:aws:s3:::my-bucket-name/*') }
576
542
  end
577
543
  ```
578
544
 
579
545
 
580
- ### have_subnet
546
+ ### have_iam_policy
581
547
 
582
548
  ```ruby
583
- describe route_table('my-route-table') do
584
- it { should have_subnet('my-subnet') }
549
+ describe iam_role('my-iam-role') do
550
+ it { should have_iam_policy('ReadOnlyAccess') }
585
551
  end
586
552
  ```
587
553
 
554
+ ### its(:path), its(:role_name), its(:role_id), its(:arn), its(:create_date), its(:assume_role_policy_document)
555
+ ## <a name="iam_user">iam_user</a>
588
556
 
589
- ### its(:route_table_id), its(:vpc_id)
590
- ### :unlock: Advanced use
557
+ IamUser resource type.
591
558
 
592
- `route_table` can use `Aws::EC2::RouteTable` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/RouteTable.html).
559
+ ### exist
593
560
 
594
561
  ```ruby
595
- describe route_table('my-route-table') do
596
- its('vpc.id') { should eq 'vpc-ab123cde' }
562
+ describe iam_user('my-iam-user') do
563
+ it { should exist }
597
564
  end
598
565
  ```
599
566
 
600
- or
567
+
568
+ ### be_allowed_action
601
569
 
602
570
  ```ruby
603
- describe s3_bucket('my-bucket') do
604
- its('resource.vpc.id') { should eq 'vpc-ab123cde' }
571
+ describe iam_user('my-iam-user') do
572
+ it { should be_allowed_action('ec2:DescribeInstances') }
573
+ it { should be_allowed_action('s3:Put*').resource_arn('arn:aws:s3:::my-bucket-name/*') }
605
574
  end
606
575
  ```
607
576
 
608
- ## <a name="ebs">ebs</a>
609
577
 
610
- EBS resource type.
578
+ ### have_iam_policy
579
+
580
+ ```ruby
581
+ describe iam_user('my-iam-user') do
582
+ it { should have_iam_policy('ReadOnlyAccess') }
583
+ end
584
+ ```
585
+
586
+
587
+ ### belong_to_iam_group
588
+
589
+ ```ruby
590
+ describe iam_user('my-iam-user') do
591
+ it { should belong_to_iam_group('my-iam-group') }
592
+ end
593
+ ```
594
+
595
+ ### its(:path), its(:user_name), its(:user_id), its(:arn), its(:create_date), its(:password_last_used)
596
+ ## <a name="lambda">lambda</a>
597
+
598
+ Lambda resource type.
611
599
 
612
600
  ### exist
613
601
 
614
602
  ```ruby
615
- describe ebs('my-volume') do
603
+ describe lambda('my-lambda-function-name') do
616
604
  it { should exist }
617
605
  end
618
606
  ```
619
607
 
620
608
 
621
- ### be_attached_to
609
+ ### have_event_source
610
+
611
+ This matcher does not support Amazon S3 event sources. ( [See SDK doc](http://docs.aws.amazon.com/sdkforruby/api/Aws/Lambda/Client.html#list_event_source_mappings-instance_method) )
612
+
613
+ ### its(:function_name), its(:function_arn), its(:runtime), its(:role), its(:handler), its(:code_size), its(:description), its(:timeout), its(:memory_size), its(:last_modified), its(:code_sha_256), its(:version)
614
+ ## <a name="nat_gateway">nat_gateway</a>
615
+
616
+ NatGateway resource type.
617
+
618
+ ### exist
622
619
 
623
620
  ```ruby
624
- describe ebs('my-volume') do
625
- it { should be_attached_to('my-ec2') }
621
+ describe nat_gateway('nat-7ff7777f') do
622
+ it { should exist }
626
623
  end
627
624
  ```
628
625
 
629
626
 
630
- ### be_creating, be_available, be_in_use, be_deleting, be_deleted, be_error
627
+ ### be_pending, be_failed, be_available, be_deleting, be_deleted
631
628
 
632
629
  ```ruby
633
- describe ebs('my-volume') do
634
- it { should be_in_use }
630
+ describe nat_gateway('nat-7ff7777f') do
631
+ it { should be_available }
635
632
  end
636
633
  ```
637
634
 
638
635
 
639
- ### its(:volume_id), its(:size), its(:snapshot_id), its(:availability_zone), its(:state), its(:create_time), its(:volume_type), its(:iops), its(:encrypted), its(:kms_key_id)
640
- ### :unlock: Advanced use
641
-
642
- `ebs` can use `Aws::EC2::Volume` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Volume.html).
636
+ ### have_eip
643
637
 
644
638
  ```ruby
645
- describe ebs('my-volume') do
646
- its('attachments.first.instance_id') { should eq 'i-ec12345a' }
639
+ describe nat_gateway('nat-7ff7777f') do
640
+ it { should have_eip('123.0.456.789') }
647
641
  end
648
642
  ```
649
643
 
650
- or
644
+
645
+ ### belong_to_vpc
651
646
 
652
647
  ```ruby
653
- describe ebs('my-volume') do
654
- its('resource.attachments.first.instance_id') { should eq 'i-ec12345a' }
648
+ describe nat_gateway('nat-7ff7777f') do
649
+ it { should belong_to_vpc('my-vpc') }
655
650
  end
656
651
  ```
657
652
 
658
- ## <a name="elb">elb</a>
653
+ ### its(:vpc_id), its(:subnet_id), its(:nat_gateway_id), its(:create_time), its(:delete_time), its(:state), its(:failure_code), its(:failure_message)
654
+ ## <a name="network_acl">network_acl</a>
659
655
 
660
- ELB resource type.
656
+ NetworkAcl resource type.
661
657
 
662
658
  ### exist
663
659
 
664
660
  ```ruby
665
- describe elb('my-elb') do
661
+ describe network_acl('my-network-acl') do
666
662
  it { should exist }
667
663
  end
668
664
  ```
669
665
 
670
666
 
671
- ### have_ec2
667
+ ### have_subnet
672
668
 
673
669
  ```ruby
674
- describe elb('my-elb') do
675
- it { should have_ec2('my-ec2') }
670
+ describe network_acl('my-network-acl') do
671
+ it { should have_subnet('my-subnet') }
676
672
  end
677
673
  ```
678
674
 
679
675
 
680
- ### have_listener
681
-
682
- http://docs.aws.amazon.com/en_us/ElasticLoadBalancing/latest/DeveloperGuide/elb-listener-config.html
676
+ ### belong_to_vpc
683
677
 
684
678
  ```ruby
685
- describe elb('my-elb') do
686
- it { should have_listener(protocol: 'HTTPS', port: 443, instance_protocol: 'HTTP', instance_port: 80) }
679
+ describe network_acl('my-network-acl') do
680
+ it { should belong_to_vpc('my-vpc') }
687
681
  end
688
682
  ```
689
683
 
690
684
 
691
- ### have_security_group
685
+ ### its(:inbound), its(:outbound), its(:inbound_entries_count), its(:outbound_entries_count)
692
686
 
693
687
  ```ruby
694
- describe elb('my-elb') do
695
- it { should have_security_group('my-lb-security-group-tag-name') }
688
+ describe network_acl('my-network-acl') do
689
+ its(:inbound) { should be_allowed(80).protocol('tcp').source('123.0.456.789/32') }
690
+ its(:inbound) { should be_denied.rule_number('*').source('0.0.0.0/0') }
691
+ its(:outbound) { should be_allowed.protocol('ALL').source('0.0.0.0/0') }
692
+ its(:inbound_entries_count) { should eq 3 }
693
+ its(:outbound_entries_count) { should eq 2 }
696
694
  end
697
695
  ```
698
696
 
699
697
 
700
- ### have_subnet
698
+ ### its(:inbound_entries_count), its(:outbound_entries_count), its(:network_acl_id), its(:vpc_id), its(:is_default)
699
+ ### :unlock: Advanced use
700
+
701
+ `network_acl` can use `Aws::EC2::NetworkAcl` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/NetworkAcl.html).
701
702
 
702
703
  ```ruby
703
- describe elb('my-elb') do
704
- it { should have_subnet('my-subnet') }
704
+ describe network_acl('my-network-acl') do
705
+ its('vpc.id') { should eq 'vpc-ab123cde' }
705
706
  end
706
707
  ```
707
708
 
708
-
709
- ### belong_to_vpc
709
+ or
710
710
 
711
711
  ```ruby
712
- describe elb('my-elb') do
713
- it { should belong_to_vpc('my-vpc') }
712
+ describe network_acl('my-network-acl') do
713
+ its('resource.vpc.id') { should eq 'vpc-ab123cde' }
714
714
  end
715
715
  ```
716
716
 
717
- ### its(:health_check_target), its(:health_check_interval), its(:health_check_timeout), its(:health_check_unhealthy_threshold), its(:health_check_healthy_threshold), its(:load_balancer_name), its(:dns_name), its(:canonical_hosted_zone_name), its(:canonical_hosted_zone_name_id), its(:vpc_id), its(:created_time), its(:scheme)
718
- ## <a name="lambda">lambda</a>
717
+ ## <a name="rds">rds</a>
719
718
 
720
- Lambda resource type.
719
+ RDS resource type.
721
720
 
722
721
  ### exist
723
722
 
724
723
  ```ruby
725
- describe lambda('my-lambda-function-name') do
724
+ describe rds('my-rds') do
726
725
  it { should exist }
727
726
  end
728
727
  ```
729
728
 
730
729
 
731
- ### have_event_source
732
-
733
- This matcher does not support Amazon S3 event sources. ( [See SDK doc](http://docs.aws.amazon.com/sdkforruby/api/Aws/Lambda/Client.html#list_event_source_mappings-instance_method) )
730
+ ### be_available, be_backing_up, be_creating, be_deleting, be_failed, be_inaccessible_encryption_credentials, be_incompatible_credentials, be_incompatible_network, be_incompatible_option_group, be_incompatible_parameters, be_incompatible_restore, be_maintenance, be_modifying, be_rebooting, be_renaming, be_resetting_master_credentials, be_restore_error, be_storage_full, be_upgrading
734
731
 
735
- ### its(:function_name), its(:function_arn), its(:runtime), its(:role), its(:handler), its(:code_size), its(:description), its(:timeout), its(:memory_size), its(:last_modified), its(:code_sha_256), its(:version)
736
- ## <a name="iam_user">iam_user</a>
732
+ ```ruby
733
+ describe rds('my-rds') do
734
+ it { should be_available }
735
+ end
736
+ ```
737
737
 
738
- IamUser resource type.
739
738
 
740
- ### exist
739
+ ### have_db_parameter_group
741
740
 
742
741
  ```ruby
743
- describe iam_user('my-iam-user') do
744
- it { should exist }
742
+ describe rds('my-rds') do
743
+ it { should belong_to_db_subnet_group('my-db-subnet-group') }
745
744
  end
746
745
  ```
747
746
 
748
747
 
749
- ### be_allowed_action
748
+ ### have_option_group
750
749
 
751
750
  ```ruby
752
- describe iam_user('my-iam-user') do
753
- it { should be_allowed_action('ec2:DescribeInstances') }
754
- it { should be_allowed_action('s3:Put*').resource_arn('arn:aws:s3:::my-bucket-name/*') }
751
+ describe rds('my-rds') do
752
+ it { should have_option_group('default:mysql-5-6') }
755
753
  end
756
754
  ```
757
755
 
758
756
 
759
- ### have_iam_policy
757
+ ### have_security_group
760
758
 
761
759
  ```ruby
762
- describe iam_user('my-iam-user') do
763
- it { should have_iam_policy('ReadOnlyAccess') }
760
+ describe rds('my-rds') do
761
+ it { should have_security_group('sg-5a6b7cd8') }
762
+ it { should have_security_group('my-db-sg') }
764
763
  end
765
764
  ```
766
765
 
767
766
 
768
- ### belong_to_iam_group
767
+ ### belong_to_db_subnet_group
769
768
 
770
769
  ```ruby
771
- describe iam_user('my-iam-user') do
772
- it { should belong_to_iam_group('my-iam-group') }
770
+ describe rds('my-rds') do
771
+ it { should belong_to_db_subnet_group('my-db-subnet-group') }
773
772
  end
774
773
  ```
775
774
 
776
- ### its(:path), its(:user_name), its(:user_id), its(:arn), its(:create_date), its(:password_last_used)
777
- ## <a name="iam_group">iam_group</a>
778
-
779
- IamGroup resource type.
780
775
 
781
- ### exist
776
+ ### belong_to_subnet
782
777
 
783
778
  ```ruby
784
- describe iam_group('my-iam-group') do
785
- it { should exist }
779
+ describe rds('my-rds') do
780
+ it { should belong_to_subnet('subnet-8901b123') }
781
+ it { should belong_to_subnet('db-subnet-a') }
786
782
  end
787
783
  ```
788
784
 
789
785
 
790
- ### be_allowed_action
786
+ ### belong_to_vpc
791
787
 
792
788
  ```ruby
793
- describe iam_group('my-iam-group') do
794
- it { should be_allowed_action('ec2:DescribeInstances') }
795
- it { should be_allowed_action('s3:Put*').resource_arn('arn:aws:s3:::my-bucket-name/*') }
789
+ describe rds('my-rds') do
790
+ it { should belong_to_vpc('vpc-ab123cde') }
791
+ it { should belong_to_vpc('my-vpc') }
796
792
  end
797
793
  ```
798
794
 
799
795
 
800
- ### have_iam_policy
796
+ ### its(:vpc_id), its(:db_instance_identifier), its(:db_instance_class), its(:engine), its(:db_instance_status), its(:master_username), its(:db_name), its(:endpoint), its(:allocated_storage), its(:instance_create_time), its(:preferred_backup_window), its(:backup_retention_period), its(:availability_zone), its(:preferred_maintenance_window), its(:pending_modified_values), its(:latest_restorable_time), its(:multi_az), its(:engine_version), its(:auto_minor_version_upgrade), its(:read_replica_source_db_instance_identifier), its(:license_model), its(:iops), its(:character_set_name), its(:secondary_availability_zone), its(:publicly_accessible), its(:storage_type), its(:tde_credential_arn), its(:db_instance_port), its(:db_cluster_identifier), its(:storage_encrypted), its(:kms_key_id), its(:dbi_resource_id), its(:ca_certificate_identifier), its(:copy_tags_to_snapshot), its(:monitoring_interval), its(:enhanced_monitoring_resource_arn), its(:monitoring_role_arn)
797
+ ### :unlock: Advanced use
798
+
799
+ `rds` can use `Aws::RDS::DBInstance` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/RDS/DBInstance.html).
801
800
 
802
801
  ```ruby
803
- describe iam_group('my-iam-group') do
804
- it { should have_iam_policy('ReadOnlyAccess') }
802
+ describe rds('my-rds') do
803
+ its('db_subnet_group.db_subnet_group_name') { should eq 'my-db-subnet-group' }
805
804
  end
806
805
  ```
807
806
 
808
-
809
- ### have_iam_user
807
+ or
810
808
 
811
809
  ```ruby
812
- describe iam_group('my-iam-group') do
813
- it { should have_iam_user('my-iam-user') }
810
+ describe rds('my-rds') do
811
+ its('resource.db_subnet_group.db_subnet_group_name') { should eq 'my-db-subnet-group' }
814
812
  end
815
813
  ```
816
814
 
817
- ### its(:path), its(:group_name), its(:group_id), its(:arn), its(:create_date)
818
- ## <a name="iam_role">iam_role</a>
815
+ ## <a name="rds_db_parameter_group">rds_db_parameter_group</a>
819
816
 
820
- IamRole resource type.
817
+ RdsDbParameterGroup resource type.
818
+
819
+ ```ruby
820
+ describe rds_db_parameter_group('my-rds-db-parameter-group') do
821
+ its(:basedir) { should eq '/rdsdbbin/mysql' }
822
+ its(:innodb_buffer_pool_size) { '{DBInstanceClassMemory*3/4}' }
823
+ end
824
+ ```
821
825
 
822
826
  ### exist
823
827
 
824
828
  ```ruby
825
- describe iam_role('my-iam-role') do
829
+ describe rds_db_parameter_group('my-rds-db-parameter-group') do
826
830
  it { should exist }
827
831
  end
828
832
  ```
829
833
 
830
834
 
831
- ### be_allowed_action
835
+ ## <a name="route53_hosted_zone">route53_hosted_zone</a>
836
+
837
+ Route53HostedZone resource type.
838
+
839
+ ### exist
832
840
 
833
841
  ```ruby
834
- describe iam_role('my-iam-role') do
835
- it { should be_allowed_action('ec2:DescribeInstances') }
836
- it { should be_allowed_action('s3:Put*').resource_arn('arn:aws:s3:::my-bucket-name/*') }
842
+ describe route53_hosted_zone('example.com.') do
843
+ it { should exist }
837
844
  end
838
845
  ```
839
846
 
840
847
 
841
- ### have_iam_policy
848
+ ### have_record_set
842
849
 
843
850
  ```ruby
844
- describe iam_role('my-iam-role') do
845
- it { should have_iam_policy('ReadOnlyAccess') }
851
+ describe route53_hosted_zone('example.com.') do
852
+ its(:resource_record_set_count) { should eq 6 }
853
+ it { should have_record_set('example.com.').a('123.456.7.890') }
854
+ it { should have_record_set('*.example.com.').cname('example.com') }
855
+ it { should have_record_set('example.com.').mx('10 mail.example.com') }
856
+ it { should have_record_set('mail.example.com.').a('123.456.7.890').ttl(3600) }
857
+ ns = 'ns-123.awsdns-45.net.
858
+ ns-6789.awsdns-01.org.
859
+ ns-2345.awsdns-67.co.uk.
860
+ ns-890.awsdns-12.com.'
861
+ it { should have_record_set('example.com.').ns(ns) }
862
+ it { should have_record_set('s3.example.com.').alias('s3-website-us-east-1.amazonaws.com.', 'Z2ABCDEFGHIJKL') }
846
863
  end
847
864
  ```
848
865
 
849
- ### its(:path), its(:role_name), its(:role_id), its(:arn), its(:create_date), its(:assume_role_policy_document)
850
- ## <a name="iam_policy">iam_policy</a>
866
+ ### its(:id), its(:name), its(:caller_reference), its(:config), its(:resource_record_set_count)
867
+ ## <a name="route_table">route_table</a>
851
868
 
852
- IamPolicy resource type.
869
+ RouteTable resource type.
853
870
 
854
871
  ### exist
855
872
 
856
873
  ```ruby
857
- describe iam_policy('my-iam-policy') do
874
+ describe route_table('my-route-table') do
858
875
  it { should exist }
859
876
  end
860
877
  ```
861
878
 
862
879
 
863
- ### be_attachable
880
+ ### have_route
864
881
 
865
882
  ```ruby
866
- describe iam_policy('my-iam-policy') do
867
- it { should be_attachable }
883
+ describe route_table('my-route-table') do
884
+ it { should have_route('10.0.0.0/16').target(gateway: 'local') }
885
+ it { should have_route('0.0.0.0/0').target(gateway: 'igw-1ab2345c') }
886
+ it { should have_route('192.168.1.0/24').target(instance: 'my-ec2') }
887
+ it { should have_route('192.168.2.0/24').target(vpc_peering_connection: 'my-pcx') }
888
+ it { should have_route('192.168.3.0/24').target(nat: 'nat-7ff7777f') }
868
889
  end
869
890
  ```
870
891
 
871
892
 
872
- ### be_attached_to_group
893
+ ### have_subnet
873
894
 
874
895
  ```ruby
875
- describe iam_policy('my-iam-policy') do
876
- it { should be_attached_to_group('my-iam-group') }
896
+ describe route_table('my-route-table') do
897
+ it { should have_subnet('my-subnet') }
877
898
  end
878
899
  ```
879
900
 
880
901
 
881
- ### be_attached_to_role
902
+ ### its(:route_table_id), its(:vpc_id)
903
+ ### :unlock: Advanced use
904
+
905
+ `route_table` can use `Aws::EC2::RouteTable` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/RouteTable.html).
882
906
 
883
907
  ```ruby
884
- describe iam_policy('my-iam-policy') do
885
- it { should be_attached_to_role('HelloIAmGodRole') }
908
+ describe route_table('my-route-table') do
909
+ its('vpc.id') { should eq 'vpc-ab123cde' }
886
910
  end
887
911
  ```
888
912
 
889
-
890
- ### be_attached_to_user
913
+ or
891
914
 
892
915
  ```ruby
893
- describe iam_policy('my-iam-policy') do
894
- it { should be_attached_to_policy('my-iam-policy') }
916
+ describe s3_bucket('my-bucket') do
917
+ its('resource.vpc.id') { should eq 'vpc-ab123cde' }
895
918
  end
896
919
  ```
897
920
 
898
- ### its(:policy_name), its(:policy_id), its(:arn), its(:path), its(:default_version_id), its(:attachment_count), its(:is_attachable), its(:description), its(:create_date), its(:update_date)
899
- ## <a name="elasticache">elasticache</a>
921
+ ## <a name="s3_bucket">s3_bucket</a>
900
922
 
901
- Elasticache resource type.
923
+ S3Bucket resource type.
902
924
 
903
925
  ### exist
904
926
 
905
927
  ```ruby
906
- describe elasticache('my-rep-group-001') do
928
+ describe s3_bucket('my-bucket') do
907
929
  it { should exist }
908
930
  end
909
931
  ```
910
932
 
911
933
 
912
- ### be_available, be_creating, be_deleted, be_deleting, be_incompatible_network, be_modifying, be_rebooting_cache_cluster_nodes, be_restore_failed, be_snapshotting
934
+ ### have_acl_grant
913
935
 
914
936
  ```ruby
915
- describe elasticache('my-rep-group-001') do
916
- it { should be_available }
937
+ describe s3_bucket('my-bucket') do
938
+ its(:acl_owner) { should eq 'my-bucket-owner' }
939
+ its(:acl_grants_count) { should eq 3 }
940
+ it { should have_acl_grant(grantee: 'my-bucket-owner', permission: 'FULL_CONTROL') }
941
+ it { should have_acl_grant(grantee: 'http://acs.amazonaws.com/groups/s3/LogDelivery', permission: 'WRITE') }
942
+ it { should have_acl_grant(grantee: '68f4bb06b094152df53893bfba57760e', permission: 'READ') }
917
943
  end
918
944
  ```
919
945
 
920
946
 
921
- ### have_cache_parameter_group
947
+ ### have_cors_rule
922
948
 
923
949
  ```ruby
924
- describe elasticache('my-rep-group-001') do
925
- it { should have_cache_parameter_group('my-cache-parameter-group') }
950
+ describe s3_bucket('my-bucket') do
951
+ it do
952
+ should have_cors_rule(
953
+ allowed_methods: ['GET'],
954
+ allowed_origins: ['*']
955
+ )
956
+ end
957
+ it do
958
+ should have_cors_rule(
959
+ allowed_headers: ['*'],
960
+ allowed_methods: ['GET'],
961
+ allowed_origins: ['https://example.org', 'https://example.com'],
962
+ expose_headers: ['X-Custom-Header'],
963
+ max_age_seconds: 3600
964
+ )
965
+ end
926
966
  end
927
967
  ```
928
968
 
929
969
 
930
- ### belong_to_cache_subnet_group
970
+ ### have_object
931
971
 
932
972
  ```ruby
933
- describe elasticache('my-rep-group-001') do
934
- it { should belong_to_cache_subnet_group('my-cache-subnet-group') }
973
+ describe s3_bucket('my-bucket') do
974
+ it { should have_object('path/to/object') }
935
975
  end
936
976
  ```
937
977
 
938
978
 
939
- ### belong_to_replication_group
979
+ ### have_policy
940
980
 
941
981
  ```ruby
942
- describe elasticache('my-rep-group-001') do
943
- it { should belong_to_replication_group('my-rep-group') }
982
+ describe s3_bucket('my-bucket') do
983
+ should have_policy <<-POLICY
984
+ {
985
+ "Version": "2012-10-17",
986
+ "Statement": [
987
+ {
988
+ "Sid": "AllowPublicRead",
989
+ "Effect": "Allow",
990
+ "Principal": "*",
991
+ "Action": "s3:GetObject",
992
+ "Resource": "arn:aws:s3:::my-bucket/*"
993
+ }
994
+ ]
995
+ }
996
+ POLICY
997
+ end
944
998
  end
945
999
  ```
946
1000
 
947
1001
 
948
- ### belong_to_vpc
949
-
950
- ```ruby
951
- describe elasticache('my-rep-group-001') do
952
- it { should belong_to_vpc('my-vpc') }
953
- end
954
- ```
955
-
956
- ### its(:cache_cluster_id), its(:configuration_endpoint), its(:client_download_landing_page), its(:cache_node_type), its(:engine), its(:engine_version), its(:cache_cluster_status), its(:num_cache_nodes), its(:preferred_availability_zone), its(:cache_cluster_create_time), its(:preferred_maintenance_window), its(:notification_configuration), its(:cache_subnet_group_name), its(:auto_minor_version_upgrade), its(:replication_group_id), its(:snapshot_retention_limit), its(:snapshot_window)
957
- ## <a name="elasticache_cache_parameter_group">elasticache_cache_parameter_group</a>
1002
+ ### its(:acl_grants_count), its(:acl_owner), its(:cors_rules_count), its(:name), its(:creation_date)
1003
+ ### :unlock: Advanced use
958
1004
 
959
- ElasticacheCacheParameterGroup resource type.
1005
+ `s3_bucket` can use `Aws::S3::Bucket` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Bucket.html).
960
1006
 
961
1007
  ```ruby
962
- describe elasticache_cache_parameter_group('my-cache-parameter-group') do
963
- it { should exist }
964
- its(:activerehashing) { should eq 'yes' }
965
- its(:client_output_buffer_limit_pubsub_hard_limit) { should eq '33554432' }
1008
+ describe s3_bucket('my-bucket') do
1009
+ its('acl.owner.display_name') { should eq 'my-bucket-owner' }
966
1010
  end
967
1011
  ```
968
1012
 
969
-
970
- ### exist
1013
+ or
971
1014
 
972
1015
  ```ruby
973
- describe elasticache_cache_parameter_group('my-cache-parameter-group') do
974
- it { should exist }
1016
+ describe s3_bucket('my-bucket') do
1017
+ its('resource.acl.owner.display_name') { should eq 'my-bucket-owner' }
975
1018
  end
976
1019
  ```
977
1020
 
1021
+ ## <a name="security_group">security_group</a>
978
1022
 
979
- ## <a name="cloudwatch_alarm">cloudwatch_alarm</a>
980
-
981
- CloudwatchAlarm resource type.
1023
+ SecurityGroup resource type.
982
1024
 
983
1025
  ### exist
984
1026
 
985
1027
  ```ruby
986
- describe cloudwatch_alarm('my-cloudwatch-alarm') do
1028
+ describe security_group('my-security-group-name') do
987
1029
  it { should exist }
988
1030
  end
989
1031
  ```
990
1032
 
991
1033
 
992
- ### have_alarm_action
1034
+ ### its(:inbound), its(:outbound)
993
1035
 
994
1036
  ```ruby
995
- describe cloudwatch_alarm('my-cloudwatch-alarm') do
996
- it { should have_alarm_action('arn:aws:sns:ap-northeast-1:1234567890:sns_alert') }
1037
+ describe security_group('my-security-group-name') do
1038
+ its(:outbound) { should be_opened }
1039
+ its(:inbound) { should be_opened(80) }
1040
+ its(:inbound) { should be_opened(80).protocol('tcp').for('203.0.113.1/32') }
1041
+ its(:inbound) { should be_opened(22).protocol('tcp').for('sg-5a6b7cd8') }
997
1042
  end
998
1043
  ```
999
1044
 
1000
1045
 
1001
- ### have_insufficient_data_action
1002
-
1003
- ```ruby
1004
- describe cloudwatch_alarm('my-cloudwatch-alarm') do
1005
- it { should have_insufficient_data_action('arn:aws:sns:ap-northeast-1:1234567890:sns_alert') }
1006
- end
1007
- ```
1008
-
1046
+ ### its(:inbound_rule_count), its(:outbound_rule_count), its(:inbound_permissions_count), its(:outbound_permissions_count), its(:owner_id), its(:group_name), its(:group_id), its(:description), its(:vpc_id)
1047
+ ### :unlock: Advanced use
1009
1048
 
1010
- ### have_ok_action
1049
+ `security_group` can use `Aws::EC2::SecurityGroup` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/SecurityGroup.html).
1011
1050
 
1012
1051
  ```ruby
1013
- describe cloudwatch_alarm('my-cloudwatch-alarm') do
1014
- it { should have_ok_action('arn:aws:sns:ap-northeast-1:1234567890:sns_alert') }
1052
+ describe security_group('my-security-group-name') do
1053
+ its('group_name') { should eq 'my-security-group-name' }
1015
1054
  end
1016
1055
  ```
1017
1056
 
1018
-
1019
- ### belong_to_metric
1057
+ or
1020
1058
 
1021
1059
  ```ruby
1022
- describe cloudwatch_alarm('my-cloudwatch-alarm') do
1023
- it { should belong_to_metric('NumberOfProcesses').namespace('my-cloudwatch-namespace') }
1060
+ describe security_group('my-security-group-name') do
1061
+ its('resource.group_name') { should eq 'my-security-group-name' }
1024
1062
  end
1025
1063
  ```
1026
1064
 
1027
- ### its(:alarm_name), its(:alarm_arn), its(:alarm_description), its(:alarm_configuration_updated_timestamp), its(:actions_enabled), its(:state_value), its(:state_reason), its(:state_reason_data), its(:state_updated_timestamp), its(:metric_name), its(:namespace), its(:statistic), its(:period), its(:unit), its(:evaluation_periods), its(:threshold), its(:comparison_operator)
1028
1065
  ## <a name="ses_identity">ses_identity</a>
1029
1066
 
1030
1067
  SesIdentity resource type.
@@ -1050,57 +1087,35 @@ end
1050
1087
  ```
1051
1088
 
1052
1089
  ### its(:dkim_enabled), its(:dkim_verification_status), its(:bounce_topic), its(:complaint_topic), its(:delivery_topic), its(:forwarding_enabled), its(:verification_status), its(:verification_token)
1053
- ## <a name="network_acl">network_acl</a>
1090
+ ## <a name="subnet">subnet</a>
1054
1091
 
1055
- NetworkAcl resource type.
1092
+ Subnet resource type.
1056
1093
 
1057
1094
  ### exist
1058
1095
 
1059
1096
  ```ruby
1060
- describe network_acl('my-network-acl') do
1097
+ describe subnet('my-subnet') do
1061
1098
  it { should exist }
1062
1099
  end
1063
1100
  ```
1064
1101
 
1065
1102
 
1066
- ### have_subnet
1067
-
1068
- ```ruby
1069
- describe network_acl('my-network-acl') do
1070
- it { should have_subnet('my-subnet') }
1071
- end
1072
- ```
1073
-
1074
-
1075
- ### belong_to_vpc
1076
-
1077
- ```ruby
1078
- describe network_acl('my-network-acl') do
1079
- it { should belong_to_vpc('my-vpc') }
1080
- end
1081
- ```
1082
-
1083
-
1084
- ### its(:inbound), its(:outbound), its(:inbound_entries_count), its(:outbound_entries_count)
1103
+ ### be_available, be_pending
1085
1104
 
1086
1105
  ```ruby
1087
- describe network_acl('my-network-acl') do
1088
- its(:inbound) { should be_allowed(80).protocol('tcp').source('123.0.456.789/32') }
1089
- its(:inbound) { should be_denied.rule_number('*').source('0.0.0.0/0') }
1090
- its(:outbound) { should be_allowed.protocol('ALL').source('0.0.0.0/0') }
1091
- its(:inbound_entries_count) { should eq 3 }
1092
- its(:outbound_entries_count) { should eq 2 }
1106
+ describe subnet('my-subnet') do
1107
+ it { should be_available }
1093
1108
  end
1094
1109
  ```
1095
1110
 
1096
1111
 
1097
- ### its(:inbound_entries_count), its(:outbound_entries_count), its(:network_acl_id), its(:vpc_id), its(:is_default)
1112
+ ### its(:subnet_id), its(:state), its(:vpc_id), its(:cidr_block), its(:available_ip_address_count), its(:availability_zone), its(:default_for_az), its(:map_public_ip_on_launch)
1098
1113
  ### :unlock: Advanced use
1099
1114
 
1100
- `network_acl` can use `Aws::EC2::NetworkAcl` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/NetworkAcl.html).
1115
+ `subnet` can use `Aws::EC2::Subnet` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Subnet.html).
1101
1116
 
1102
1117
  ```ruby
1103
- describe network_acl('my-network-acl') do
1118
+ describe subnet('my-subnet') do
1104
1119
  its('vpc.id') { should eq 'vpc-ab123cde' }
1105
1120
  end
1106
1121
  ```
@@ -1108,84 +1123,68 @@ end
1108
1123
  or
1109
1124
 
1110
1125
  ```ruby
1111
- describe network_acl('my-network-acl') do
1126
+ describe subnet('my-subnet') do
1112
1127
  its('resource.vpc.id') { should eq 'vpc-ab123cde' }
1113
1128
  end
1114
1129
  ```
1115
1130
 
1116
- ## <a name="directconnect_virtual_interface">directconnect_virtual_interface</a>
1117
-
1118
- DirectconnectVirtualInterface resource type.
1119
-
1120
- ```ruby
1121
- describe directconnect_virtual_interface('my-directconnect-virtual-interface') do
1122
- it { should exist }
1123
- it { should be_available }
1124
- its(:connection_id) { should eq 'dxcon-abcd5fgh' }
1125
- its(:virtual_interface_id) { should eq 'dxvif-aabbccdd' }
1126
- its(:amazon_address) { should eq '170.252.252.1/30' }
1127
- its(:customer_address) { should eq '123.456.789.2/30' }
1128
- its(:virtual_gateway_id) { should eq 'vgw-d234e5f6' }
1129
- end
1130
- ```
1131
+ ## <a name="vpc">vpc</a>
1131
1132
 
1133
+ VPC resource type.
1132
1134
 
1133
1135
  ### exist
1134
1136
 
1135
1137
  ```ruby
1136
- describe directconnect_virtual_interface('my-directconnect-virtual-interface') do
1138
+ describe vpc('my-vpc') do
1137
1139
  it { should exist }
1138
1140
  end
1139
1141
  ```
1140
1142
 
1141
1143
 
1142
- ### be_confirming, be_verifying, be_pending, be_available, be_deleting, be_deleted, be_rejected
1144
+ ### be_available, be_pending
1143
1145
 
1144
1146
  ```ruby
1145
- describe directconnect_virtual_interface('my-directconnect-virtual-interface') do
1146
- it { should exist }
1147
+ describe vpc('vpc-ab123cde') do
1147
1148
  it { should be_available }
1148
1149
  end
1149
1150
  ```
1150
1151
 
1151
- ### its(:owner_account), its(:virtual_interface_id), its(:location), its(:connection_id), its(:virtual_interface_type), its(:virtual_interface_name), its(:vlan), its(:asn), its(:auth_key), its(:amazon_address), its(:customer_address), its(:virtual_interface_state), its(:customer_router_config), its(:virtual_gateway_id)
1152
- ## <a name="nat_gateway">nat_gateway</a>
1153
-
1154
- NatGateway resource type.
1155
1152
 
1156
- ### exist
1153
+ ### have_network_acl
1157
1154
 
1158
1155
  ```ruby
1159
- describe nat_gateway('nat-7ff7777f') do
1160
- it { should exist }
1156
+ describe vpc('vpc-ab123cde') do
1157
+ it { should have_network_acl('acl-1abc2d3e') }
1158
+ it { should have_network_acl('my-network-acl') }
1161
1159
  end
1162
1160
  ```
1163
1161
 
1164
1162
 
1165
- ### be_pending, be_failed, be_available, be_deleting, be_deleted
1163
+ ### have_route_table
1166
1164
 
1167
1165
  ```ruby
1168
- describe nat_gateway('nat-7ff7777f') do
1169
- it { should be_available }
1166
+ describe vpc('vpc-ab123cde') do
1167
+ it { should have_network_acl('acl-1abc2d3e') }
1168
+ it { should have_network_acl('my-network-acl') }
1170
1169
  end
1171
1170
  ```
1172
1171
 
1173
1172
 
1174
- ### have_eip
1173
+ ### its(:vpc_id), its(:state), its(:cidr_block), its(:dhcp_options_id), its(:instance_tenancy), its(:is_default)
1174
+ ### :unlock: Advanced use
1175
+
1176
+ `vpc` can use `Aws::EC2::Vpc` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Vpc.html).
1175
1177
 
1176
1178
  ```ruby
1177
- describe nat_gateway('nat-7ff7777f') do
1178
- it { should have_eip('123.0.456.789') }
1179
+ describe vpc('my-vpc') do
1180
+ its('route_tables.first.route_table_id') { should eq 'rtb-a12bcd34' }
1179
1181
  end
1180
1182
  ```
1181
1183
 
1182
-
1183
- ### belong_to_vpc
1184
+ or
1184
1185
 
1185
1186
  ```ruby
1186
- describe nat_gateway('nat-7ff7777f') do
1187
- it { should belong_to_vpc('my-vpc') }
1187
+ describe vpc('my-vpc') do
1188
+ its('resource.route_tables.first.route_table_id') { should eq 'rtb-a12bcd34' }
1188
1189
  end
1189
1190
  ```
1190
-
1191
- ### its(:vpc_id), its(:subnet_id), its(:nat_gateway_id), its(:create_time), its(:delete_time), its(:state), its(:failure_code), its(:failure_message)