awspec 0.22.1 → 0.23.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -0
  3. data/doc/_resource_types/autoscaling_group.md +23 -0
  4. data/doc/_resource_types/cloudwatch_alarm.md +39 -0
  5. data/doc/_resource_types/directconnect_virtual_interface.md +30 -0
  6. data/doc/_resource_types/ebs.md +23 -0
  7. data/doc/_resource_types/ec2.md +61 -1
  8. data/doc/_resource_types/elasticache.md +47 -0
  9. data/doc/_resource_types/elasticache_cache_parameter_group.md +8 -0
  10. data/doc/_resource_types/elb.md +40 -0
  11. data/doc/_resource_types/iam_group.md +24 -0
  12. data/doc/_resource_types/iam_policy.md +39 -0
  13. data/doc/_resource_types/iam_role.md +16 -0
  14. data/doc/_resource_types/iam_user.md +24 -0
  15. data/doc/_resource_types/lambda.md +8 -0
  16. data/doc/_resource_types/network_acl.md +23 -2
  17. data/doc/_resource_types/rds.md +66 -0
  18. data/doc/_resource_types/rds_db_parameter_group.md +7 -0
  19. data/doc/_resource_types/route53_hosted_zone.md +25 -0
  20. data/doc/_resource_types/route_table.md +16 -0
  21. data/doc/_resource_types/s3.md +27 -0
  22. data/doc/_resource_types/security_group.md +8 -0
  23. data/doc/_resource_types/ses_identity.md +17 -0
  24. data/doc/_resource_types/subnet.md +15 -0
  25. data/doc/_resource_types/vpc.md +33 -0
  26. data/doc/resource_types.md +519 -72
  27. data/lib/awspec/generator/doc/type/directconnect_virtual_interface.rb +6 -2
  28. data/lib/awspec/generator/doc/type/ebs.rb +4 -2
  29. data/lib/awspec/generator/doc/type/ec2.rb +6 -2
  30. data/lib/awspec/generator/doc/type/elasticache.rb +7 -2
  31. data/lib/awspec/generator/doc/type/elb.rb +1 -1
  32. data/lib/awspec/generator/doc/type/network_acl.rb +4 -1
  33. data/lib/awspec/generator/doc/type/rds.rb +7 -2
  34. data/lib/awspec/generator/doc/type/s3.rb +1 -1
  35. data/lib/awspec/generator/doc/type/subnet.rb +4 -2
  36. data/lib/awspec/generator/doc/type/vpc.rb +4 -2
  37. data/lib/awspec/generator/template.rb +9 -4
  38. data/lib/awspec/helper/finder/s3.rb +6 -0
  39. data/lib/awspec/stub/iam_group.rb +9 -9
  40. data/lib/awspec/stub/iam_policy.rb +27 -0
  41. data/lib/awspec/stub/s3.rb +28 -0
  42. data/lib/awspec/type/directconnect_virtual_interface.rb +2 -2
  43. data/lib/awspec/type/ebs.rb +2 -2
  44. data/lib/awspec/type/ec2.rb +2 -2
  45. data/lib/awspec/type/elasticache.rb +2 -2
  46. data/lib/awspec/type/rds.rb +2 -2
  47. data/lib/awspec/type/s3.rb +19 -0
  48. data/lib/awspec/type/subnet.rb +2 -2
  49. data/lib/awspec/type/vpc.rb +2 -2
  50. data/lib/awspec/version.rb +1 -1
  51. metadata +14 -2
@@ -1,3 +1,11 @@
1
+ ### exist
2
+
3
+ ```ruby
4
+ describe lambda('my-lambda-function-name') do
5
+ it { should exist }
6
+ end
7
+ ```
8
+
1
9
  ### have_event_source
2
10
 
3
11
  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) )
@@ -1,10 +1,31 @@
1
- ### its(:inbound), its(:outbound)
1
+ ### exist
2
2
 
