awspec 1.17.4 → 1.18.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +27 -0
- data/doc/_resource_types/alb.md +8 -0
- data/doc/_resource_types/cloudtrail.md +8 -0
- data/doc/_resource_types/cloudwatch_logs.md +8 -0
- data/doc/_resource_types/secretsmanager.md +15 -0
- data/doc/resource_types.md +61 -11
- data/lib/awspec/generator/doc/type/alb.rb +2 -1
- data/lib/awspec/generator/doc/type/secretsmanager.rb +17 -0
- data/lib/awspec/helper/finder.rb +4 -1
- data/lib/awspec/helper/finder/alb.rb +9 -0
- data/lib/awspec/helper/finder/cloudtrail.rb +6 -0
- data/lib/awspec/helper/finder/cloudwatch_logs.rb +4 -0
- data/lib/awspec/helper/finder/lambda.rb +1 -1
- data/lib/awspec/helper/finder/s3.rb +10 -0
- data/lib/awspec/helper/finder/secretsmanager.rb +11 -0
- data/lib/awspec/helper/type.rb +1 -0
- data/lib/awspec/stub/alb.rb +9 -0
- data/lib/awspec/stub/cloudtrail.rb +19 -1
- data/lib/awspec/stub/cloudwatch_logs.rb +7 -0
- data/lib/awspec/stub/secretsmanager.rb +36 -0
- data/lib/awspec/type/alb.rb +9 -0
- data/lib/awspec/type/cloudtrail.rb +6 -0
- data/lib/awspec/type/cloudwatch_logs.rb +6 -0
- data/lib/awspec/type/ec2.rb +2 -2
- data/lib/awspec/type/route_table.rb +4 -2
- data/lib/awspec/type/s3_bucket.rb +16 -9
- data/lib/awspec/type/secretsmanager.rb +14 -0
- data/lib/awspec/version.rb +1 -1
- metadata +8 -4
- data/.gitignore +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 282551e2308dd0173e1945a36abc52c0f7c5836b9a070a73c071385d268b4c21
|
4
|
+
data.tar.gz: bc12a2007ec95614d27b9d963cf204bcc0f10424fe063d620591e5ddf684a84f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 05bbe8f18a6d921cfa135a2704a643a8ff6970d1975de78af029e1f93214d3ef6ef19199acccde8bba8535a29bc0b4aee9949287647eeae94d9a957aa2a64c7d
|
7
|
+
data.tar.gz: ddf9edd8742c58ffae8a106f1fe86e41dc38aa8fac3a7b31ed0a2826341a8eb916bb8e8673367f8e2d7149b35cb0530eeb0140e7eae68db55b4f7aa0fc9d999d
|
data/README.md
CHANGED
@@ -96,6 +96,33 @@ describe sqs('my-sqs-queue'), region: 'us-west-2' do
|
|
96
96
|
end
|
97
97
|
```
|
98
98
|
|
99
|
+
#### Using terraform outputs as identifier
|
100
|
+
|
101
|
+
Especially in cases, where resources created by terraform have the same names (e.g. created by VPC module), it is helpful to use terraform outputs as unique identifiers.
|
102
|
+
|
103
|
+
```terraform
|
104
|
+
output "my_ec2_instance" {
|
105
|
+
value = aws_instance.my_instance.id
|
106
|
+
}
|
107
|
+
```
|
108
|
+
|
109
|
+
```ruby
|
110
|
+
require 'spec_helper'
|
111
|
+
|
112
|
+
my_ec2_instance = `terraform output my_ec2_instance`.strip
|
113
|
+
|
114
|
+
describe ec2(my_ec2_instance) do
|
115
|
+
it { should be_running }
|
116
|
+
its(:image_id) { should eq 'ami-abc12def' }
|
117
|
+
its(:public_ip_address) { should eq '123.0.456.789' }
|
118
|
+
it { should have_security_group('my-security-group-name') }
|
119
|
+
it { should belong_to_vpc('my-vpc') }
|
120
|
+
it { should belong_to_subnet('subnet-1234a567') }
|
121
|
+
it { should have_eip('123.0.456.789') }
|
122
|
+
it { should be_disabled_api_termination }
|
123
|
+
end
|
124
|
+
```
|
125
|
+
|
99
126
|
### STEP 4. Run tests
|
100
127
|
Add gem "rake" in your Gemfile if you are starting a blank project.
|
101
128
|
|
data/doc/_resource_types/alb.md
CHANGED
data/doc/resource_types.md
CHANGED
@@ -64,6 +64,7 @@
|
|
64
64
|
| [route53_hosted_zone](#route53_hosted_zone)
|
65
65
|
| [route_table](#route_table)
|
66
66
|
| [s3_bucket](#s3_bucket)
|
67
|
+
| [secretsmanager](#secretsmanager)
|
67
68
|
| [security_group](#security_group)
|
68
69
|
| [ses_identity](#ses_identity)
|
69
70
|
| [sns_topic](#sns_topic)
|
@@ -144,6 +145,15 @@ end
|
|
144
145
|
```
|
145
146
|
|
146
147
|
|
148
|
+
### have_tag
|
149
|
+
|
150
|
+
```ruby
|
151
|
+
describe alb('my-alb') do
|
152
|
+
it { should have_tag('environment').value('dev') }
|
153
|
+
end
|
154
|
+
```
|
155
|
+
|
156
|
+
|
147
157
|
### belong_to_vpc
|
148
158
|
|
149
159
|
```ruby
|
@@ -274,7 +284,7 @@ describe apigateway('my-apigateway') do
|
|
274
284
|
end
|
275
285
|
```
|
276
286
|
|
277
|
-
### its(:id), its(:name), its(:description), its(:created_date), its(:version), its(:warnings), its(:binary_media_types), its(:minimum_compression_size), its(:api_key_source), its(:policy)
|
287
|
+
### its(:id), its(:name), its(:description), its(:created_date), its(:version), its(:warnings), its(:binary_media_types), its(:minimum_compression_size), its(:api_key_source), its(:policy), its(:tags)
|
278
288
|
## <a name="autoscaling_group">autoscaling_group</a>
|
279
289
|
|
280
290
|
AutoscalingGroup resource type.
|
@@ -506,7 +516,7 @@ describe cloudfront_distribution('123456789zyxw.cloudfront.net') do
|
|
506
516
|
end
|
507
517
|
```
|
508
518
|
|
509
|
-
### its(:id), its(:arn), its(:status), its(:last_modified_time), its(:domain_name), its(:origin_groups), its(:comment), its(:price_class), its(:enabled), its(:web_acl_id), its(:http_version), its(:is_ipv6_enabled)
|
519
|
+
### its(:id), its(:arn), its(:status), its(:last_modified_time), its(:domain_name), its(:origin_groups), its(:comment), its(:price_class), its(:enabled), its(:web_acl_id), its(:http_version), its(:is_ipv6_enabled), its(:alias_icp_recordals)
|
510
520
|
## <a name="cloudtrail">cloudtrail</a>
|
511
521
|
|
512
522
|
Cloudtrail resource type.
|
@@ -528,6 +538,7 @@ describe cloudtrail('my-trail') do
|
|
528
538
|
end
|
529
539
|
```
|
530
540
|
|
541
|
+
|
531
542
|
### be_multi_region_trail
|
532
543
|
|
533
544
|
```ruby
|
@@ -555,6 +566,14 @@ end
|
|
555
566
|
```
|
556
567
|
|
557
568
|
|
569
|
+
### have_tag
|
570
|
+
|
571
|
+
```ruby
|
572
|
+
describe cloudtrail('my-trail') do
|
573
|
+
it { should have_tag('Name').value('my-trail') }
|
574
|
+
end
|
575
|
+
```
|
576
|
+
|
558
577
|
### its(:name), its(:s3_bucket_name), its(:s3_key_prefix), its(:sns_topic_name), its(:sns_topic_arn), its(:include_global_service_events), its(:is_multi_region_trail), its(:home_region), its(:trail_arn), its(:log_file_validation_enabled), its(:cloud_watch_logs_log_group_arn), its(:cloud_watch_logs_role_arn), its(:kms_key_id), its(:has_custom_event_selectors), its(:is_organization_trail)
|
559
578
|
## <a name="cloudwatch_alarm">cloudwatch_alarm</a>
|
560
579
|
|
@@ -604,7 +623,7 @@ describe cloudwatch_alarm('my-cloudwatch-alarm') do
|
|
604
623
|
end
|
605
624
|
```
|
606
625
|
|
607
|
-
### its(:alarm_name), its(:alarm_arn), its(:alarm_description), its(:alarm_configuration_updated_timestamp), its(:actions_enabled), its(:ok_actions), its(:alarm_actions), its(:insufficient_data_actions), its(:state_value), its(:state_reason), its(:state_reason_data), its(:state_updated_timestamp), its(:metric_name), its(:namespace), its(:statistic), its(:extended_statistic), its(:period), its(:unit), its(:evaluation_periods), its(:datapoints_to_alarm), its(:threshold), its(:comparison_operator), its(:treat_missing_data), its(:evaluate_low_sample_count_percentile), its(:metrics)
|
626
|
+
### its(:alarm_name), its(:alarm_arn), its(:alarm_description), its(:alarm_configuration_updated_timestamp), its(:actions_enabled), its(:ok_actions), its(:alarm_actions), its(:insufficient_data_actions), its(:state_value), its(:state_reason), its(:state_reason_data), its(:state_updated_timestamp), its(:metric_name), its(:namespace), its(:statistic), its(:extended_statistic), its(:period), its(:unit), its(:evaluation_periods), its(:datapoints_to_alarm), its(:threshold), its(:comparison_operator), its(:treat_missing_data), its(:evaluate_low_sample_count_percentile), its(:metrics), its(:threshold_metric_id)
|
608
627
|
## <a name="cloudwatch_event">cloudwatch_event</a>
|
609
628
|
|
610
629
|
CloudwatchEvent resource type.
|
@@ -615,7 +634,7 @@ CloudwatchEvent resource type.
|
|
615
634
|
|
616
635
|
### be_scheduled
|
617
636
|
|
618
|
-
### its(:name), its(:arn), its(:event_pattern), its(:state), its(:description), its(:schedule_expression), its(:role_arn), its(:managed_by)
|
637
|
+
### its(:name), its(:arn), its(:event_pattern), its(:state), its(:description), its(:schedule_expression), its(:role_arn), its(:managed_by), its(:event_bus_name)
|
619
638
|
## <a name="cloudwatch_logs">cloudwatch_logs</a>
|
620
639
|
|
621
640
|
CloudwatchLogs resource type.
|
@@ -664,6 +683,15 @@ describe cloudwatch_logs('my-cloudwatch-logs-group') do
|
|
664
683
|
end
|
665
684
|
```
|
666
685
|
|
686
|
+
|
687
|
+
### have_tag
|
688
|
+
|
689
|
+
```ruby
|
690
|
+
describe cloudwatch_logs('my-cloudwatch-logs-group') do
|
691
|
+
it { should have_tag('Name').value('my-cloudwatch-logs-group') }
|
692
|
+
end
|
693
|
+
```
|
694
|
+
|
667
695
|
### its(:log_group_name), its(:creation_time), its(:retention_in_days), its(:metric_filter_count), its(:arn), its(:stored_bytes), its(:kms_key_id)
|
668
696
|
## <a name="codebuild">codebuild</a>
|
669
697
|
|
@@ -734,7 +762,7 @@ end
|
|
734
762
|
```
|
735
763
|
|
736
764
|
|
737
|
-
### its(:bgp_asn), its(:customer_gateway_id), its(:ip_address), its(:state), its(:type), its(:tags)
|
765
|
+
### its(:bgp_asn), its(:customer_gateway_id), its(:ip_address), its(:certificate_arn), its(:state), its(:type), its(:tags)
|
738
766
|
## <a name="directconnect_virtual_interface">directconnect_virtual_interface</a>
|
739
767
|
|
740
768
|
DirectconnectVirtualInterface resource type.
|
@@ -770,7 +798,7 @@ describe directconnect_virtual_interface('my-directconnect-virtual-interface') d
|
|
770
798
|
end
|
771
799
|
```
|
772
800
|
|
773
|
-
### 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(:amazon_side_asn), its(:auth_key), its(:amazon_address), its(:customer_address), its(:address_family), its(:virtual_interface_state), its(:customer_router_config), its(:mtu), its(:jumbo_frame_capable), its(:virtual_gateway_id), its(:direct_connect_gateway_id), its(:route_filter_prefixes), its(:bgp_peers), its(:region), its(:aws_device_v2)
|
801
|
+
### 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(:amazon_side_asn), its(:auth_key), its(:amazon_address), its(:customer_address), its(:address_family), its(:virtual_interface_state), its(:customer_router_config), its(:mtu), its(:jumbo_frame_capable), its(:virtual_gateway_id), its(:direct_connect_gateway_id), its(:route_filter_prefixes), its(:bgp_peers), its(:region), its(:aws_device_v2), its(:tags)
|
774
802
|
## <a name="dynamodb_table">dynamodb_table</a>
|
775
803
|
|
776
804
|
DynamodbTable resource type.
|
@@ -1148,7 +1176,7 @@ describe ecs_cluster('my-ecs-cluster') do
|
|
1148
1176
|
end
|
1149
1177
|
```
|
1150
1178
|
|
1151
|
-
### its(:cluster_arn), its(:cluster_name), its(:status), its(:registered_container_instances_count), its(:running_tasks_count), its(:pending_tasks_count), its(:active_services_count), its(:statistics), its(:tags)
|
1179
|
+
### its(:cluster_arn), its(:cluster_name), its(:status), its(:registered_container_instances_count), its(:running_tasks_count), its(:pending_tasks_count), its(:active_services_count), its(:statistics), its(:tags), its(:settings)
|
1152
1180
|
## <a name="ecs_container_instance">ecs_container_instance</a>
|
1153
1181
|
|
1154
1182
|
ECS Container Instance resource type.
|
@@ -1173,7 +1201,7 @@ end
|
|
1173
1201
|
```
|
1174
1202
|
|
1175
1203
|
|
1176
|
-
### its(:container_instance_arn), its(:ec2_instance_id), its(:version), its(:version_info), its(:status), its(:agent_connected), its(:running_tasks_count), its(:pending_tasks_count), its(:agent_update_status), its(:attributes), its(:registered_at), its(:attachments), its(:tags)
|
1204
|
+
### its(:container_instance_arn), its(:ec2_instance_id), its(:version), its(:version_info), its(:status), its(:status_reason), its(:agent_connected), its(:running_tasks_count), its(:pending_tasks_count), its(:agent_update_status), its(:attributes), its(:registered_at), its(:attachments), its(:tags)
|
1177
1205
|
## <a name="ecs_service">ecs_service</a>
|
1178
1206
|
|
1179
1207
|
ECS Service resource type.
|
@@ -2268,7 +2296,7 @@ describe mq('my-mq') do
|
|
2268
2296
|
end
|
2269
2297
|
```
|
2270
2298
|
|
2271
|
-
### its(:vpc_id), its(:auto_minor_version_upgrade), its(:broker_arn), its(:broker_id), its(:broker_name), its(:broker_state), its(:created), its(:deployment_mode), its(:engine_type), its(:engine_version), its(:host_instance_type), its(:pending_engine_version), its(:publicly_accessible), its(:security_groups), its(:subnet_ids)
|
2299
|
+
### its(:vpc_id), its(:auto_minor_version_upgrade), its(:broker_arn), its(:broker_id), its(:broker_name), its(:broker_state), its(:created), its(:deployment_mode), its(:encryption_options), its(:engine_type), its(:engine_version), its(:host_instance_type), its(:pending_engine_version), its(:publicly_accessible), its(:security_groups), its(:subnet_ids)
|
2272
2300
|
## <a name="nat_gateway">nat_gateway</a>
|
2273
2301
|
|
2274
2302
|
NatGateway resource type.
|
@@ -2696,7 +2724,7 @@ end
|
|
2696
2724
|
```
|
2697
2725
|
|
2698
2726
|
|
2699
|
-
### 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(:db_security_groups), 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(:read_replica_db_instance_identifiers), its(:read_replica_db_cluster_identifiers), its(:license_model), its(:iops), its(:character_set_name), its(:secondary_availability_zone), its(:publicly_accessible), its(:status_infos), 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(:domain_memberships), its(:copy_tags_to_snapshot), its(:monitoring_interval), its(:enhanced_monitoring_resource_arn), its(:monitoring_role_arn), its(:promotion_tier), its(:db_instance_arn), its(:timezone), its(:iam_database_authentication_enabled), its(:performance_insights_enabled), its(:performance_insights_kms_key_id), its(:performance_insights_retention_period), its(:enabled_cloudwatch_logs_exports), its(:processor_features), its(:deletion_protection), its(:associated_roles), its(:listener_endpoint)
|
2727
|
+
### 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(:db_security_groups), 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(:read_replica_db_instance_identifiers), its(:read_replica_db_cluster_identifiers), its(:license_model), its(:iops), its(:character_set_name), its(:secondary_availability_zone), its(:publicly_accessible), its(:status_infos), 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(:domain_memberships), its(:copy_tags_to_snapshot), its(:monitoring_interval), its(:enhanced_monitoring_resource_arn), its(:monitoring_role_arn), its(:promotion_tier), its(:db_instance_arn), its(:timezone), its(:iam_database_authentication_enabled), its(:performance_insights_enabled), its(:performance_insights_kms_key_id), its(:performance_insights_retention_period), its(:enabled_cloudwatch_logs_exports), its(:processor_features), its(:deletion_protection), its(:associated_roles), its(:listener_endpoint), its(:max_allocated_storage)
|
2700
2728
|
### :unlock: Advanced use
|
2701
2729
|
|
2702
2730
|
`rds` can use `Aws::RDS::DBInstance` resource (see http://docs.aws.amazon.com/sdkforruby/api/Aws/RDS/DBInstance.html).
|
@@ -2828,7 +2856,7 @@ describe redshift('my-redshift') do
|
|
2828
2856
|
end
|
2829
2857
|
```
|
2830
2858
|
|
2831
|
-
### its(:vpc_id), its(:cluster_identifier), its(:node_type), its(:cluster_status), its(:modify_status), its(:master_username), its(:db_name), its(:endpoint), its(:cluster_create_time), its(:automated_snapshot_retention_period), its(:manual_snapshot_retention_period), its(:cluster_security_groups), its(:cluster_subnet_group_name), its(:vpc_id), its(:availability_zone), its(:preferred_maintenance_window), its(:pending_modified_values), its(:cluster_version), its(:allow_version_upgrade), its(:number_of_nodes), its(:publicly_accessible), its(:encrypted), its(:restore_status), its(:data_transfer_progress), its(:hsm_status), its(:cluster_snapshot_copy_status), its(:cluster_public_key), its(:cluster_nodes), its(:elastic_ip_status), its(:cluster_revision_number), its(:kms_key_id), its(:enhanced_vpc_routing), its(:iam_roles), its(:pending_actions), its(:maintenance_track_name), its(:elastic_resize_number_of_node_options), its(:deferred_maintenance_windows), its(:snapshot_schedule_identifier), its(:snapshot_schedule_state), its(:resize_info)
|
2859
|
+
### its(:vpc_id), its(:cluster_identifier), its(:node_type), its(:cluster_status), its(:cluster_availability_status), its(:modify_status), its(:master_username), its(:db_name), its(:endpoint), its(:cluster_create_time), its(:automated_snapshot_retention_period), its(:manual_snapshot_retention_period), its(:cluster_security_groups), its(:cluster_subnet_group_name), its(:vpc_id), its(:availability_zone), its(:preferred_maintenance_window), its(:pending_modified_values), its(:cluster_version), its(:allow_version_upgrade), its(:number_of_nodes), its(:publicly_accessible), its(:encrypted), its(:restore_status), its(:data_transfer_progress), its(:hsm_status), its(:cluster_snapshot_copy_status), its(:cluster_public_key), its(:cluster_nodes), its(:elastic_ip_status), its(:cluster_revision_number), its(:kms_key_id), its(:enhanced_vpc_routing), its(:iam_roles), its(:pending_actions), its(:maintenance_track_name), its(:elastic_resize_number_of_node_options), its(:deferred_maintenance_windows), its(:snapshot_schedule_identifier), its(:snapshot_schedule_state), its(:expected_next_snapshot_schedule_time), its(:expected_next_snapshot_schedule_time_status), its(:resize_info)
|
2832
2860
|
## <a name="redshift_cluster_parameter_group">redshift_cluster_parameter_group</a>
|
2833
2861
|
|
2834
2862
|
RedshiftClusterParameterGroup resource type.
|
@@ -3123,6 +3151,28 @@ describe s3_bucket('my-bucket') do
|
|
3123
3151
|
end
|
3124
3152
|
```
|
3125
3153
|
|
3154
|
+
## <a name="secretsmanager">secretsmanager</a>
|
3155
|
+
|
3156
|
+
Secretsmanager resource type.
|
3157
|
+
|
3158
|
+
### exist
|
3159
|
+
|
3160
|
+
```ruby
|
3161
|
+
describe secretsmanager('my-secret') do
|
3162
|
+
it { should exist }
|
3163
|
+
end
|
3164
|
+
```
|
3165
|
+
|
3166
|
+
|
3167
|
+
### have_tag
|
3168
|
+
|
3169
|
+
```ruby
|
3170
|
+
describe secretsmanager('my-secret') do
|
3171
|
+
it { should have_tag('Name').value('my-secret') }
|
3172
|
+
end
|
3173
|
+
```
|
3174
|
+
|
3175
|
+
### its(:arn), its(:name), its(:description), its(:kms_key_id), its(:rotation_enabled), its(:rotation_lambda_arn), its(:last_rotated_date), its(:last_changed_date), its(:last_accessed_date), its(:deleted_date), its(:owning_service)
|
3126
3176
|
## <a name="security_group">security_group</a>
|
3127
3177
|
|
3128
3178
|
SecurityGroup resource type.
|
@@ -9,7 +9,8 @@ module Awspec::Generator
|
|
9
9
|
@ret = @type.resource_via_client
|
10
10
|
@matchers = [
|
11
11
|
Awspec::Type::Alb::STATES.map { |state| 'be_' + state }.join(', '),
|
12
|
-
'belong_to_vpc'
|
12
|
+
'belong_to_vpc',
|
13
|
+
# 'have_tag'
|
13
14
|
]
|
14
15
|
@ignore_matchers = Awspec::Type::Alb::STATES.map { |state| 'be_' + state }
|
15
16
|
@describes = []
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Awspec::Generator
|
2
|
+
module Doc
|
3
|
+
module Type
|
4
|
+
class Secretsmanager < Base
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
@type_name = 'Secretsmanager'
|
8
|
+
@type = Awspec::Type::Secretsmanager.new('my-secret')
|
9
|
+
@ret = @type.resource_via_client
|
10
|
+
@matchers = []
|
11
|
+
@ignore_matchers = []
|
12
|
+
@describes = []
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/awspec/helper/finder.rb
CHANGED
@@ -46,6 +46,7 @@ require 'awspec/helper/finder/emr'
|
|
46
46
|
require 'awspec/helper/finder/redshift'
|
47
47
|
require 'awspec/helper/finder/codedeploy'
|
48
48
|
require 'awspec/helper/finder/mq'
|
49
|
+
require 'awspec/helper/finder/secretsmanager'
|
49
50
|
|
50
51
|
require 'awspec/helper/finder/account_attributes'
|
51
52
|
|
@@ -101,6 +102,7 @@ module Awspec::Helper
|
|
101
102
|
include Awspec::Helper::Finder::Redshift
|
102
103
|
include Awspec::Helper::Finder::Codedeploy
|
103
104
|
include Awspec::Helper::Finder::Mq
|
105
|
+
include Awspec::Helper::Finder::Secretsmanager
|
104
106
|
|
105
107
|
CLIENTS = {
|
106
108
|
ec2_client: Aws::EC2::Client,
|
@@ -144,7 +146,8 @@ module Awspec::Helper
|
|
144
146
|
emr_client: Aws::EMR::Client,
|
145
147
|
redshift_client: Aws::Redshift::Client,
|
146
148
|
codedeploy_client: Aws::CodeDeploy::Client,
|
147
|
-
mq_client: Aws::MQ::Client
|
149
|
+
mq_client: Aws::MQ::Client,
|
150
|
+
secretsmanager_client: Aws::SecretsManager::Client
|
148
151
|
}
|
149
152
|
|
150
153
|
CLIENT_OPTIONS = {
|
@@ -54,6 +54,15 @@ module Awspec::Helper
|
|
54
54
|
end
|
55
55
|
selected
|
56
56
|
end
|
57
|
+
|
58
|
+
def select_all_alb_tags(id)
|
59
|
+
res = elbv2_client.describe_tags({ resource_arns: [id] })
|
60
|
+
res.tag_descriptions.select do |resource|
|
61
|
+
resource.resource_arn == id
|
62
|
+
end.first.tags
|
63
|
+
rescue
|
64
|
+
return nil
|
65
|
+
end
|
57
66
|
end
|
58
67
|
end
|
59
68
|
end
|
@@ -15,6 +15,12 @@ module Awspec::Helper
|
|
15
15
|
cloudtrail_client.get_trail_status(name: id)
|
16
16
|
end
|
17
17
|
|
18
|
+
def get_trail_tags(arn)
|
19
|
+
cloudtrail_client.list_tags(
|
20
|
+
resource_id_list: [arn]
|
21
|
+
)[:resource_tag_list].first[:tags_list]
|
22
|
+
end
|
23
|
+
|
18
24
|
def is_logging?(id)
|
19
25
|
ret = get_trail_status(id).is_logging
|
20
26
|
end
|
@@ -64,6 +64,10 @@ module Awspec::Helper
|
|
64
64
|
log_groups
|
65
65
|
end
|
66
66
|
|
67
|
+
def find_tags_by_log_group_name(id)
|
68
|
+
cloudwatch_logs_client.list_tags_log_group(log_group_name: id)[:tags]
|
69
|
+
end
|
70
|
+
|
67
71
|
filter_types = %w(metric subscription)
|
68
72
|
filter_types.each do |type|
|
69
73
|
define_method 'select_all_cloudwatch_logs_' + type + '_filter' do |*args|
|
@@ -13,6 +13,16 @@ module Awspec::Helper
|
|
13
13
|
nil
|
14
14
|
end
|
15
15
|
|
16
|
+
def head_object(id, key)
|
17
|
+
res = s3_client.head_object({
|
18
|
+
bucket: id,
|
19
|
+
key: key.sub(%r(\A/), '')
|
20
|
+
})
|
21
|
+
res.data.class == Aws::S3::Types::HeadObjectOutput
|
22
|
+
rescue Aws::S3::Errors::NotFound
|
23
|
+
false
|
24
|
+
end
|
25
|
+
|
16
26
|
def find_bucket_cors(id)
|
17
27
|
s3_client.get_bucket_cors(bucket: id)
|
18
28
|
rescue Aws::S3::Errors::ServiceError
|
data/lib/awspec/helper/type.rb
CHANGED
@@ -20,6 +20,7 @@ module Awspec
|
|
20
20
|
elastictranscoder_pipeline waf_web_acl wafregional_web_acl customer_gateway vpn_gateway vpn_connection
|
21
21
|
internet_gateway acm cloudwatch_logs dynamodb_table eip sqs ssm_parameter cloudformation_stack
|
22
22
|
codebuild sns_topic redshift redshift_cluster_parameter_group codedeploy codedeploy_deployment_group
|
23
|
+
secretsmanager
|
23
24
|
)
|
24
25
|
|
25
26
|
ACCOUNT_ATTRIBUTES = %w(
|
data/lib/awspec/stub/alb.rb
CHANGED
@@ -81,6 +81,15 @@ Aws.config[:elasticloadbalancingv2] = {
|
|
81
81
|
protocol: 'HTTP'
|
82
82
|
}
|
83
83
|
]
|
84
|
+
},
|
85
|
+
describe_tags: {
|
86
|
+
tag_descriptions: [
|
87
|
+
resource_arn: 'arn:aws:elasticloadbalancing:ap-northeast-1:1234567890:loadbalancer/app/my-alb/1aa1bb1cc1ddee11',
|
88
|
+
tags: [
|
89
|
+
key: 'environment',
|
90
|
+
value: 'dev'
|
91
|
+
]
|
92
|
+
]
|
84
93
|
}
|
85
94
|
}
|
86
95
|
}
|
@@ -6,12 +6,30 @@ Aws.config[:cloudtrail] = {
|
|
6
6
|
name: 'my-trail',
|
7
7
|
include_global_service_events: true,
|
8
8
|
is_multi_region_trail: true,
|
9
|
-
log_file_validation_enabled: true
|
9
|
+
log_file_validation_enabled: true,
|
10
|
+
trail_arn: 'my-trail-arn'
|
10
11
|
}
|
11
12
|
]
|
12
13
|
},
|
13
14
|
get_trail_status: {
|
14
15
|
is_logging: true
|
16
|
+
},
|
17
|
+
list_tags: {
|
18
|
+
resource_tag_list: [
|
19
|
+
{
|
20
|
+
resource_id: 'my-trail-arn',
|
21
|
+
tags_list: [
|
22
|
+
{
|
23
|
+
key: 'key_one',
|
24
|
+
value: 'value_one'
|
25
|
+
},
|
26
|
+
{
|
27
|
+
key: 'key_two',
|
28
|
+
value: 'value_two'
|
29
|
+
}
|
30
|
+
]
|
31
|
+
}
|
32
|
+
]
|
15
33
|
}
|
16
34
|
}
|
17
35
|
}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
Aws.config[:secretsmanager] = {
|
2
|
+
stub_responses: {
|
3
|
+
describe_secret: {
|
4
|
+
arn: 'my-secret-arn',
|
5
|
+
description: 'my secret description',
|
6
|
+
kms_key_id: 'secret-kms-key-arn',
|
7
|
+
last_accessed_date: Time.at(1_523_923_200),
|
8
|
+
last_changed_date: Time.at(1_523_477_145.729),
|
9
|
+
last_rotated_date: Time.at(1_525_747_253.72),
|
10
|
+
name: 'my-secret-name',
|
11
|
+
rotation_enabled: true,
|
12
|
+
rotation_lambda_arn: 'my-secret-rotation-lambda-arn',
|
13
|
+
rotation_rules: {
|
14
|
+
automatically_after_days: 30
|
15
|
+
},
|
16
|
+
tags: [
|
17
|
+
{
|
18
|
+
key: 'key_one',
|
19
|
+
value: 'value_one'
|
20
|
+
},
|
21
|
+
{
|
22
|
+
key: 'key_two',
|
23
|
+
value: 'value_two'
|
24
|
+
}
|
25
|
+
],
|
26
|
+
version_ids_to_stages: {
|
27
|
+
'EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE' => [
|
28
|
+
'AWSPREVIOUS'
|
29
|
+
],
|
30
|
+
'EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE' => [
|
31
|
+
'AWSCURRENT'
|
32
|
+
]
|
33
|
+
}
|
34
|
+
}
|
35
|
+
}
|
36
|
+
}
|
data/lib/awspec/type/alb.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
module Awspec::Type
|
2
2
|
class Alb < ResourceBase
|
3
|
+
tags_allowed
|
3
4
|
def resource_via_client
|
4
5
|
@resource_via_client ||= find_alb(@display_name)
|
5
6
|
end
|
@@ -38,5 +39,13 @@ module Awspec::Type
|
|
38
39
|
subnet2 = find_subnet(subnet_id)
|
39
40
|
subnet2.subnet_id = subnet_id
|
40
41
|
end
|
42
|
+
|
43
|
+
def has_tag?(tag_key, tag_value)
|
44
|
+
alb_arn = resource_via_client.load_balancer_arn
|
45
|
+
tag_set = select_all_alb_tags(alb_arn)
|
46
|
+
tag_set.find do |tag|
|
47
|
+
tag.key == tag_key && tag.value == tag_value
|
48
|
+
end
|
49
|
+
end
|
41
50
|
end
|
42
51
|
end
|
@@ -27,5 +27,11 @@ module Awspec::Type
|
|
27
27
|
end
|
28
28
|
return true if ret.filter_name == filter_name
|
29
29
|
end
|
30
|
+
|
31
|
+
def has_tag?(tag_key, tag_value)
|
32
|
+
find_tags_by_log_group_name(resource_via_client.log_group_name).find do |key, value|
|
33
|
+
key == tag_key && value == tag_value
|
34
|
+
end
|
35
|
+
end
|
30
36
|
end
|
31
37
|
end
|
data/lib/awspec/type/ec2.rb
CHANGED
@@ -90,7 +90,7 @@ module Awspec::Type
|
|
90
90
|
def has_network_interface?(network_interface_id, device_index = nil)
|
91
91
|
res = find_network_interface(network_interface_id)
|
92
92
|
interfaces = resource_via_client.network_interfaces
|
93
|
-
|
93
|
+
interfaces.find do |interface|
|
94
94
|
next false if device_index && interface.attachment.device_index != device_index
|
95
95
|
interface.network_interface_id == res.network_interface_id
|
96
96
|
end
|
@@ -98,7 +98,7 @@ module Awspec::Type
|
|
98
98
|
|
99
99
|
def has_event?(event_code)
|
100
100
|
status = find_ec2_status(id)
|
101
|
-
|
101
|
+
status.events.find do |event|
|
102
102
|
event.code == event_code
|
103
103
|
end
|
104
104
|
end
|
@@ -54,7 +54,8 @@ module Awspec::Type
|
|
54
54
|
cgw = find_customer_gateway(gateway_id)
|
55
55
|
return true if cgw && cgw.customer_gateway_id == route.gateway_id
|
56
56
|
# nat gateway
|
57
|
-
|
57
|
+
nat = find_nat_gateway(gateway_id)
|
58
|
+
return true if nat.nat_gateway_id == route.nat_gateway_id
|
58
59
|
false
|
59
60
|
end
|
60
61
|
|
@@ -68,7 +69,8 @@ module Awspec::Type
|
|
68
69
|
|
69
70
|
def target_nat?(route, nat_gateway_id)
|
70
71
|
# nat
|
71
|
-
|
72
|
+
nat = find_nat_gateway(nat_gateway_id)
|
73
|
+
nat.nat_gateway_id == route.nat_gateway_id
|
72
74
|
end
|
73
75
|
|
74
76
|
def target_vpc_peering_connection?(route, vpc_peering_connection_id)
|
@@ -11,16 +11,12 @@ module Awspec::Type
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def has_object?(key)
|
14
|
-
|
15
|
-
|
16
|
-
key: key.sub(%r(\A/), '')
|
17
|
-
})
|
18
|
-
res
|
19
|
-
rescue
|
20
|
-
false
|
14
|
+
check_existence
|
15
|
+
head_object(id, key)
|
21
16
|
end
|
22
17
|
|
23
18
|
def has_acl_grant?(grantee:, permission:)
|
19
|
+
check_existence
|
24
20
|
@acl = find_bucket_acl(id)
|
25
21
|
@acl.grants.find do |grant|
|
26
22
|
grant.permission == permission &&
|
@@ -29,11 +25,13 @@ module Awspec::Type
|
|
29
25
|
end
|
30
26
|
|
31
27
|
def acl_owner
|
28
|
+
check_existence
|
32
29
|
@acl = find_bucket_acl(id)
|
33
30
|
@acl.owner.display_name
|
34
31
|
end
|
35
32
|
|
36
33
|
def acl_grants_count
|
34
|
+
check_existence
|
37
35
|
@acl = find_bucket_acl(id)
|
38
36
|
@acl.grants.count
|
39
37
|
end
|
@@ -57,7 +55,9 @@ module Awspec::Type
|
|
57
55
|
end
|
58
56
|
|
59
57
|
def has_policy?(policy)
|
58
|
+
check_existence
|
60
59
|
bp = find_bucket_policy(id)
|
60
|
+
|
61
61
|
if bp
|
62
62
|
JSON.parse(bp.policy.read, array_class: Set) == JSON.parse(policy, array_class: Set)
|
63
63
|
else
|
@@ -66,12 +66,14 @@ module Awspec::Type
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def has_tag?(key, value)
|
69
|
+
check_existence
|
69
70
|
tag = find_bucket_tag(id, key)
|
70
71
|
return nil if tag.value != value
|
71
72
|
tag
|
72
73
|
end
|
73
74
|
|
74
75
|
def has_logging_enabled?(target_bucket: nil, target_prefix: nil)
|
76
|
+
check_existence
|
75
77
|
bl = find_bucket_logging(id)
|
76
78
|
le = bl ? bl.logging_enabled : nil
|
77
79
|
|
@@ -82,11 +84,13 @@ module Awspec::Type
|
|
82
84
|
end
|
83
85
|
|
84
86
|
def has_versioning_enabled?
|
87
|
+
check_existence
|
85
88
|
bv = find_bucket_versioning(id)
|
86
89
|
bv ? (bv.status == 'Enabled') : false
|
87
90
|
end
|
88
91
|
|
89
92
|
def has_lifecycle_rule?(rule)
|
93
|
+
check_existence
|
90
94
|
lc_rule = lifecycle_configuration_rules.select { |r| r[:id] == rule[:id] }
|
91
95
|
return false if lc_rule == []
|
92
96
|
|
@@ -105,11 +109,13 @@ module Awspec::Type
|
|
105
109
|
end
|
106
110
|
|
107
111
|
def has_mfa_delete_enabled?
|
112
|
+
check_existence
|
108
113
|
bv = find_bucket_versioning(id)
|
109
114
|
bv ? (bv.mfa_delete == 'Enabled') : false
|
110
115
|
end
|
111
116
|
|
112
117
|
def has_server_side_encryption?(algorithm:)
|
118
|
+
check_existence
|
113
119
|
configuration = find_bucket_server_side_encryption(id)
|
114
120
|
return false unless configuration
|
115
121
|
|
@@ -120,8 +126,9 @@ module Awspec::Type
|
|
120
126
|
private
|
121
127
|
|
122
128
|
def cors_rules
|
123
|
-
|
124
|
-
cors
|
129
|
+
check_existence
|
130
|
+
@cors ||= find_bucket_cors(id)
|
131
|
+
@cors ? @cors.cors_rules : []
|
125
132
|
end
|
126
133
|
|
127
134
|
def lifecycle_configuration_rules
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Awspec::Type
|
2
|
+
class Secretsmanager < ResourceBase
|
3
|
+
aws_resource Aws::SecretsManager
|
4
|
+
tags_allowed
|
5
|
+
|
6
|
+
def resource_via_client
|
7
|
+
@resource_via_client ||= find_secret(@display_name)
|
8
|
+
end
|
9
|
+
|
10
|
+
def id
|
11
|
+
@id ||= resource_via_client.name if resource_via_client
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/lib/awspec/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.18.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- k1LoW
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -207,7 +207,6 @@ extensions: []
|
|
207
207
|
extra_rdoc_files: []
|
208
208
|
files:
|
209
209
|
- ".editorconfig"
|
210
|
-
- ".gitignore"
|
211
210
|
- ".rubocop.yml"
|
212
211
|
- ".tachikoma.yml"
|
213
212
|
- ".travis.yml"
|
@@ -285,6 +284,7 @@ files:
|
|
285
284
|
- doc/_resource_types/route53_hosted_zone.md
|
286
285
|
- doc/_resource_types/route_table.md
|
287
286
|
- doc/_resource_types/s3_bucket.md
|
287
|
+
- doc/_resource_types/secretsmanager.md
|
288
288
|
- doc/_resource_types/security_group.md
|
289
289
|
- doc/_resource_types/ses_identity.md
|
290
290
|
- doc/_resource_types/ses_send_quota.md
|
@@ -382,6 +382,7 @@ files:
|
|
382
382
|
- lib/awspec/generator/doc/type/route53_hosted_zone.rb
|
383
383
|
- lib/awspec/generator/doc/type/route_table.rb
|
384
384
|
- lib/awspec/generator/doc/type/s3_bucket.rb
|
385
|
+
- lib/awspec/generator/doc/type/secretsmanager.rb
|
385
386
|
- lib/awspec/generator/doc/type/security_group.rb
|
386
387
|
- lib/awspec/generator/doc/type/ses_identity.rb
|
387
388
|
- lib/awspec/generator/doc/type/ses_send_quota.rb
|
@@ -476,6 +477,7 @@ files:
|
|
476
477
|
- lib/awspec/helper/finder/redshift.rb
|
477
478
|
- lib/awspec/helper/finder/route53.rb
|
478
479
|
- lib/awspec/helper/finder/s3.rb
|
480
|
+
- lib/awspec/helper/finder/secretsmanager.rb
|
479
481
|
- lib/awspec/helper/finder/security_group.rb
|
480
482
|
- lib/awspec/helper/finder/ses.rb
|
481
483
|
- lib/awspec/helper/finder/sns_topic.rb
|
@@ -599,6 +601,7 @@ files:
|
|
599
601
|
- lib/awspec/stub/route53_hosted_zone.rb
|
600
602
|
- lib/awspec/stub/route_table.rb
|
601
603
|
- lib/awspec/stub/s3_bucket.rb
|
604
|
+
- lib/awspec/stub/secretsmanager.rb
|
602
605
|
- lib/awspec/stub/security_group.rb
|
603
606
|
- lib/awspec/stub/ses_identity.rb
|
604
607
|
- lib/awspec/stub/sns_topic.rb
|
@@ -683,6 +686,7 @@ files:
|
|
683
686
|
- lib/awspec/type/route53_hosted_zone.rb
|
684
687
|
- lib/awspec/type/route_table.rb
|
685
688
|
- lib/awspec/type/s3_bucket.rb
|
689
|
+
- lib/awspec/type/secretsmanager.rb
|
686
690
|
- lib/awspec/type/security_group.rb
|
687
691
|
- lib/awspec/type/ses_identity.rb
|
688
692
|
- lib/awspec/type/ses_send_quota.rb
|
@@ -716,7 +720,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
716
720
|
version: '0'
|
717
721
|
requirements: []
|
718
722
|
rubyforge_project:
|
719
|
-
rubygems_version: 2.6
|
723
|
+
rubygems_version: 2.7.6
|
720
724
|
signing_key:
|
721
725
|
specification_version: 4
|
722
726
|
summary: RSpec tests for your AWS resources.
|