awspec-api_gateway_extended 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.editorconfig +12 -0
- data/.rubocop.yml +93 -0
- data/.tachikoma.yml +1 -0
- data/.travis.yml +21 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +191 -0
- data/Rakefile +64 -0
- data/awspec-logo.png +0 -0
- data/awspec.gemspec +40 -0
- data/bin/console +7 -0
- data/bin/setup +5 -0
- data/bin/toolbox +5 -0
- data/doc/_resource_types/acm.md +24 -0
- data/doc/_resource_types/alb.md +47 -0
- data/doc/_resource_types/alb_listener.md +29 -0
- data/doc/_resource_types/alb_target_group.md +35 -0
- data/doc/_resource_types/ami.md +19 -0
- data/doc/_resource_types/apigateway.md +7 -0
- data/doc/_resource_types/autoscaling_group.md +47 -0
- data/doc/_resource_types/batch_compute_environment.md +23 -0
- data/doc/_resource_types/batch_job_definition.md +7 -0
- data/doc/_resource_types/batch_job_queue.md +23 -0
- data/doc/_resource_types/cloudformation_stack.md +8 -0
- data/doc/_resource_types/cloudfront_distribution.md +67 -0
- data/doc/_resource_types/cloudtrail.md +47 -0
- data/doc/_resource_types/cloudwatch_alarm.md +39 -0
- data/doc/_resource_types/cloudwatch_logs.md +48 -0
- data/doc/_resource_types/codebuild.md +1 -0
- data/doc/_resource_types/codedeploy.md +1 -0
- data/doc/_resource_types/codedeploy_deployment_group.md +17 -0
- data/doc/_resource_types/customer_gateway.md +25 -0
- data/doc/_resource_types/directconnect_virtual_interface.md +30 -0
- data/doc/_resource_types/dynamodb_table.md +52 -0
- data/doc/_resource_types/ebs.md +49 -0
- data/doc/_resource_types/ec2.md +203 -0
- data/doc/_resource_types/ec2_account_attributes.md +8 -0
- data/doc/_resource_types/ecs_cluster.md +23 -0
- data/doc/_resource_types/ecs_container_instance.md +18 -0
- data/doc/_resource_types/ecs_service.md +15 -0
- data/doc/_resource_types/ecs_task_definition.md +15 -0
- data/doc/_resource_types/efs.md +15 -0
- data/doc/_resource_types/eip.md +23 -0
- data/doc/_resource_types/eks.md +14 -0
- data/doc/_resource_types/elasticache.md +57 -0
- data/doc/_resource_types/elasticache_cache_parameter_group.md +17 -0
- data/doc/_resource_types/elasticsearch.md +48 -0
- data/doc/_resource_types/elastictranscoder_pipeline.md +15 -0
- data/doc/_resource_types/elb.md +82 -0
- data/doc/_resource_types/emr.md +21 -0
- data/doc/_resource_types/firehose.md +31 -0
- data/doc/_resource_types/iam_group.md +94 -0
- data/doc/_resource_types/iam_policy.md +39 -0
- data/doc/_resource_types/iam_role.md +78 -0
- data/doc/_resource_types/iam_user.md +86 -0
- data/doc/_resource_types/internet_gateway.md +31 -0
- data/doc/_resource_types/kinesis.md +7 -0
- data/doc/_resource_types/kms.md +70 -0
- data/doc/_resource_types/lambda.md +40 -0
- data/doc/_resource_types/lambda_account_settings.md +10 -0
- data/doc/_resource_types/launch_configuration.md +15 -0
- data/doc/_resource_types/launch_template.md +48 -0
- data/doc/_resource_types/mq.md +33 -0
- data/doc/_resource_types/nat_gateway.md +39 -0
- data/doc/_resource_types/network_acl.md +61 -0
- data/doc/_resource_types/network_interface.md +66 -0
- data/doc/_resource_types/nlb.md +41 -0
- data/doc/_resource_types/nlb_listener.md +29 -0
- data/doc/_resource_types/nlb_target_group.md +35 -0
- data/doc/_resource_types/rds.md +100 -0
- data/doc/_resource_types/rds_account_attributes.md +8 -0
- data/doc/_resource_types/rds_db_cluster_parameter_group.md +16 -0
- data/doc/_resource_types/rds_db_parameter_group.md +15 -0
- data/doc/_resource_types/redshift.md +61 -0
- data/doc/_resource_types/redshift_cluster_parameter_group.md +17 -0
- data/doc/_resource_types/route53_hosted_zone.md +27 -0
- data/doc/_resource_types/route_table.md +60 -0
- data/doc/_resource_types/s3_bucket.md +158 -0
- data/doc/_resource_types/secretsmanager.md +15 -0
- data/doc/_resource_types/security_group.md +44 -0
- data/doc/_resource_types/ses_identity.md +17 -0
- data/doc/_resource_types/ses_send_quota.md +9 -0
- data/doc/_resource_types/sns_topic.md +134 -0
- data/doc/_resource_types/sqs.md +7 -0
- data/doc/_resource_types/ssm_parameter.md +33 -0
- data/doc/_resource_types/subnet.md +41 -0
- data/doc/_resource_types/vpc.md +88 -0
- data/doc/_resource_types/vpn_connection.md +25 -0
- data/doc/_resource_types/vpn_gateway.md +25 -0
- data/doc/_resource_types/waf_web_acl.md +29 -0
- data/doc/_resource_types/wafregional_web_acl.md +29 -0
- data/doc/contributing.md +45 -0
- data/doc/resource_types.md +3860 -0
- data/exe/awspec +5 -0
- data/lib/awspec.rb +23 -0
- data/lib/awspec/cli.rb +25 -0
- data/lib/awspec/command/generate.rb +69 -0
- data/lib/awspec/config.rb +41 -0
- data/lib/awspec/error.rb +32 -0
- data/lib/awspec/ext.rb +4 -0
- data/lib/awspec/ext/array.rb +8 -0
- data/lib/awspec/ext/hash.rb +10 -0
- data/lib/awspec/ext/string.rb +17 -0
- data/lib/awspec/ext/struct.rb +8 -0
- data/lib/awspec/generator.rb +55 -0
- data/lib/awspec/generator/doc/type.rb +60 -0
- data/lib/awspec/generator/doc/type/account.rb +71 -0
- data/lib/awspec/generator/doc/type/account_attribute.rb +69 -0
- data/lib/awspec/generator/doc/type/account_attribute_base.rb +32 -0
- data/lib/awspec/generator/doc/type/acm.rb +19 -0
- data/lib/awspec/generator/doc/type/alb.rb +21 -0
- data/lib/awspec/generator/doc/type/alb_listener.rb +18 -0
- data/lib/awspec/generator/doc/type/alb_target_group.rb +17 -0
- data/lib/awspec/generator/doc/type/ami.rb +19 -0
- data/lib/awspec/generator/doc/type/apigateway.rb +17 -0
- data/lib/awspec/generator/doc/type/autoscaling_group.rb +16 -0
- data/lib/awspec/generator/doc/type/base.rb +99 -0
- data/lib/awspec/generator/doc/type/batch_compute_environment.rb +23 -0
- data/lib/awspec/generator/doc/type/batch_job_definition.rb +17 -0
- data/lib/awspec/generator/doc/type/batch_job_queue.rb +17 -0
- data/lib/awspec/generator/doc/type/cloudformation_stack.rb +17 -0
- data/lib/awspec/generator/doc/type/cloudfront_distribution.rb +20 -0
- data/lib/awspec/generator/doc/type/cloudtrail.rb +17 -0
- data/lib/awspec/generator/doc/type/cloudwatch_alarm.rb +17 -0
- data/lib/awspec/generator/doc/type/cloudwatch_event.rb +17 -0
- data/lib/awspec/generator/doc/type/cloudwatch_logs.rb +17 -0
- data/lib/awspec/generator/doc/type/codebuild.rb +17 -0
- data/lib/awspec/generator/doc/type/codedeploy.rb +17 -0
- data/lib/awspec/generator/doc/type/codedeploy_deployment_group.rb +17 -0
- data/lib/awspec/generator/doc/type/customer_gateway.rb +19 -0
- data/lib/awspec/generator/doc/type/directconnect_virtual_interface.rb +21 -0
- data/lib/awspec/generator/doc/type/dynamodb_table.rb +19 -0
- data/lib/awspec/generator/doc/type/ebs.rb +19 -0
- data/lib/awspec/generator/doc/type/ec2.rb +21 -0
- data/lib/awspec/generator/doc/type/ec2_account_attributes.rb +17 -0
- data/lib/awspec/generator/doc/type/ecr_repository.rb +15 -0
- data/lib/awspec/generator/doc/type/ecs_cluster.rb +19 -0
- data/lib/awspec/generator/doc/type/ecs_container_instance.rb +19 -0
- data/lib/awspec/generator/doc/type/ecs_service.rb +19 -0
- data/lib/awspec/generator/doc/type/ecs_task_definition.rb +19 -0
- data/lib/awspec/generator/doc/type/efs.rb +17 -0
- data/lib/awspec/generator/doc/type/eip.rb +17 -0
- data/lib/awspec/generator/doc/type/eks.rb +20 -0
- data/lib/awspec/generator/doc/type/elasticache.rb +22 -0
- data/lib/awspec/generator/doc/type/elasticache_cache_parameter_group.rb +17 -0
- data/lib/awspec/generator/doc/type/elasticsearch.rb +17 -0
- data/lib/awspec/generator/doc/type/elastictranscoder_pipeline.rb +21 -0
- data/lib/awspec/generator/doc/type/elb.rb +21 -0
- data/lib/awspec/generator/doc/type/emr.rb +19 -0
- data/lib/awspec/generator/doc/type/firehose.rb +17 -0
- data/lib/awspec/generator/doc/type/iam_group.rb +17 -0
- data/lib/awspec/generator/doc/type/iam_policy.rb +17 -0
- data/lib/awspec/generator/doc/type/iam_role.rb +17 -0
- data/lib/awspec/generator/doc/type/iam_user.rb +17 -0
- data/lib/awspec/generator/doc/type/internet_gateway.rb +17 -0
- data/lib/awspec/generator/doc/type/kinesis.rb +17 -0
- data/lib/awspec/generator/doc/type/kms.rb +17 -0
- data/lib/awspec/generator/doc/type/lambda.rb +17 -0
- data/lib/awspec/generator/doc/type/lambda_account_settings.rb +17 -0
- data/lib/awspec/generator/doc/type/launch_configuration.rb +17 -0
- data/lib/awspec/generator/doc/type/launch_template.rb +17 -0
- data/lib/awspec/generator/doc/type/mq.rb +19 -0
- data/lib/awspec/generator/doc/type/nat_gateway.rb +20 -0
- data/lib/awspec/generator/doc/type/network_acl.rb +20 -0
- data/lib/awspec/generator/doc/type/network_interface.rb +21 -0
- data/lib/awspec/generator/doc/type/nlb.rb +20 -0
- data/lib/awspec/generator/doc/type/nlb_listener.rb +18 -0
- data/lib/awspec/generator/doc/type/nlb_target_group.rb +17 -0
- data/lib/awspec/generator/doc/type/rds.rb +22 -0
- data/lib/awspec/generator/doc/type/rds_account_attributes.rb +17 -0
- data/lib/awspec/generator/doc/type/rds_db_cluster_parameter_group.rb +15 -0
- data/lib/awspec/generator/doc/type/rds_db_parameter_group.rb +15 -0
- data/lib/awspec/generator/doc/type/redshift.rb +21 -0
- data/lib/awspec/generator/doc/type/redshift_cluster_parameter_group.rb +17 -0
- data/lib/awspec/generator/doc/type/route53_hosted_zone.rb +16 -0
- data/lib/awspec/generator/doc/type/route_table.rb +16 -0
- data/lib/awspec/generator/doc/type/s3_bucket.rb +16 -0
- data/lib/awspec/generator/doc/type/secretsmanager.rb +17 -0
- data/lib/awspec/generator/doc/type/security_group.rb +16 -0
- data/lib/awspec/generator/doc/type/ses_identity.rb +22 -0
- data/lib/awspec/generator/doc/type/ses_send_quota.rb +17 -0
- data/lib/awspec/generator/doc/type/sns_topic.rb +18 -0
- data/lib/awspec/generator/doc/type/sqs.rb +17 -0
- data/lib/awspec/generator/doc/type/ssm_parameter.rb +17 -0
- data/lib/awspec/generator/doc/type/subnet.rb +18 -0
- data/lib/awspec/generator/doc/type/vpc.rb +19 -0
- data/lib/awspec/generator/doc/type/vpn_connection.rb +19 -0
- data/lib/awspec/generator/doc/type/vpn_gateway.rb +19 -0
- data/lib/awspec/generator/doc/type/waf_web_acl.rb +17 -0
- data/lib/awspec/generator/doc/type/wafregional_web_acl.rb +17 -0
- data/lib/awspec/generator/spec/acm.rb +43 -0
- data/lib/awspec/generator/spec/alb.rb +38 -0
- data/lib/awspec/generator/spec/alb_listener.rb +110 -0
- data/lib/awspec/generator/spec/autoscaling_group.rb +56 -0
- data/lib/awspec/generator/spec/cloudwatch_alarm.rb +43 -0
- data/lib/awspec/generator/spec/cloudwatch_event.rb +27 -0
- data/lib/awspec/generator/spec/cloudwatch_logs.rb +68 -0
- data/lib/awspec/generator/spec/codebuild.rb +23 -0
- data/lib/awspec/generator/spec/directconnect.rb +33 -0
- data/lib/awspec/generator/spec/ebs.rb +55 -0
- data/lib/awspec/generator/spec/ec2.rb +82 -0
- data/lib/awspec/generator/spec/efs.rb +28 -0
- data/lib/awspec/generator/spec/eip.rb +30 -0
- data/lib/awspec/generator/spec/elasticsearch.rb +41 -0
- data/lib/awspec/generator/spec/elb.rb +59 -0
- data/lib/awspec/generator/spec/iam_group.rb +39 -0
- data/lib/awspec/generator/spec/iam_policy.rb +56 -0
- data/lib/awspec/generator/spec/iam_role.rb +39 -0
- data/lib/awspec/generator/spec/iam_user.rb +39 -0
- data/lib/awspec/generator/spec/internet_gateway.rb +35 -0
- data/lib/awspec/generator/spec/kms.rb +34 -0
- data/lib/awspec/generator/spec/lambda.rb +29 -0
- data/lib/awspec/generator/spec/nat_gateway.rb +39 -0
- data/lib/awspec/generator/spec/network_acl.rb +96 -0
- data/lib/awspec/generator/spec/network_interface.rb +80 -0
- data/lib/awspec/generator/spec/nlb.rb +38 -0
- data/lib/awspec/generator/spec/nlb_listener.rb +110 -0
- data/lib/awspec/generator/spec/rds.rb +62 -0
- data/lib/awspec/generator/spec/rds_db_cluster_parameter_group.rb +23 -0
- data/lib/awspec/generator/spec/rds_db_parameter_group.rb +23 -0
- data/lib/awspec/generator/spec/redshift.rb +65 -0
- data/lib/awspec/generator/spec/redshift_cluster_parameter_group.rb +23 -0
- data/lib/awspec/generator/spec/route53_hosted_zone.rb +72 -0
- data/lib/awspec/generator/spec/route_table.rb +128 -0
- data/lib/awspec/generator/spec/s3_bucket.rb +124 -0
- data/lib/awspec/generator/spec/security_group.rb +95 -0
- data/lib/awspec/generator/spec/subnet.rb +47 -0
- data/lib/awspec/generator/spec/vpc.rb +65 -0
- data/lib/awspec/generator/template.rb +145 -0
- data/lib/awspec/helper.rb +8 -0
- data/lib/awspec/helper/client_wrap.rb +49 -0
- data/lib/awspec/helper/color.rb +5 -0
- data/lib/awspec/helper/finder.rb +168 -0
- data/lib/awspec/helper/finder/account_attributes.rb +61 -0
- data/lib/awspec/helper/finder/acm.rb +40 -0
- data/lib/awspec/helper/finder/alb.rb +68 -0
- data/lib/awspec/helper/finder/ami.rb +22 -0
- data/lib/awspec/helper/finder/apigateway.rb +35 -0
- data/lib/awspec/helper/finder/autoscaling.rb +60 -0
- data/lib/awspec/helper/finder/batch.rb +20 -0
- data/lib/awspec/helper/finder/cloudformation.rb +12 -0
- data/lib/awspec/helper/finder/cloudfront.rb +21 -0
- data/lib/awspec/helper/finder/cloudtrail.rb +29 -0
- data/lib/awspec/helper/finder/cloudwatch.rb +33 -0
- data/lib/awspec/helper/finder/cloudwatch_event.rb +15 -0
- data/lib/awspec/helper/finder/cloudwatch_logs.rb +93 -0
- data/lib/awspec/helper/finder/codebuild.rb +24 -0
- data/lib/awspec/helper/finder/codedeploy.rb +15 -0
- data/lib/awspec/helper/finder/directconnect.rb +19 -0
- data/lib/awspec/helper/finder/dynamodb.rb +10 -0
- data/lib/awspec/helper/finder/ebs.rb +43 -0
- data/lib/awspec/helper/finder/ec2.rb +203 -0
- data/lib/awspec/helper/finder/ecr.rb +10 -0
- data/lib/awspec/helper/finder/ecs.rb +45 -0
- data/lib/awspec/helper/finder/efs.rb +63 -0
- data/lib/awspec/helper/finder/eks.rb +10 -0
- data/lib/awspec/helper/finder/elasticache.rb +21 -0
- data/lib/awspec/helper/finder/elasticsearch.rb +19 -0
- data/lib/awspec/helper/finder/elastictranscoder.rb +21 -0
- data/lib/awspec/helper/finder/elb.rb +37 -0
- data/lib/awspec/helper/finder/emr.rb +9 -0
- data/lib/awspec/helper/finder/firehose.rb +13 -0
- data/lib/awspec/helper/finder/iam.rb +118 -0
- data/lib/awspec/helper/finder/kinesis.rb +14 -0
- data/lib/awspec/helper/finder/kms.rb +38 -0
- data/lib/awspec/helper/finder/lambda.rb +35 -0
- data/lib/awspec/helper/finder/mq.rb +11 -0
- data/lib/awspec/helper/finder/nlb.rb +68 -0
- data/lib/awspec/helper/finder/rds.rb +59 -0
- data/lib/awspec/helper/finder/redshift.rb +37 -0
- data/lib/awspec/helper/finder/route53.rb +41 -0
- data/lib/awspec/helper/finder/s3.rb +80 -0
- data/lib/awspec/helper/finder/secretsmanager.rb +11 -0
- data/lib/awspec/helper/finder/security_group.rb +35 -0
- data/lib/awspec/helper/finder/ses.rb +13 -0
- data/lib/awspec/helper/finder/sns_topic.rb +82 -0
- data/lib/awspec/helper/finder/sqs.rb +17 -0
- data/lib/awspec/helper/finder/ssm_parameter.rb +32 -0
- data/lib/awspec/helper/finder/subnet.rb +29 -0
- data/lib/awspec/helper/finder/vpc.rb +115 -0
- data/lib/awspec/helper/finder/waf.rb +53 -0
- data/lib/awspec/helper/finder/wafregional.rb +53 -0
- data/lib/awspec/helper/type.rb +72 -0
- data/lib/awspec/matcher.rb +85 -0
- data/lib/awspec/matcher/be_allowed.rb +25 -0
- data/lib/awspec/matcher/be_allowed_action.rb +19 -0
- data/lib/awspec/matcher/be_attached_to.rb +19 -0
- data/lib/awspec/matcher/be_connected_to_vpc.rb +13 -0
- data/lib/awspec/matcher/be_denied.rb +25 -0
- data/lib/awspec/matcher/be_opened.rb +17 -0
- data/lib/awspec/matcher/be_opened_only.rb +17 -0
- data/lib/awspec/matcher/belong_to_alb.rb +8 -0
- data/lib/awspec/matcher/belong_to_cache_subnet_group.rb +5 -0
- data/lib/awspec/matcher/belong_to_cluster_subnet_group.rb +5 -0
- data/lib/awspec/matcher/belong_to_db_subnet_group.rb +5 -0
- data/lib/awspec/matcher/belong_to_domain.rb +5 -0
- data/lib/awspec/matcher/belong_to_iam_group.rb +8 -0
- data/lib/awspec/matcher/belong_to_metric.rb +13 -0
- data/lib/awspec/matcher/belong_to_nlb.rb +8 -0
- data/lib/awspec/matcher/belong_to_replication_group.rb +6 -0
- data/lib/awspec/matcher/belong_to_subnet.rb +31 -0
- data/lib/awspec/matcher/belong_to_vpc.rb +8 -0
- data/lib/awspec/matcher/have_attribute_definition.rb +9 -0
- data/lib/awspec/matcher/have_cluster_parameter_group.rb +9 -0
- data/lib/awspec/matcher/have_custom_response_error_code.rb +21 -0
- data/lib/awspec/matcher/have_db_parameter_group.rb +9 -0
- data/lib/awspec/matcher/have_env_var.rb +9 -0
- data/lib/awspec/matcher/have_env_var_value.rb +18 -0
- data/lib/awspec/matcher/have_env_vars.rb +5 -0
- data/lib/awspec/matcher/have_inline_policy.rb +9 -0
- data/lib/awspec/matcher/have_key_policy.rb +9 -0
- data/lib/awspec/matcher/have_key_schema.rb +9 -0
- data/lib/awspec/matcher/have_network_interface.rb +15 -0
- data/lib/awspec/matcher/have_option_group.rb +9 -0
- data/lib/awspec/matcher/have_origin.rb +21 -0
- data/lib/awspec/matcher/have_private_ip_address.rb +9 -0
- data/lib/awspec/matcher/have_record_set.rb +41 -0
- data/lib/awspec/matcher/have_route.rb +34 -0
- data/lib/awspec/matcher/have_rule.rb +36 -0
- data/lib/awspec/matcher/have_subscription_attributes.rb +16 -0
- data/lib/awspec/matcher/have_subscription_filter.rb +9 -0
- data/lib/awspec/matcher/have_tag.rb +13 -0
- data/lib/awspec/matcher/have_vpc_peering_connection.rb +13 -0
- data/lib/awspec/matcher/include_subscribed.rb +5 -0
- data/lib/awspec/resource_reader.rb +58 -0
- data/lib/awspec/setup.rb +84 -0
- data/lib/awspec/shared_context.rb +37 -0
- data/lib/awspec/stub.rb +7 -0
- data/lib/awspec/stub/account.rb +147 -0
- data/lib/awspec/stub/acm.rb +34 -0
- data/lib/awspec/stub/alb.rb +261 -0
- data/lib/awspec/stub/alb_listener.rb +307 -0
- data/lib/awspec/stub/alb_target_group.rb +325 -0
- data/lib/awspec/stub/ami.rb +58 -0
- data/lib/awspec/stub/apigateway.rb +114 -0
- data/lib/awspec/stub/autoscaling_group.rb +241 -0
- data/lib/awspec/stub/batch_compute_environment.rb +40 -0
- data/lib/awspec/stub/batch_job_definition.rb +28 -0
- data/lib/awspec/stub/batch_job_queue.rb +22 -0
- data/lib/awspec/stub/cloudformation_stack.rb +49 -0
- data/lib/awspec/stub/cloudfront_distribution.rb +230 -0
- data/lib/awspec/stub/cloudtrail.rb +35 -0
- data/lib/awspec/stub/cloudwatch_alarm.rb +40 -0
- data/lib/awspec/stub/cloudwatch_event.rb +15 -0
- data/lib/awspec/stub/cloudwatch_logs.rb +41 -0
- data/lib/awspec/stub/codebuild.rb +10 -0
- data/lib/awspec/stub/codedeploy.rb +12 -0
- data/lib/awspec/stub/codedeploy_deployment_group.rb +39 -0
- data/lib/awspec/stub/customer_gateway.rb +16 -0
- data/lib/awspec/stub/directconnect_virtual_interface.rb +25 -0
- data/lib/awspec/stub/duplicated_resource_type.rb +26 -0
- data/lib/awspec/stub/dynamodb_table.rb +34 -0
- data/lib/awspec/stub/ebs.rb +67 -0
- data/lib/awspec/stub/ec2.rb +235 -0
- data/lib/awspec/stub/ec2_has_multi_security_groups.rb +21 -0
- data/lib/awspec/stub/ecr_repository.rb +13 -0
- data/lib/awspec/stub/ecs.rb +199 -0
- data/lib/awspec/stub/ecs_cluster.rb +99 -0
- data/lib/awspec/stub/ecs_container_instance.rb +78 -0
- data/lib/awspec/stub/ecs_service.rb +51 -0
- data/lib/awspec/stub/ecs_task_definition.rb +58 -0
- data/lib/awspec/stub/efs.rb +43 -0
- data/lib/awspec/stub/eip.rb +13 -0
- data/lib/awspec/stub/eks.rb +28 -0
- data/lib/awspec/stub/elasticache.rb +91 -0
- data/lib/awspec/stub/elasticache_cache_parameter_group.rb +28 -0
- data/lib/awspec/stub/elasticsearch.rb +52 -0
- data/lib/awspec/stub/elastictranscoder_pipeline.rb +63 -0
- data/lib/awspec/stub/elb.rb +166 -0
- data/lib/awspec/stub/emr.rb +65 -0
- data/lib/awspec/stub/firehose.rb +24 -0
- data/lib/awspec/stub/iam_group.rb +90 -0
- data/lib/awspec/stub/iam_policy.rb +70 -0
- data/lib/awspec/stub/iam_role.rb +60 -0
- data/lib/awspec/stub/iam_user.rb +71 -0
- data/lib/awspec/stub/internet_gateway.rb +36 -0
- data/lib/awspec/stub/kinesis.rb +37 -0
- data/lib/awspec/stub/kms.rb +75 -0
- data/lib/awspec/stub/lambda.rb +47 -0
- data/lib/awspec/stub/launch_configuration.rb +56 -0
- data/lib/awspec/stub/launch_template.rb +16 -0
- data/lib/awspec/stub/mq.rb +111 -0
- data/lib/awspec/stub/nat_gateway.rb +41 -0
- data/lib/awspec/stub/network_acl.rb +97 -0
- data/lib/awspec/stub/network_interface.rb +144 -0
- data/lib/awspec/stub/nlb.rb +119 -0
- data/lib/awspec/stub/nlb_listener.rb +131 -0
- data/lib/awspec/stub/nlb_target_group.rb +187 -0
- data/lib/awspec/stub/rds.rb +106 -0
- data/lib/awspec/stub/rds_db_cluster_parameter_group.rb +20 -0
- data/lib/awspec/stub/rds_db_parameter_group.rb +20 -0
- data/lib/awspec/stub/redshift.rb +67 -0
- data/lib/awspec/stub/redshift_cluster_parameter_group.rb +20 -0
- data/lib/awspec/stub/route53_hosted_zone.rb +169 -0
- data/lib/awspec/stub/route_table.rb +207 -0
- data/lib/awspec/stub/s3_bucket.rb +135 -0
- data/lib/awspec/stub/secretsmanager.rb +36 -0
- data/lib/awspec/stub/security_group.rb +159 -0
- data/lib/awspec/stub/ses_identity.rb +41 -0
- data/lib/awspec/stub/sns_topic.rb +29 -0
- data/lib/awspec/stub/sqs.rb +30 -0
- data/lib/awspec/stub/ssm_parameter.rb +16 -0
- data/lib/awspec/stub/subnet.rb +33 -0
- data/lib/awspec/stub/vpc.rb +114 -0
- data/lib/awspec/stub/vpn_connection.rb +20 -0
- data/lib/awspec/stub/vpn_gateway.rb +15 -0
- data/lib/awspec/stub/waf_web_acl.rb +62 -0
- data/lib/awspec/stub/wafregional_web_acl.rb +62 -0
- data/lib/awspec/toolbox.rb +18 -0
- data/lib/awspec/type/account.rb +39 -0
- data/lib/awspec/type/account_attribute.rb +28 -0
- data/lib/awspec/type/account_attribute_base.rb +4 -0
- data/lib/awspec/type/acm.rb +41 -0
- data/lib/awspec/type/alb.rb +54 -0
- data/lib/awspec/type/alb_listener.rb +43 -0
- data/lib/awspec/type/alb_target_group.rb +22 -0
- data/lib/awspec/type/ami.rb +25 -0
- data/lib/awspec/type/apigateway.rb +65 -0
- data/lib/awspec/type/autoscaling_group.rb +54 -0
- data/lib/awspec/type/base.rb +63 -0
- data/lib/awspec/type/batch_compute_environment.rb +32 -0
- data/lib/awspec/type/batch_job_definition.rb +16 -0
- data/lib/awspec/type/batch_job_queue.rb +31 -0
- data/lib/awspec/type/cloudformation_stack.rb +11 -0
- data/lib/awspec/type/cloudfront_distribution.rb +60 -0
- data/lib/awspec/type/cloudtrail.rb +35 -0
- data/lib/awspec/type/cloudwatch_alarm.rb +23 -0
- data/lib/awspec/type/cloudwatch_event.rb +19 -0
- data/lib/awspec/type/cloudwatch_logs.rb +37 -0
- data/lib/awspec/type/codebuild.rb +11 -0
- data/lib/awspec/type/codedeploy.rb +11 -0
- data/lib/awspec/type/codedeploy_deployment_group.rb +33 -0
- data/lib/awspec/type/customer_gateway.rb +40 -0
- data/lib/awspec/type/directconnect_virtual_interface.rb +27 -0
- data/lib/awspec/type/dynamodb_table.rb +40 -0
- data/lib/awspec/type/ebs.rb +37 -0
- data/lib/awspec/type/ec2.rb +154 -0
- data/lib/awspec/type/ec2_account_attributes.rb +7 -0
- data/lib/awspec/type/ecr_repository.rb +18 -0
- data/lib/awspec/type/ecs_cluster.rb +46 -0
- data/lib/awspec/type/ecs_container_instance.rb +30 -0
- data/lib/awspec/type/ecs_service.rb +29 -0
- data/lib/awspec/type/ecs_task_definition.rb +24 -0
- data/lib/awspec/type/efs.rb +22 -0
- data/lib/awspec/type/eip.rb +16 -0
- data/lib/awspec/type/eks.rb +24 -0
- data/lib/awspec/type/elasticache.rb +68 -0
- data/lib/awspec/type/elasticache_cache_parameter_group.rb +42 -0
- data/lib/awspec/type/elasticsearch.rb +23 -0
- data/lib/awspec/type/elastictranscoder_pipeline.rb +21 -0
- data/lib/awspec/type/elb.rb +94 -0
- data/lib/awspec/type/emr.rb +40 -0
- data/lib/awspec/type/firehose.rb +30 -0
- data/lib/awspec/type/iam_group.rb +48 -0
- data/lib/awspec/type/iam_policy.rb +60 -0
- data/lib/awspec/type/iam_role.rb +38 -0
- data/lib/awspec/type/iam_user.rb +38 -0
- data/lib/awspec/type/internet_gateway.rb +20 -0
- data/lib/awspec/type/kinesis.rb +73 -0
- data/lib/awspec/type/kms.rb +21 -0
- data/lib/awspec/type/lambda.rb +23 -0
- data/lib/awspec/type/lambda_account_settings.rb +7 -0
- data/lib/awspec/type/launch_configuration.rb +28 -0
- data/lib/awspec/type/launch_template.rb +34 -0
- data/lib/awspec/type/mq.rb +57 -0
- data/lib/awspec/type/nat_gateway.rb +29 -0
- data/lib/awspec/type/network_acl.rb +117 -0
- data/lib/awspec/type/network_interface.rb +56 -0
- data/lib/awspec/type/nlb.rb +35 -0
- data/lib/awspec/type/nlb_listener.rb +43 -0
- data/lib/awspec/type/nlb_target_group.rb +22 -0
- data/lib/awspec/type/rds.rb +109 -0
- data/lib/awspec/type/rds_account_attributes.rb +7 -0
- data/lib/awspec/type/rds_db_cluster_parameter_group.rb +21 -0
- data/lib/awspec/type/rds_db_parameter_group.rb +21 -0
- data/lib/awspec/type/redshift.rb +88 -0
- data/lib/awspec/type/redshift_cluster_parameter_group.rb +20 -0
- data/lib/awspec/type/resource_base.rb +24 -0
- data/lib/awspec/type/route53_hosted_zone.rb +65 -0
- data/lib/awspec/type/route_table.rb +84 -0
- data/lib/awspec/type/s3_bucket.rb +139 -0
- data/lib/awspec/type/secretsmanager.rb +14 -0
- data/lib/awspec/type/security_group.rb +148 -0
- data/lib/awspec/type/ses_identity.rb +70 -0
- data/lib/awspec/type/ses_send_quota.rb +7 -0
- data/lib/awspec/type/sns_topic.rb +50 -0
- data/lib/awspec/type/sqs.rb +37 -0
- data/lib/awspec/type/ssm_parameter.rb +26 -0
- data/lib/awspec/type/subnet.rb +39 -0
- data/lib/awspec/type/vpc.rb +66 -0
- data/lib/awspec/type/vpn_connection.rb +40 -0
- data/lib/awspec/type/vpn_gateway.rb +40 -0
- data/lib/awspec/type/waf_web_acl.rb +24 -0
- data/lib/awspec/type/wafregional_web_acl.rb +24 -0
- data/lib/awspec/version.rb +3 -0
- metadata +744 -0
@@ -0,0 +1,95 @@
|
|
1
|
+
module Awspec::Generator
|
2
|
+
module Spec
|
3
|
+
class SecurityGroup
|
4
|
+
include Awspec::Helper::Finder
|
5
|
+
def generate_by_vpc_id(vpc_id)
|
6
|
+
describes = %w(
|
7
|
+
group_id group_name
|
8
|
+
)
|
9
|
+
vpc = find_vpc(vpc_id)
|
10
|
+
raise 'Not Found VPC' unless vpc
|
11
|
+
@vpc_id = vpc[:vpc_id]
|
12
|
+
@vpc_tag_name = vpc.tag_name
|
13
|
+
sgs = select_security_group_by_vpc_id(@vpc_id)
|
14
|
+
|
15
|
+
specs = sgs.map do |sg|
|
16
|
+
linespecs = generate_linespecs(sg)
|
17
|
+
inbound_rule_count = sg[:ip_permissions].reduce(0) do |sum, permission|
|
18
|
+
sum += permission.ip_ranges.count + permission.user_id_group_pairs.count
|
19
|
+
end
|
20
|
+
outbound_rule_count = sg[:ip_permissions_egress].reduce(0) do |sum, permission|
|
21
|
+
sum += permission.ip_ranges.count + permission.user_id_group_pairs.count
|
22
|
+
end
|
23
|
+
content = ERB.new(security_group_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
|
24
|
+
end
|
25
|
+
specs.join("\n")
|
26
|
+
end
|
27
|
+
|
28
|
+
def generate_linespecs(sg)
|
29
|
+
linespecs = []
|
30
|
+
permissions = { 'inbound' => sg.ip_permissions, 'outbound' => sg.ip_permissions_egress }
|
31
|
+
%w(inbound outbound).each do |inout|
|
32
|
+
permissions[inout].each do |permission|
|
33
|
+
port = if permission.from_port.nil?
|
34
|
+
nil
|
35
|
+
elsif permission.from_port == permission.to_port
|
36
|
+
permission.from_port
|
37
|
+
else
|
38
|
+
"'" + permission.from_port.to_s + '-' + permission.to_port.to_s + "'"
|
39
|
+
end
|
40
|
+
|
41
|
+
protocol = if permission.ip_protocol.to_i < 0
|
42
|
+
'all'
|
43
|
+
else
|
44
|
+
permission.ip_protocol
|
45
|
+
end
|
46
|
+
|
47
|
+
permission.ip_ranges.each do |ip_range|
|
48
|
+
target = ip_range.cidr_ip
|
49
|
+
linespecs.push(ERB.new(security_group_spec_linetemplate, nil, '-').result(binding))
|
50
|
+
end
|
51
|
+
permission.user_id_group_pairs.each do |group|
|
52
|
+
target = group.group_name
|
53
|
+
target = group.group_id unless group.group_name
|
54
|
+
linespecs.push(ERB.new(security_group_spec_linetemplate, nil, '-').result(binding))
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
linespecs
|
59
|
+
end
|
60
|
+
|
61
|
+
def security_group_spec_linetemplate
|
62
|
+
template = <<-'EOF'
|
63
|
+
its(:<%= inout %>) { should be_opened<%- unless port.nil? -%>(<%= port %>)<%- end -%>.protocol('<%= protocol %>').for('<%= target %>') }
|
64
|
+
EOF
|
65
|
+
template
|
66
|
+
end
|
67
|
+
|
68
|
+
def security_group_spec_template
|
69
|
+
template = <<-'EOF'
|
70
|
+
describe security_group('<%= sg.group_name %>') do
|
71
|
+
it { should exist }
|
72
|
+
<% describes.each do |describe| %>
|
73
|
+
<%- if sg.key?(describe) -%>
|
74
|
+
its(:<%= describe %>) { should eq '<%= sg[describe] %>' }
|
75
|
+
<%- end -%>
|
76
|
+
<% end %>
|
77
|
+
<% linespecs.each do |line| %>
|
78
|
+
<%= line %>
|
79
|
+
<% end %>
|
80
|
+
its(:inbound_rule_count) { should eq <%= inbound_rule_count %> }
|
81
|
+
its(:outbound_rule_count) { should eq <%= outbound_rule_count %> }
|
82
|
+
its(:inbound_permissions_count) { should eq <%= sg.ip_permissions.count %> }
|
83
|
+
its(:outbound_permissions_count) { should eq <%= sg.ip_permissions_egress.count %> }
|
84
|
+
<%- if @vpc_tag_name -%>
|
85
|
+
it { should belong_to_vpc('<%= @vpc_tag_name %>') }
|
86
|
+
<%- else -%>
|
87
|
+
it { should belong_to_vpc('<%= @vpc_id %>') }
|
88
|
+
<%- end -%>
|
89
|
+
end
|
90
|
+
EOF
|
91
|
+
template
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Awspec::Generator
|
2
|
+
module Spec
|
3
|
+
class Subnet
|
4
|
+
include Awspec::Helper::Finder
|
5
|
+
def generate_by_vpc_id(vpc_id)
|
6
|
+
describes = %w(
|
7
|
+
subnet_id cidr_block
|
8
|
+
)
|
9
|
+
vpc = find_vpc(vpc_id)
|
10
|
+
raise 'Not Found VPC' unless vpc
|
11
|
+
@vpc_id = vpc[:vpc_id]
|
12
|
+
@vpc_tag_name = vpc.tag_name
|
13
|
+
subnets = select_subnet_by_vpc_id(@vpc_id)
|
14
|
+
specs = subnets.map do |subnet|
|
15
|
+
subnet_id = subnet[:subnet_id]
|
16
|
+
subnet_tag_name = subnet.tag_name
|
17
|
+
content = ERB.new(subnet_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
|
18
|
+
end
|
19
|
+
specs.join("\n")
|
20
|
+
end
|
21
|
+
|
22
|
+
def subnet_spec_template
|
23
|
+
template = <<-'EOF'
|
24
|
+
<%- if subnet_tag_name -%>
|
25
|
+
describe subnet('<%= subnet_tag_name %>') do
|
26
|
+
<%- else -%>
|
27
|
+
describe subnet('<%= subnet_id %>') do
|
28
|
+
<%- end -%>
|
29
|
+
it { should exist }
|
30
|
+
it { should be_<%= subnet.state %> }
|
31
|
+
it { should belong_to_vpc('<%= @vpc_tag_name %>') }
|
32
|
+
<% describes.each do |describe| %>
|
33
|
+
<%- if subnet.members.include?(describe.to_sym) && !subnet[describe.to_sym].nil? -%>
|
34
|
+
<%- if subnet[describe].is_a?(String) -%>
|
35
|
+
its(:<%= describe %>) { should eq '<%= subnet[describe] %>' }
|
36
|
+
<%- else -%>
|
37
|
+
its(:<%= describe %>) { should eq <%= subnet[describe] %> }
|
38
|
+
<%- end -%>
|
39
|
+
<%- end -%>
|
40
|
+
<% end %>
|
41
|
+
end
|
42
|
+
EOF
|
43
|
+
template
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Awspec::Generator
|
2
|
+
module Spec
|
3
|
+
class Vpc
|
4
|
+
include Awspec::Helper::Finder
|
5
|
+
def generate_by_vpc_id(vpc_id)
|
6
|
+
describes = %w(
|
7
|
+
vpc_id cidr_block
|
8
|
+
)
|
9
|
+
vpc = find_vpc(vpc_id)
|
10
|
+
raise 'Not Found VPC' unless vpc
|
11
|
+
@vpc_id = vpc[:vpc_id]
|
12
|
+
@vpc_tag_name = vpc.tag_name
|
13
|
+
route_tables = select_route_table_by_vpc_id(@vpc_id)
|
14
|
+
network_acls = select_network_acl_by_vpc_id(@vpc_id)
|
15
|
+
vpc_attributes = select_vpc_attribute(@vpc_id)
|
16
|
+
spec = ERB.new(vpc_spec_template, nil, '-').result(binding).gsub(/^\n/, '')
|
17
|
+
end
|
18
|
+
|
19
|
+
# rubocop:disable all
|
20
|
+
def vpc_spec_template
|
21
|
+
template = <<-'EOF'
|
22
|
+
<%- if @vpc_tag_name -%>
|
23
|
+
describe vpc('<%= @vpc_tag_name %>') do
|
24
|
+
<%- else -%>
|
25
|
+
describe vpc('<%= @vpc_id %>') do
|
26
|
+
<%- end -%>
|
27
|
+
it { should exist }
|
28
|
+
it { should be_<%= vpc.state %> }
|
29
|
+
<% describes.each do |describe| %>
|
30
|
+
<%- if vpc.key?(describe) -%>
|
31
|
+
<%- if vpc[describe].is_a?(String) -%>
|
32
|
+
its(:<%= describe %>) { should eq '<%= vpc[describe] %>' }
|
33
|
+
<%- else -%>
|
34
|
+
its(:<%= describe %>) { should eq <%= vpc[describe] %> }
|
35
|
+
<%- end -%>
|
36
|
+
<%- end -%>
|
37
|
+
<% end %>
|
38
|
+
<% route_tables.each do |route_table| %>
|
39
|
+
<%- if route_table.tag_name -%>
|
40
|
+
it { should have_route_table('<%= route_table.tag_name %>') }
|
41
|
+
<%- else -%>
|
42
|
+
it { should have_route_table('<%= route_table.route_table_id %>') }
|
43
|
+
<%- end -%>
|
44
|
+
<% end %>
|
45
|
+
<% network_acls.each do |network_acl| %>
|
46
|
+
<%- if network_acl.tag_name -%>
|
47
|
+
it { should have_network_acl('<%= network_acl.tag_name %>') }
|
48
|
+
<%- else -%>
|
49
|
+
it { should have_network_acl('<%= network_acl.network_acl_id %>') }
|
50
|
+
<%- end -%>
|
51
|
+
<% end %>
|
52
|
+
<% vpc_attributes.each do |vpc_attribute| %>
|
53
|
+
<%- if vpc_attribute[1] -%>
|
54
|
+
it { should have_vpc_attribute('<%= vpc_attribute[0] %>') }
|
55
|
+
<%- else -%>
|
56
|
+
it { should_not have_vpc_attribute('<%= vpc_attribute[0] %>') }
|
57
|
+
<%- end -%>
|
58
|
+
<% end %>
|
59
|
+
end
|
60
|
+
EOF
|
61
|
+
template
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,145 @@
|
|
1
|
+
module Awspec::Generator
|
2
|
+
class Template
|
3
|
+
def self.generate(type)
|
4
|
+
@type = type
|
5
|
+
@account_attribute = false
|
6
|
+
@root_path = File.dirname(__FILE__) + '/../../../'
|
7
|
+
generate_stub
|
8
|
+
generate_type
|
9
|
+
generate_type_spec
|
10
|
+
generate_generator_doc
|
11
|
+
generate_resource_type_doc
|
12
|
+
put_message
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.generate_account_attribute(type)
|
16
|
+
@type = type
|
17
|
+
@account_attribute = true
|
18
|
+
@root_path = File.dirname(__FILE__) + '/../../../'
|
19
|
+
generate_type
|
20
|
+
generate_account_attribute_generator_doc
|
21
|
+
generate_resource_type_doc
|
22
|
+
put_message
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.generate_type
|
26
|
+
path = 'lib/awspec/type/' + @type.underscore + '.rb'
|
27
|
+
base = @account_attribute ? 'AccountAttributeBase' : 'ResourceBase'
|
28
|
+
content = <<-"EOF"
|
29
|
+
module Awspec::Type
|
30
|
+
class #{@type.camelize} < #{base}
|
31
|
+
def resource_via_client
|
32
|
+
@resource_via_client ||= # FIXME
|
33
|
+
end
|
34
|
+
|
35
|
+
def id
|
36
|
+
@id ||= # FIXME
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
EOF
|
41
|
+
self.file_check_and_puts(path, content)
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.generate_stub
|
45
|
+
path = 'lib/awspec/stub/' + @type.underscore + '.rb'
|
46
|
+
content = <<-"EOF"
|
47
|
+
# Aws.config[:ec2] = {
|
48
|
+
# stub_responses: true
|
49
|
+
# }
|
50
|
+
EOF
|
51
|
+
self.file_check_and_puts(path, content)
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.generate_type_spec
|
55
|
+
path = 'spec/type/' + @type.underscore + '_spec.rb'
|
56
|
+
content = <<-"EOF"
|
57
|
+
require 'spec_helper'
|
58
|
+
Awspec::Stub.load '#{@type.underscore}'
|
59
|
+
|
60
|
+
describe #{@type.underscore}('my-#{@type.underscore.tr('_', '-')}') do
|
61
|
+
it { should exist }
|
62
|
+
end
|
63
|
+
EOF
|
64
|
+
self.file_check_and_puts(path, content)
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.generate_generator_doc
|
68
|
+
path = 'lib/awspec/generator/doc/type/' + @type.underscore + '.rb'
|
69
|
+
content = <<-"EOF"
|
70
|
+
module Awspec::Generator
|
71
|
+
module Doc
|
72
|
+
module Type
|
73
|
+
class #{@type.camelize} < Base
|
74
|
+
def initialize
|
75
|
+
super
|
76
|
+
@type_name = '#{@type.camelize}'
|
77
|
+
@type = Awspec::Type::#{@type.camelize}.new('my-#{@type.underscore.tr('_', '-')}')
|
78
|
+
@ret = @type.resource_via_client
|
79
|
+
@matchers = []
|
80
|
+
@ignore_matchers = []
|
81
|
+
@describes = []
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
EOF
|
88
|
+
self.file_check_and_puts(path, content)
|
89
|
+
end
|
90
|
+
|
91
|
+
def self.generate_account_attribute_generator_doc
|
92
|
+
path = 'lib/awspec/generator/doc/type/' + @type.underscore + '.rb'
|
93
|
+
content = <<-"EOF"
|
94
|
+
module Awspec::Generator
|
95
|
+
module Doc
|
96
|
+
module Type
|
97
|
+
class #{@type.camelize} < AccountAttributeBase
|
98
|
+
def initialize
|
99
|
+
super
|
100
|
+
@type_name = '#{@type.camelize}'
|
101
|
+
@type = Awspec::Type::#{@type.camelize}.new
|
102
|
+
@ret = @type.resource_via_client
|
103
|
+
@matchers = []
|
104
|
+
@ignore_matchers = []
|
105
|
+
@describes = []
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
EOF
|
112
|
+
self.file_check_and_puts(path, content)
|
113
|
+
end
|
114
|
+
|
115
|
+
def self.generate_resource_type_doc
|
116
|
+
path = 'doc/_resource_types/' + @type.underscore + '.md'
|
117
|
+
content = <<-"EOF"
|
118
|
+
### exist
|
119
|
+
EOF
|
120
|
+
self.file_check_and_puts(path, content)
|
121
|
+
end
|
122
|
+
|
123
|
+
def self.put_message
|
124
|
+
content = <<-"EOF"
|
125
|
+
|
126
|
+
Generate #{@type.camelize} template files.
|
127
|
+
|
128
|
+
* !! AND add '#{@type.underscore}' to Awspec::Helper::Type::TYPES in lib/awspec/helper/type.rb *
|
129
|
+
* !! AND add '#{@type.underscore}' client to lib/awspec/helper/finder.rb *
|
130
|
+
|
131
|
+
EOF
|
132
|
+
end
|
133
|
+
|
134
|
+
def self.file_check_and_puts(path, content)
|
135
|
+
if File.exist? @root_path + path
|
136
|
+
$stderr.puts "!! #{path} already exists"
|
137
|
+
else
|
138
|
+
File.open(@root_path + path, 'w') do |f|
|
139
|
+
f.puts content
|
140
|
+
end
|
141
|
+
puts " + #{path}"
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'awspec/config'
|
2
|
+
|
3
|
+
module Awspec::Helper
|
4
|
+
class ClientWrap
|
5
|
+
attr_reader :client, :backoff, :iteration, :backoff_limit, :symbol
|
6
|
+
def initialize(real_client = nil)
|
7
|
+
raise ArgumentError, 'Client can not be nil' if real_client.nil?
|
8
|
+
config = Awspec::Config.instance
|
9
|
+
@client = real_client
|
10
|
+
@backoff = config[:client_backoff]
|
11
|
+
@orig_backoff = @backoff
|
12
|
+
@iteration = config[:client_iteration]
|
13
|
+
@orig_iter = @iteration
|
14
|
+
@backoff_limit = config[:client_backoff_limit]
|
15
|
+
# build the symbol we'll use to compare to any errors caught in method_missing
|
16
|
+
# below.
|
17
|
+
@symbol = real_client.class.to_s.split('::').shift(2).push('Errors', 'RequestLimitExceeded').join('::').to_sym
|
18
|
+
end
|
19
|
+
|
20
|
+
protected
|
21
|
+
|
22
|
+
# used to capture only the "RequestLimitExceeded" error from an aws
|
23
|
+
# client api call. In the case of matching it we want to try again,
|
24
|
+
# backing off successively each time, until the backoff_limit is reached or
|
25
|
+
# exceeded, in which case, the error will be re-raised and it should fail
|
26
|
+
# as expected.
|
27
|
+
def method_missing(m, *args, &block)
|
28
|
+
begin
|
29
|
+
results = client.send(m, *args, &block)
|
30
|
+
rescue Exception => e # rubocop:disable Lint/RescueException
|
31
|
+
raise unless e.class.to_s == symbol.to_s && backoff < backoff_limit
|
32
|
+
|
33
|
+
@backoff = backoff + (iteration * iteration * 0.5)
|
34
|
+
@iteration += 1
|
35
|
+
sleep backoff
|
36
|
+
results = self.send(m, *args, &block)
|
37
|
+
end
|
38
|
+
|
39
|
+
reset_backoff
|
40
|
+
|
41
|
+
results
|
42
|
+
end
|
43
|
+
|
44
|
+
def reset_backoff
|
45
|
+
@backoff = @orig_backoff
|
46
|
+
@iteration = @orig_iter
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,168 @@
|
|
1
|
+
require 'aws-sdk'
|
2
|
+
require 'awspec/helper/finder/nlb'
|
3
|
+
require 'awspec/helper/finder/alb'
|
4
|
+
require 'awspec/helper/finder/vpc'
|
5
|
+
require 'awspec/helper/finder/subnet'
|
6
|
+
require 'awspec/helper/finder/ec2'
|
7
|
+
require 'awspec/helper/finder/ecr'
|
8
|
+
require 'awspec/helper/finder/ecs'
|
9
|
+
require 'awspec/helper/finder/efs'
|
10
|
+
require 'awspec/helper/finder/security_group'
|
11
|
+
require 'awspec/helper/finder/rds'
|
12
|
+
require 'awspec/helper/finder/route53'
|
13
|
+
require 'awspec/helper/finder/s3'
|
14
|
+
require 'awspec/helper/finder/autoscaling'
|
15
|
+
require 'awspec/helper/finder/ebs'
|
16
|
+
require 'awspec/helper/finder/elb'
|
17
|
+
require 'awspec/helper/finder/firehose'
|
18
|
+
require 'awspec/helper/finder/lambda'
|
19
|
+
require 'awspec/helper/finder/iam'
|
20
|
+
require 'awspec/helper/finder/kms'
|
21
|
+
require 'awspec/helper/finder/elasticache'
|
22
|
+
require 'awspec/helper/finder/elasticsearch'
|
23
|
+
require 'awspec/helper/finder/cloudwatch'
|
24
|
+
require 'awspec/helper/finder/cloudwatch_event'
|
25
|
+
require 'awspec/helper/finder/ses'
|
26
|
+
require 'awspec/helper/finder/directconnect'
|
27
|
+
require 'awspec/helper/finder/ami'
|
28
|
+
require 'awspec/helper/finder/cloudfront'
|
29
|
+
require 'awspec/helper/finder/elastictranscoder'
|
30
|
+
require 'awspec/helper/finder/cloudtrail'
|
31
|
+
require 'awspec/helper/finder/waf'
|
32
|
+
require 'awspec/helper/finder/wafregional'
|
33
|
+
require 'awspec/helper/finder/acm'
|
34
|
+
require 'awspec/helper/finder/cloudwatch_logs'
|
35
|
+
require 'awspec/helper/finder/dynamodb'
|
36
|
+
require 'awspec/helper/finder/sqs'
|
37
|
+
require 'awspec/helper/finder/cloudformation'
|
38
|
+
require 'awspec/helper/finder/ssm_parameter'
|
39
|
+
require 'awspec/helper/finder/codebuild'
|
40
|
+
require 'awspec/helper/finder/apigateway'
|
41
|
+
require 'awspec/helper/finder/kinesis'
|
42
|
+
require 'awspec/helper/finder/batch'
|
43
|
+
require 'awspec/helper/finder/eks'
|
44
|
+
require 'awspec/helper/finder/sns_topic'
|
45
|
+
require 'awspec/helper/finder/emr'
|
46
|
+
require 'awspec/helper/finder/redshift'
|
47
|
+
require 'awspec/helper/finder/codedeploy'
|
48
|
+
require 'awspec/helper/finder/mq'
|
49
|
+
require 'awspec/helper/finder/secretsmanager'
|
50
|
+
|
51
|
+
require 'awspec/helper/finder/account_attributes'
|
52
|
+
|
53
|
+
require 'awspec/helper/client_wrap'
|
54
|
+
|
55
|
+
module Awspec::Helper
|
56
|
+
module Finder
|
57
|
+
include Awspec::Helper::Finder::Nlb
|
58
|
+
include Awspec::Helper::Finder::Alb
|
59
|
+
include Awspec::Helper::Finder::Vpc
|
60
|
+
include Awspec::Helper::Finder::Subnet
|
61
|
+
include Awspec::Helper::Finder::Ec2
|
62
|
+
include Awspec::Helper::Finder::Ecr
|
63
|
+
include Awspec::Helper::Finder::Ecs
|
64
|
+
include Awspec::Helper::Finder::Efs
|
65
|
+
include Awspec::Helper::Finder::Firehose
|
66
|
+
include Awspec::Helper::Finder::SecurityGroup
|
67
|
+
include Awspec::Helper::Finder::Rds
|
68
|
+
include Awspec::Helper::Finder::Route53
|
69
|
+
include Awspec::Helper::Finder::S3
|
70
|
+
include Awspec::Helper::Finder::Autoscaling
|
71
|
+
include Awspec::Helper::Finder::Ebs
|
72
|
+
include Awspec::Helper::Finder::Elb
|
73
|
+
include Awspec::Helper::Finder::Lambda
|
74
|
+
include Awspec::Helper::Finder::Iam
|
75
|
+
include Awspec::Helper::Finder::Kms
|
76
|
+
include Awspec::Helper::Finder::Elasticache
|
77
|
+
include Awspec::Helper::Finder::Elasticsearch
|
78
|
+
include Awspec::Helper::Finder::Cloudwatch
|
79
|
+
include Awspec::Helper::Finder::CloudwatchEvent
|
80
|
+
include Awspec::Helper::Finder::Ses
|
81
|
+
include Awspec::Helper::Finder::Directconnect
|
82
|
+
include Awspec::Helper::Finder::Ami
|
83
|
+
include Awspec::Helper::Finder::Cloudfront
|
84
|
+
include Awspec::Helper::Finder::Elastictranscoder
|
85
|
+
include Awspec::Helper::Finder::Cloudtrail
|
86
|
+
include Awspec::Helper::Finder::Waf
|
87
|
+
include Awspec::Helper::Finder::WafRegional
|
88
|
+
include Awspec::Helper::Finder::Acm
|
89
|
+
include Awspec::Helper::Finder::AccountAttributes
|
90
|
+
include Awspec::Helper::Finder::CloudwatchLogs
|
91
|
+
include Awspec::Helper::Finder::Dynamodb
|
92
|
+
include Awspec::Helper::Finder::Sqs
|
93
|
+
include Awspec::Helper::Finder::SsmParameter
|
94
|
+
include Awspec::Helper::Finder::Cloudformation
|
95
|
+
include Awspec::Helper::Finder::Codebuild
|
96
|
+
include Awspec::Helper::Finder::Apigateway
|
97
|
+
include Awspec::Helper::Finder::Kinesis
|
98
|
+
include Awspec::Helper::Finder::Batch
|
99
|
+
include Awspec::Helper::Finder::Eks
|
100
|
+
include Awspec::Helper::Finder::SNSTopic
|
101
|
+
include Awspec::Helper::Finder::Emr
|
102
|
+
include Awspec::Helper::Finder::Redshift
|
103
|
+
include Awspec::Helper::Finder::Codedeploy
|
104
|
+
include Awspec::Helper::Finder::Mq
|
105
|
+
include Awspec::Helper::Finder::Secretsmanager
|
106
|
+
|
107
|
+
CLIENTS = {
|
108
|
+
ec2_client: Aws::EC2::Client,
|
109
|
+
ecr_client: Aws::ECR::Client,
|
110
|
+
ecs_client: Aws::ECS::Client,
|
111
|
+
efs_client: Aws::EFS::Client,
|
112
|
+
firehose_client: Aws::Firehose::Client,
|
113
|
+
rds_client: Aws::RDS::Client,
|
114
|
+
route53_client: Aws::Route53::Client,
|
115
|
+
s3_client: Aws::S3::Client,
|
116
|
+
autoscaling_client: Aws::AutoScaling::Client,
|
117
|
+
elb_client: Aws::ElasticLoadBalancing::Client,
|
118
|
+
elbv2_client: Aws::ElasticLoadBalancingV2::Client,
|
119
|
+
lambda_client: Aws::Lambda::Client,
|
120
|
+
iam_client: Aws::IAM::Client,
|
121
|
+
kms_client: Aws::KMS::Client,
|
122
|
+
elasticache_client: Aws::ElastiCache::Client,
|
123
|
+
cloudwatch_client: Aws::CloudWatch::Client,
|
124
|
+
cloudwatch_event_client: Aws::CloudWatchEvents::Client,
|
125
|
+
ses_client: Aws::SES::Client,
|
126
|
+
directconnect_client: Aws::DirectConnect::Client,
|
127
|
+
cloudfront_client: Aws::CloudFront::Client,
|
128
|
+
elastictranscoder_client: Aws::ElasticTranscoder::Client,
|
129
|
+
elasticsearch_client: Aws::ElasticsearchService::Client,
|
130
|
+
cloudtrail_client: Aws::CloudTrail::Client,
|
131
|
+
waf_client: Aws::WAF::Client,
|
132
|
+
wafregional_client: Aws::WAFRegional::Client,
|
133
|
+
sts_client: Aws::STS::Client,
|
134
|
+
acm_client: Aws::ACM::Client,
|
135
|
+
cloudwatch_logs_client: Aws::CloudWatchLogs::Client,
|
136
|
+
dynamodb_client: Aws::DynamoDB::Client,
|
137
|
+
sqs_client: Aws::SQS::Client,
|
138
|
+
ssm_client: Aws::SSM::Client,
|
139
|
+
cloudformation_client: Aws::CloudFormation::Client,
|
140
|
+
codebuild_client: Aws::CodeBuild::Client,
|
141
|
+
apigateway_client: Aws::APIGateway::Client,
|
142
|
+
kinesis_client: Aws::Kinesis::Client,
|
143
|
+
batch_client: Aws::Batch::Client,
|
144
|
+
eks_client: Aws::EKS::Client,
|
145
|
+
sns_client: Aws::SNS::Client,
|
146
|
+
emr_client: Aws::EMR::Client,
|
147
|
+
redshift_client: Aws::Redshift::Client,
|
148
|
+
codedeploy_client: Aws::CodeDeploy::Client,
|
149
|
+
mq_client: Aws::MQ::Client,
|
150
|
+
secretsmanager_client: Aws::SecretsManager::Client
|
151
|
+
}
|
152
|
+
|
153
|
+
CLIENT_OPTIONS = {
|
154
|
+
http_proxy: ENV['http_proxy'] || ENV['https_proxy'] || nil
|
155
|
+
}
|
156
|
+
|
157
|
+
CLIENTS.each do |method_name, client|
|
158
|
+
define_method method_name do
|
159
|
+
unless self.methods.include? "@#{method_name}"
|
160
|
+
instance_variable_set(
|
161
|
+
"@#{method_name}",
|
162
|
+
Awspec::Helper::ClientWrap.new(client.new(CLIENT_OPTIONS))
|
163
|
+
)
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|