3
3
  ```ruby
4
4
  describe network_acl('my-network-acl') do
5
5
  it { should exist }
6
- it { should belong_to_vpc('my-vpc') }
6
+ end
7
+ ```
8
+
9
+ ### have_subnet
10
+
11
+ ```ruby
12
+ describe network_acl('my-network-acl') do
7
13
  it { should have_subnet('my-subnet') }
14
+ end
15
+ ```
16
+
17
+ ### belong_to_vpc
18
+
19
+ ```ruby
20
+ describe network_acl('my-network-acl') do
21
+ it { should belong_to_vpc('my-vpc') }
22
+ end
23
+ ```
24
+
25
+ ### its(:inbound), its(:outbound), its(:inbound_entries_count), its(:outbound_entries_count)
26
+
27
+ ```ruby
28
+ describe network_acl('my-network-acl') do
8
29
  its(:inbound) { should be_allowed(80).protocol('tcp').source('123.0.456.789/32') }
9
30
  its(:inbound) { should be_denied.rule_number('*').source('0.0.0.0/0') }
10
31
  its(:outbound) { should be_allowed.protocol('ALL').source('0.0.0.0/0') }
@@ -0,0 +1,66 @@
1
+ ### exist
2
+
3
+ ```ruby
4
+ describe rds('my-rds') do
5
+ it { should exist }
6
+ end
7
+ ```
8
+
9
+ ### 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
10
+
11
+ ```ruby
12
+ describe rds('my-rds') do
13
+ it { should be_available }
14
+ end
15
+ ```
16
+
17
+ ### have_db_parameter_group
18
+
19
+ ```ruby
20
+ describe rds('my-rds') do
21
+ it { should belong_to_db_subnet_group('my-db-subnet-group') }
22
+ end
23
+ ```
24
+
25
+ ### have_option_group
26
+
27
+ ```ruby
28
+ describe rds('my-rds') do
29
+ it { should have_option_group('default:mysql-5-6') }
30
+ end
31
+ ```
32
+
33
+ ### have_security_group
34
+
35
+ ```ruby
36
+ describe rds('my-rds') do
37
+ it { should have_security_group('sg-5a6b7cd8') }
38
+ it { should have_security_group('my-db-sg') }
39
+ end
40
+ ```
41
+
42
+ ### belong_to_db_subnet_group
43
+
44
+ ```ruby
45
+ describe rds('my-rds') do
46
+ it { should belong_to_db_subnet_group('my-db-subnet-group') }
47
+ end
48
+ ```
49
+
50
+ ### belong_to_subnet
51
+
52
+ ```ruby
53
+ describe rds('my-rds') do
54
+ it { should belong_to_subnet('subnet-8901b123') }
55
+ it { should belong_to_subnet('db-subnet-a') }
56
+ end
57
+ ```
58
+
59
+ ### belong_to_vpc
60
+
61
+ ```ruby
62
+ describe rds('my-rds') do
63
+ it { should belong_to_vpc('vpc-ab123cde') }
64
+ it { should belong_to_vpc('my-vpc') }
65
+ end
66
+ ```
@@ -6,3 +6,10 @@ describe rds_db_parameter_group('my-rds-db-parameter-group') do
6
6
  its(:innodb_buffer_pool_size) { '{DBInstanceClassMemory*3/4}' }
7
7
  end
8
8
  ```
9
+ ### exist
10
+
11
+ ```ruby
12
+ describe rds_db_parameter_group('my-rds-db-parameter-group') do
13
+ it { should exist }
14
+ end
15
+ ```
@@ -0,0 +1,25 @@
1
+ ### exist
2
+
3
+ ```ruby
4
+ describe route53_hosted_zone('example.com.') do
5
+ it { should exist }
6
+ end
7
+ ```
8
+
9
+ ### have_record_set
10
+
11
+ ```ruby
12
+ describe route53_hosted_zone('example.com.') do
13
+ its(:resource_record_set_count) { should eq 6 }
14
+ it { should have_record_set('example.com.').a('123.456.7.890') }
15
+ it { should have_record_set('*.example.com.').cname('example.com') }
16
+ it { should have_record_set('example.com.').mx('10 mail.example.com') }
17
+ it { should have_record_set('mail.example.com.').a('123.456.7.890').ttl(3600) }
18
+ ns = 'ns-123.awsdns-45.net.
19
+ ns-6789.awsdns-01.org.
20
+ ns-2345.awsdns-67.co.uk.
21
+ ns-890.awsdns-12.com.'
22
+ it { should have_record_set('example.com.').ns(ns) }
23
+ it { should have_record_set('s3.example.com.').alias('s3-website-us-east-1.amazonaws.com.', 'Z2ABCDEFGHIJKL') }
24
+ end
25
+ ```
@@ -1,3 +1,11 @@
1
+ ### exist
2
+
3
+ ```ruby
4
+ describe route_table('my-route-table') do
5
+ it { should exist }
6
+ end
7
+ ```
8
+
1
9
  ### have_route
2
10
 
3
11
  ```ruby
@@ -8,3 +16,11 @@ describe route_table('my-route-table') do
8
16
  it { should have_route('192.168.2.0/24').target(vpc_peering_connection: 'my-pcx') }
9
17
  end
10
18
  ```
19
+
20
+ ### have_subnet
21
+
22
+ ```ruby
23
+ describe route_table('my-route-table') do
24
+ it { should have_subnet('my-subnet') }
25
+ end
26
+ ```
@@ -0,0 +1,27 @@
1
+ ### exist
2
+
3
+ ```ruby
4
+ describe s3('my-bucket') do
5
+ it { should exist }
6
+ end
7
+ ```
8
+
9
+ ### have_acl_grant
10
+
11
+ ```ruby
12
+ describe s3('my-bucket') do
13
+ its(:acl_grants_count) { should eq 3 }
14
+ it { should have_acl_grant(grantee: 'my-bucket-owner', permission: 'FULL_CONTROL') }
15
+ it { should have_acl_grant(grantee: 'my-bucket-write-only', permission: 'WRITE') }
16
+ it { should have_acl_grant(grantee: 'my-bucket-read-only', permission: 'READ') }
17
+ its(:acl_owner) { should eq 'my-bucket-owner' }
18
+ end
19
+ ```
20
+
21
+ ### have_object
22
+
23
+ ```ruby
24
+ describe s3('my-bucket') do
25
+ it { should have_object('path/to/object') }
26
+ end
27
+ ```
@@ -1,3 +1,11 @@
1
+ ### exist
2
+
3
+ ```ruby
4
+ describe security_group('my-security-group-name') do
5
+ it { should exist }
6
+ end
7
+ ```
8
+
1
9
  ### its(:inbound), its(:outbound)
