awspec 0.28.0 → 0.28.1

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 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)