2
10
 
3
11
  ```ruby
@@ -0,0 +1,17 @@
1
+ ### exist
2
+
3
+ ```ruby
4
+ describe ses_identity('example.com') do
5
+ it { should exist }
6
+ end
7
+ ```
8
+
9
+ ### have_dkim_tokens
10
+
11
+ ### have_identity_policy
12
+
13
+ ```ruby
14
+ describe ses_identity('example.com') do
15
+ it { should have_identity_policy('my-identity-policy-name') }
16
+ end
17
+ ```
@@ -0,0 +1,15 @@
1
+ ### exist
2
+
3
+ ```ruby
4
+ describe subnet('my-subnet') do
5
+ it { should exist }
6
+ end
7
+ ```
8
+
9
+ ### be_available, be_pending
10
+
11
+ ```ruby
12
+ describe subnet('my-subnet') do
13
+ it { should be_available }
14
+ end
15
+ ```
@@ -0,0 +1,33 @@
1
+ ### exist
2
+
3
+ ```ruby
4
+ describe vpc('my-vpc') do
5
+ it { should exist }
6
+ end
7
+ ```
8
+
9
+ ### be_available, be_pending
10
+
11
+ ```ruby
12
+ describe vpc('vpc-ab123cde') do
13
+ it { should be_available }
14
+ end
15
+ ```
16
+
17
+ ### have_network_acl
18
+
19
+ ```ruby
20
+ describe vpc('vpc-ab123cde') do
21
+ it { should have_network_acl('acl-1abc2d3e') }
22
+ it { should have_network_acl('my-network-acl') }
23
+ end
24
+ ```
25
+
26
+ ### have_route_table
27
+
28
+ ```ruby
29
+ describe vpc('vpc-ab123cde') do
30
+ it { should have_network_acl('acl-1abc2d3e') }
31
+ it { should have_network_acl('my-network-acl') }
32
+ end
33
+ ```
@@ -39,9 +39,14 @@ end
39
39
 
40
40
  ### be_disabled_api_termination
41
41
 
42
- ### be_pending
42
+ ```ruby
43
+ describe ec2('my-ec2') do
44
+ it { should be_disabled_api_termination }
45
+ end
46
+ ```
43
47
 
44
- ### be_running
48
+
49
+ ### be_pending, be_running, be_shutting_down, be_terminated, be_stopping, be_stopped
45
50
 
46
51
  ```ruby
47
52
  describe ec2('my-ec2') do
@@ -49,24 +54,55 @@ describe ec2('my-ec2') do
49
54
  end
50
55
  ```
51
56
 
52
- ### be_shutting_down
53
-
54
- ### be_stopped
55
57
 
56
- ### be_stopping
58
+ ### have_ebs
57
59
 
58
- ### be_terminated
60
+ ```ruby
61
+ describe ec2('my-ec2') do
62
+ it { should have_ebs('vol-123a123b') }
63
+ it { should have_ebs('my-volume') }
64
+ end
65
+ ```
59
66
 
60
- ### have_ebs
61
67
 
62
68
  ### have_eip
63
69
 
70
+ ```ruby
71
+ describe ec2('my-ec2') do
72
+ it { should have_eip('123.0.456.789') }
73
+ end
74
+ ```
75
+
76
+
64
77
  ### have_security_group
65
78
 
79
+ ```ruby
80
+ describe ec2('my-ec2') do
81
+ it { should have_security_group('my-security-group-name') }
82
+ it { should have_security_group('sg-1a2b3cd4') }
83
+ end
84
+ ```
85
+
86
+
66
87
  ### belong_to_subnet
67
88
 
89
+ ```ruby
90
+ describe ec2('my-ec2') do
91
+ it { should belong_to_subnet('subnet-1234a567') }
92
+ it { should belong_to_subnet('my-subnet') }
93
+ end
94
+ ```
95
+
96
+
68
97
  ### belong_to_vpc
69
98
 
99
+ ```ruby
100
+ describe ec2('my-ec2') do
101
+ it { should belong_to_vpc('vpc-ab123cde') }
102
+ it { should belong_to_vpc('my-vpc') }
103
+ end
104
+ ```
105
+
70
106
  #### 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)
71
107
  ## <a name="rds">rds</a>
72
108
 
@@ -74,56 +110,78 @@ RDS resource type.
74
110
 
75
111
  ### exist
76
112
 
77
- ### be_available
78
-
79
- ### be_backing_up
80
-
81
- ### be_creating
82
-
83
- ### be_deleting
84
-
85
- ### be_failed
113
+ ```ruby
114
+ describe rds('my-rds') do
115
+ it { should exist }
116
+ end
117
+ ```
86
118
 
87
- ### be_inaccessible_encryption_credentials
88
119
 
89
- ### be_incompatible_credentials
120
+ ### 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
90
121
 
91
- ### be_incompatible_network
122
+ ```ruby
123
+ describe rds('my-rds') do
124
+ it { should be_available }
125
+ end
126
+ ```
92
127
 
93
- ### be_incompatible_option_group
94
128
 
95
- ### be_incompatible_parameters
129
+ ### have_db_parameter_group
96
130
 
97
- ### be_incompatible_restore
131
+ ```ruby
132
+ describe rds('my-rds') do
133
+ it { should belong_to_db_subnet_group('my-db-subnet-group') }
134
+ end
135
+ ```
98
136
 
99
- ### be_maintenance
100
137
 
101
- ### be_modifying
138
+ ### have_option_group
102
139
 
103
- ### be_rebooting
140
+ ```ruby
141
+ describe rds('my-rds') do
142
+ it { should have_option_group('default:mysql-5-6') }
143
+ end
144
+ ```
104
145
 
105
- ### be_renaming
106
146
 
107
- ### be_resetting_master_credentials
147
+ ### have_security_group
108
148
 
109
- ### be_restore_error
149
+ ```ruby
150
+ describe rds('my-rds') do
151
+ it { should have_security_group('sg-5a6b7cd8') }
152
+ it { should have_security_group('my-db-sg') }
153
+ end
154
+ ```
110
155
 
111
- ### be_storage_full
112
156
 
113
- ### be_upgrading
157
+ ### belong_to_db_subnet_group
114
158
 
115
- ### have_db_parameter_group
159
+ ```ruby
160
+ describe rds('my-rds') do
161
+ it { should belong_to_db_subnet_group('my-db-subnet-group') }
162
+ end
163
+ ```
116
164
 
117
- ### have_option_group
118
165
 
119
- ### have_security_group
166
+ ### belong_to_subnet
120
167
 
121
- ### belong_to_db_subnet_group
168
+ ```ruby
169
+ describe rds('my-rds') do
170
+ it { should belong_to_subnet('subnet-8901b123') }
171
+ it { should belong_to_subnet('db-subnet-a') }
172
+ end
173
+ ```
122
174
 
123
- ### belong_to_subnet
124
175
 
125
176
  ### belong_to_vpc
126
177
 
178
+ ```ruby
179
+ describe rds('my-rds') do
180
+ it { should belong_to_vpc('vpc-ab123cde') }
181
+ it { should belong_to_vpc('my-vpc') }
182
+ end
183
+ ```
184
+
127
185
  #### 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)
128
186
  ## <a name="rds_db_parameter_group">rds_db_parameter_group</a>
129
187
 
@@ -138,6 +196,12 @@ end
138
196
 
139
197
  ### exist
140
198
 
199
+ ```ruby
200
+ describe rds_db_parameter_group('my-rds-db-parameter-group') do
201
+ it { should exist }
202
+ end
203
+ ```
204
+
141
205
 
142
206
  ## <a name="security_group">security_group</a>
143
207
 
@@ -145,6 +209,13 @@ SecurityGroup resource type.
145
209
 
146
210
  ### exist
147
211
 
212
+ ```ruby
213
+ describe security_group('my-security-group-name') do
214
+ it { should exist }
215
+ end
216
+ ```
217
+
218
+
148
219
  ### its(:inbound), its(:outbound)
149
220
 
150
221
  ```ruby
@@ -163,14 +234,41 @@ VPC resource type.
163
234
 
164
235
  ### exist
165
236
 
166
- ### be_available
237
+ ```ruby
238
+ describe vpc('my-vpc') do
239
+ it { should exist }
240
+ end
241
+ ```
242
+
243
+
244
+ ### be_available, be_pending
245
+
246
+ ```ruby
247
+ describe vpc('vpc-ab123cde') do
248
+ it { should be_available }
249
+ end
250
+ ```
167
251
 
168
- ### be_pending
169
252
 
170
253
  ### have_network_acl
171
254
 
255
+ ```ruby
256
+ describe vpc('vpc-ab123cde') do
257
+ it { should have_network_acl('acl-1abc2d3e') }
258
+ it { should have_network_acl('my-network-acl') }
259
+ end
260
+ ```
261
+
262
+
172
263
  ### have_route_table
173
264
 
265
+ ```ruby
266
+ describe vpc('vpc-ab123cde') do
267
+ it { should have_network_acl('acl-1abc2d3e') }
268
+ it { should have_network_acl('my-network-acl') }
269
+ end
270
+ ```
271
+
174
272
  #### its(:vpc_id), its(:state), its(:cidr_block), its(:dhcp_options_id), its(:instance_tenancy), its(:is_default)
175
273
  ## <a name="s3">s3</a>
176
274
 
@@ -178,17 +276,66 @@ S3 resource type.
178
276
 
179
277
  ### exist
180
278
 
279
+ ```ruby
280
+ describe s3('my-bucket') do
281
+ it { should exist }
282
+ end
283
+ ```
284
+
285
+
286
+ ### have_acl_grant
287
+
288
+ ```ruby
289
+ describe s3('my-bucket') do
290
+ its(:acl_grants_count) { should eq 3 }
291
+ it { should have_acl_grant(grantee: 'my-bucket-owner', permission: 'FULL_CONTROL') }
292
+ it { should have_acl_grant(grantee: 'my-bucket-write-only', permission: 'WRITE') }
293
+ it { should have_acl_grant(grantee: 'my-bucket-read-only', permission: 'READ') }
294
+ its(:acl_owner) { should eq 'my-bucket-owner' }
295
+ end
296
+ ```
297
+
298
+
181
299
  ### have_object
182
300
 
183
- #### its(:name), its(:creation_date)
301
+ ```ruby
302
+ describe s3('my-bucket') do
303
+ it { should have_object('path/to/object') }
304
+ end
305
+ ```
306
+
307
+ #### its(:acl_grants_count), its(:acl_owner), its(:name), its(:creation_date)
184
308
  ## <a name="route53_hosted_zone">route53_hosted_zone</a>
185
309
 
186
310
  Route53HostedZone resource type.
187
311
 
188
312
  ### exist
189
313
 
314
+ ```ruby
315
+ describe route53_hosted_zone('example.com.') do
316
+ it { should exist }
317
+ end
318
+ ```
319
+
320
+
190
321
  ### have_record_set
191
322
 
323
+ ```ruby
324
+ describe route53_hosted_zone('example.com.') do
325
+ its(:resource_record_set_count) { should eq 6 }
326
+ it { should have_record_set('example.com.').a('123.456.7.890') }
327
+ it { should have_record_set('*.example.com.').cname('example.com') }
328
+ it { should have_record_set('example.com.').mx('10 mail.example.com') }
329
+ it { should have_record_set('mail.example.com.').a('123.456.7.890').ttl(3600) }
330
+ ns = 'ns-123.awsdns-45.net.
331
+ ns-6789.awsdns-01.org.
332
+ ns-2345.awsdns-67.co.uk.
333
+ ns-890.awsdns-12.com.'
334
+ it { should have_record_set('example.com.').ns(ns) }
335
+ it { should have_record_set('s3.example.com.').alias('s3-website-us-east-1.amazonaws.com.', 'Z2ABCDEFGHIJKL') }
336
+ end
337
+ ```
338
+
192
339
  #### its(:id), its(:name), its(:caller_reference), its(:config), its(:resource_record_set_count)
193
340
  ## <a name="autoscaling_group">autoscaling_group</a>
194
341
 
@@ -196,10 +343,30 @@ AutoscalingGroup resource type.
196
343
 
197
344
  ### exist
198
345
 
346
+ ```ruby
347
+ describe autoscaling_group('my-auto-scaling-group') do
348
+ it { should exist }
349
+ end
350
+ ```
351
+
352
+
199
353
  ### have_ec2
200
354
 
355
+ ```ruby
356
+ describe autoscaling_group('my-auto-scaling-group') do
357
+ it { should have_ec2('my-ec2') }
358
+ end
359
+ ```
360
+
361
+
201
362
  ### have_elb
202
363
 
364
+ ```ruby
365
+ describe autoscaling_group('my-auto-scaling-group') do
366
+ it { should have_elb('my-elb') }
367
+ end
368
+ ```
369
+
203
370
  #### 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)
204
371
  ## <a name="subnet">subnet</a>
205
372
 
@@ -207,9 +374,20 @@ Subnet resource type.
207
374
 
208
375
  ### exist
209
376
 
210
- ### be_available
377
+ ```ruby
378
+ describe subnet('my-subnet') do
379
+ it { should exist }
380
+ end
381
+ ```
382
+
211
383
 
212
- ### be_pending
384
+ ### be_available, be_pending
385
+
386
+ ```ruby
387
+ describe subnet('my-subnet') do
388
+ it { should be_available }
389
+ end
390
+ ```
213
391
 
214
392
  #### 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)
215
393
  ## <a name="route_table">route_table</a>
@@ -218,6 +396,13 @@ RouteTable resource type.
218
396
 
219
397
  ### exist
220
398
 
399
+ ```ruby
400
+ describe route_table('my-route-table') do
401
+ it { should exist }
402
+ end
403
+ ```
404
+
405
+
221
406
  ### have_route
222
407
 
223
408
  ```ruby
@@ -229,8 +414,15 @@ describe route_table('my-route-table') do
229
414
  end
230
415
  ```
231
416
 
417
+
232
418
  ### have_subnet
233
419
 
420
+ ```ruby
421
+ describe route_table('my-route-table') do
422
+ it { should have_subnet('my-subnet') }
423
+ end
424
+ ```
425
+
234
426
  #### its(:route_table_id), its(:vpc_id)
235
427
  ## <a name="ebs">ebs</a>
236
428
 
@@ -238,19 +430,29 @@ EBS resource type.
238
430
 
239
431
  ### exist
240
432
 
241
- ### be_attached_to
433
+ ```ruby
434
+ describe ebs('my-volume') do
435
+ it { should exist }
436
+ end
437
+ ```
242
438
 
243
- ### be_available
244
439
 
245
- ### be_creating
440
+ ### be_attached_to
246
441
 
247
- ### be_deleted
442
+ ```ruby
443
+ describe ebs('my-volume') do
444
+ it { should be_attached_to('my-ec2') }
445
+ end
446
+ ```
248
447
 
249
- ### be_deleting
250
448
 
251
- ### be_error
449
+ ### be_creating, be_available, be_in_use, be_deleting, be_deleted, be_error
252
450
 
253
- ### be_in_use
451
+ ```ruby
452
+ describe ebs('my-volume') do
453
+ it { should be_in_use }
454
+ end
455
+ ```
254
456
 
255
457
  #### 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)
256
458
  ## <a name="elb">elb</a>
@@ -259,8 +461,22 @@ ELB resource type.
259
461
 
260
462
  ### exist
261
463
 
464
+ ```ruby
465
+ describe elb('my-elb') do
466
+ it { should exist }
467
+ end
468
+ ```
469
+
470
+
262
471
  ### have_ec2
263
472
 
473
+ ```ruby
474
+ describe elb('my-elb') do
475
+ it { should have_ec2('my-ec2') }
476
+ end
477
+ ```
478
+
479
+
264
480
  ### have_listener
265
481
 
266
482
  http://docs.aws.amazon.com/en_us/ElasticLoadBalancing/latest/DeveloperGuide/elb-listener-config.html
@@ -271,14 +487,33 @@ describe elb('my-elb') do
271
487
  end
272
488
  ```
273
489
 
490
+
274
491
  ### have_security_group
275
492
 
493
+ ```ruby
494
+ describe elb('my-elb') do
495
+ it { should have_security_group('my-lb-security-group-tag-name') }
496
+ end
497
+ ```
498
+
499
+
276
500
  ### have_subnet
277
501
 
278
- ### belong_to_subnet
502
+ ```ruby
503
+ describe elb('my-elb') do
504
+ it { should have_subnet('my-subnet') }
505
+ end
506
+ ```
507
+
279
508
 
280
509
  ### belong_to_vpc
281
510
 
511
+ ```ruby
512
+ describe elb('my-elb') do
513
+ it { should belong_to_vpc('my-vpc') }
514
+ end
515
+ ```
516
+
282
517
  #### 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)
283
518
  ## <a name="lambda">lambda</a>
284
519
 
@@ -286,6 +521,13 @@ Lambda resource type.
286
521
 
287
522
  ### exist
288
523
 
524
+ ```ruby
525
+ describe lambda('my-lambda-function-name') do
526
+ it { should exist }
527
+ end
528
+ ```
529
+
530
+
289
531
  ### have_event_source
290
532
 
291
533
  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) )
@@ -297,6 +539,13 @@ IamUser resource type.
297
539
 
298
540
  ### exist
299
541
 
542
+ ```ruby
543
+ describe iam_user('my-iam-user') do
544
+ it { should exist }
545
+ end
546
+ ```
547
+
548
+
300
549
  ### be_allowed_action
301
550
 
302
551
  ```ruby
@@ -306,10 +555,24 @@ describe iam_user('my-iam-user') do
306
555
  end
307
556
  ```
308
557
 
558
+
309
559
  ### have_iam_policy
310
560
 
561
+ ```ruby
562
+ describe iam_user('my-iam-user') do
563
+ it { should have_iam_policy('ReadOnlyAccess') }
564
+ end
565
+ ```
566
+
567
+
311
568
  ### belong_to_iam_group
312
569
 
570
+ ```ruby
571
+ describe iam_user('my-iam-user') do
572
+ it { should belong_to_iam_group('my-iam-group') }
573
+ end
574
+ ```
575
+
313
576
  #### its(:path), its(:user_name), its(:user_id), its(:arn), its(:create_date), its(:password_last_used)
314
577
  ## <a name="iam_group">iam_group</a>
315
578
 
@@ -317,6 +580,13 @@ IamGroup resource type.
317
580
 
318
581
  ### exist
319
582
 
583
+ ```ruby
584
+ describe iam_group('my-iam-group') do
585
+ it { should exist }
586
+ end
587
+ ```
588
+
589
+
320
590
  ### be_allowed_action
321
591
 
322
592
  ```ruby
@@ -326,10 +596,24 @@ describe iam_group('my-iam-group') do
326
596
  end
327
597
  ```
328
598
 
599
+
329
600
  ### have_iam_policy
330
601
 
602
+ ```ruby
603
+ describe iam_group('my-iam-group') do
604
+ it { should have_iam_policy('ReadOnlyAccess') }
605
+ end
606
+ ```
607
+
608
+
331
609
  ### have_iam_user
332
610
 
611
+ ```ruby
612
+ describe iam_group('my-iam-group') do
613
+ it { should have_iam_user('my-iam-user') }
614
+ end
615
+ ```
616
+
333
617
  #### its(:path), its(:group_name), its(:group_id), its(:arn), its(:create_date)
334
618
  ## <a name="iam_role">iam_role</a>
335
619
 
@@ -337,6 +621,13 @@ IamRole resource type.
337
621
 
338
622
  ### exist
339
623
 
624
+ ```ruby
625
+ describe iam_role('my-iam-role') do
626
+ it { should exist }
627
+ end
628
+ ```
629
+
630
+
340
631
  ### be_allowed_action
341
632
 
342
633
  ```ruby
@@ -346,8 +637,15 @@ describe iam_role('my-iam-role') do
346
637
  end
347
638
  ```
348
639
 
640
+
349
641
  ### have_iam_policy
350
642
 
643
+ ```ruby
644
+ describe iam_role('my-iam-role') do
645
+ it { should have_iam_policy('ReadOnlyAccess') }
646
+ end
647
+ ```
648
+
351
649
  #### its(:path), its(:role_name), its(:role_id), its(:arn), its(:create_date), its(:assume_role_policy_document)
352
650
  ## <a name="iam_policy">iam_policy</a>
353
651
 
@@ -355,14 +653,48 @@ IamPolicy resource type.
355
653
 
356
654
  ### exist
357
655
 
656
+ ```ruby
657
+ describe iam_policy('my-iam-policy') do
658
+ it { should exist }
659
+ end
660
+ ```
661
+
662
+
358
663
  ### be_attachable
359
664
 
665
+ ```ruby
666
+ describe iam_policy('my-iam-policy') do
667
+ it { should be_attachable }
668
+ end
669
+ ```
670
+
671
+
360
672
  ### be_attached_to_group
361
673
 
674
+ ```ruby
675
+ describe iam_policy('my-iam-policy') do
676
+ it { should be_attached_to_group('my-iam-group') }
677
+ end
678
+ ```
679
+
680
+
362
681
  ### be_attached_to_role
363
682
 
683
+ ```ruby
684
+ describe iam_policy('my-iam-policy') do
685
+ it { should be_attached_to_role('HelloIAmGodRole') }
686
+ end
687
+ ```
688
+
689
+
364
690
  ### be_attached_to_user
365
691
 
692
+ ```ruby
693
+ describe iam_policy('my-iam-policy') do
694
+ it { should be_attached_to_policy('my-iam-policy') }
695
+ end
696
+ ```
697
+
366
698
  #### 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)
367
699
  ## <a name="elasticache">elasticache</a>
368
700
 
@@ -370,32 +702,57 @@ Elasticache resource type.
370
702
 
371
703
  ### exist
372
704
 
373
- ### be_available
705
+ ```ruby
706
+ describe elasticache('my-rep-group-001') do
707
+ it { should exist }
708
+ end
709
+ ```
374
710
 
375
- ### be_creating
376
711
 
377
- ### be_deleted
712
+ ### be_available, be_creating, be_deleted, be_deleting, be_incompatible_network, be_modifying, be_rebooting_cache_cluster_nodes, be_restore_failed, be_snapshotting
378
713
 
379
- ### be_deleting
714
+ ```ruby
715
+ describe elasticache('my-rep-group-001') do
716
+ it { should be_available }
717
+ end
718
+ ```
380
719
 
381
- ### be_incompatible_network
382
720
 
383
- ### be_modifying
721
+ ### have_cache_parameter_group
384
722
 
385
- ### be_rebooting_cache_cluster_nodes
723
+ ```ruby
724
+ describe elasticache('my-rep-group-001') do
725
+ it { should have_cache_parameter_group('my-cache-parameter-group') }
726
+ end
727
+ ```
386
728
 
387
- ### be_restore_failed
388
729
 
389
- ### be_snapshotting
730
+ ### belong_to_cache_subnet_group
390
731
 
391
- ### have_cache_parameter_group
732
+ ```ruby
733
+ describe elasticache('my-rep-group-001') do
734
+ it { should belong_to_cache_subnet_group('my-cache-subnet-group') }
735
+ end
736
+ ```
392
737
 
393
- ### belong_to_cache_subnet_group
394
738
 
395
739
  ### belong_to_replication_group
396
740
 
741
+ ```ruby
742
+ describe elasticache('my-rep-group-001') do
743
+ it { should belong_to_replication_group('my-rep-group') }
744
+ end
745
+ ```
746
+
747
+
397
748
  ### belong_to_vpc
398
749
 
750
+ ```ruby
751
+ describe elasticache('my-rep-group-001') do
752
+ it { should belong_to_vpc('my-vpc') }
753
+ end
754
+ ```
755
+
399
756
  #### 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)
400
757
  ## <a name="elasticache_cache_parameter_group">elasticache_cache_parameter_group</a>
401
758
 
@@ -409,8 +766,15 @@ describe elasticache_cache_parameter_group('my-cache-parameter-group') do
409
766
  end
410
767
  ```
411
768
 
769
+
412
770
  ### exist
413
771
 
772
+ ```ruby
773
+ describe elasticache_cache_parameter_group('my-cache-parameter-group') do
774
+ it { should exist }
775
+ end
776
+ ```
777
+
414
778
 
415
779
  ## <a name="cloudwatch_alarm">cloudwatch_alarm</a>
416
780
 
@@ -418,14 +782,48 @@ CloudwatchAlarm resource type.
418
782
 
419
783
  ### exist
420
784
 
785
+ ```ruby
786
+ describe cloudwatch_alarm('my-cloudwatch-alarm') do
787
+ it { should exist }
788
+ end
789
+ ```
790
+
791
+
421
792
  ### have_alarm_action
422
793
 
794
+ ```ruby
795
+ describe cloudwatch_alarm('my-cloudwatch-alarm') do
796
+ it { should have_alarm_action('arn:aws:sns:ap-northeast-1:1234567890:sns_alert') }
797
+ end
798
+ ```
799
+
800
+
423
801
  ### have_insufficient_data_action
424
802
 
803
+ ```ruby
804
+ describe cloudwatch_alarm('my-cloudwatch-alarm') do
805
+ it { should have_insufficient_data_action('arn:aws:sns:ap-northeast-1:1234567890:sns_alert') }
806
+ end
807
+ ```
808
+
809
+
425
810
  ### have_ok_action
426
811
 
812
+ ```ruby
813
+ describe cloudwatch_alarm('my-cloudwatch-alarm') do
814
+ it { should have_ok_action('arn:aws:sns:ap-northeast-1:1234567890:sns_alert') }
815
+ end
816
+ ```
817
+
818
+
427
819
  ### belong_to_metric
428
820
 
821
+ ```ruby
822
+ describe cloudwatch_alarm('my-cloudwatch-alarm') do
823
+ it { should belong_to_metric('NumberOfProcesses').namespace('my-cloudwatch-namespace') }
824
+ end
825
+ ```
826
+
429
827
  #### 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)
430
828
  ## <a name="ses_identity">ses_identity</a>
431
829
 
@@ -433,10 +831,24 @@ SesIdentity resource type.
433
831
 
434
832
  ### exist
435
833
 
834
+ ```ruby
835
+ describe ses_identity('example.com') do
836
+ it { should exist }
837
+ end
838
+ ```
839
+
840
+
436
841
  ### have_dkim_tokens
437
842
 
843
+
438
844
  ### have_identity_policy
439
845
 
846
+ ```ruby
847
+ describe ses_identity('example.com') do
848
+ it { should have_identity_policy('my-identity-policy-name') }
849
+ end
850
+ ```
851
+
440
852
  #### 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)
441
853
  ## <a name="network_acl">network_acl</a>
442
854
 
@@ -444,15 +856,35 @@ NetworkAcl resource type.
444
856
 
445
857
  ### exist
446
858
 
859
+ ```ruby
860
+ describe network_acl('my-network-acl') do
861
+ it { should exist }
862
+ end
863
+ ```
864
+
865
+
447
866
  ### have_subnet
448
867
 
449
- ### its(:inbound), its(:outbound)
868
+ ```ruby
869
+ describe network_acl('my-network-acl') do
870
+ it { should have_subnet('my-subnet') }
871
+ end
872
+ ```
873
+
874
+
875
+ ### belong_to_vpc
450
876
 
451
877
  ```ruby
452
878
  describe network_acl('my-network-acl') do
453
- it { should exist }
454
879
  it { should belong_to_vpc('my-vpc') }
455
- it { should have_subnet('my-subnet') }
880
+ end
881
+ ```
882
+
883
+
884
+ ### its(:inbound), its(:outbound), its(:inbound_entries_count), its(:outbound_entries_count)
885
+
886
+ ```ruby
887
+ describe network_acl('my-network-acl') do
456
888
  its(:inbound) { should be_allowed(80).protocol('tcp').source('123.0.456.789/32') }
457
889
  its(:inbound) { should be_denied.rule_number('*').source('0.0.0.0/0') }
458
890
  its(:outbound) { should be_allowed.protocol('ALL').source('0.0.0.0/0') }
@@ -466,20 +898,35 @@ end
466
898
 
467
899
  DirectconnectVirtualInterface resource type.
468
900
 
469
- ### exist
470
-
471
- ### be_available
901
+ ```ruby
902
+ describe directconnect_virtual_interface('my-directconnect-virtual-interface') do
903
+ it { should exist }
904
+ it { should be_available }
905
+ its(:connection_id) { should eq 'dxcon-abcd5fgh' }
906
+ its(:virtual_interface_id) { should eq 'dxvif-aabbccdd' }
907
+ its(:amazon_address) { should eq '170.252.252.1/30' }
908
+ its(:customer_address) { should eq '123.456.789.2/30' }
909
+ its(:virtual_gateway_id) { should eq 'vgw-d234e5f6' }
910
+ end
911
+ ```
472
912
 
473
- ### be_confirming
474
913
 
475
- ### be_deleted
914
+ ### exist
476
915
 
477
- ### be_deleting
916
+ ```ruby
917
+ describe directconnect_virtual_interface('my-directconnect-virtual-interface') do
918
+ it { should exist }
919
+ end
920
+ ```
478
921
 
479
- ### be_pending
480
922
 
481
- ### be_rejected
923
+ ### be_confirming, be_verifying, be_pending, be_available, be_deleting, be_deleted, be_rejected
482
924
 
483
- ### be_verifying
925
+ ```ruby
926
+ describe directconnect_virtual_interface('my-directconnect-virtual-interface') do
927
+ it { should exist }
928
+ it { should be_available }
929
+ end
930
+ ```
484
931
 
485
932
  #### 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)