awspec-api_gateway_extended 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +12 -0
  3. data/.rubocop.yml +93 -0
  4. data/.tachikoma.yml +1 -0
  5. data/.travis.yml +21 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +191 -0
  9. data/Rakefile +64 -0
  10. data/awspec-logo.png +0 -0
  11. data/awspec.gemspec +40 -0
  12. data/bin/console +7 -0
  13. data/bin/setup +5 -0
  14. data/bin/toolbox +5 -0
  15. data/doc/_resource_types/acm.md +24 -0
  16. data/doc/_resource_types/alb.md +47 -0
  17. data/doc/_resource_types/alb_listener.md +29 -0
  18. data/doc/_resource_types/alb_target_group.md +35 -0
  19. data/doc/_resource_types/ami.md +19 -0
  20. data/doc/_resource_types/apigateway.md +7 -0
  21. data/doc/_resource_types/autoscaling_group.md +47 -0
  22. data/doc/_resource_types/batch_compute_environment.md +23 -0
  23. data/doc/_resource_types/batch_job_definition.md +7 -0
  24. data/doc/_resource_types/batch_job_queue.md +23 -0
  25. data/doc/_resource_types/cloudformation_stack.md +8 -0
  26. data/doc/_resource_types/cloudfront_distribution.md +67 -0
  27. data/doc/_resource_types/cloudtrail.md +47 -0
  28. data/doc/_resource_types/cloudwatch_alarm.md +39 -0
  29. data/doc/_resource_types/cloudwatch_logs.md +48 -0
  30. data/doc/_resource_types/codebuild.md +1 -0
  31. data/doc/_resource_types/codedeploy.md +1 -0
  32. data/doc/_resource_types/codedeploy_deployment_group.md +17 -0
  33. data/doc/_resource_types/customer_gateway.md +25 -0
  34. data/doc/_resource_types/directconnect_virtual_interface.md +30 -0
  35. data/doc/_resource_types/dynamodb_table.md +52 -0
  36. data/doc/_resource_types/ebs.md +49 -0
  37. data/doc/_resource_types/ec2.md +203 -0
  38. data/doc/_resource_types/ec2_account_attributes.md +8 -0
  39. data/doc/_resource_types/ecs_cluster.md +23 -0
  40. data/doc/_resource_types/ecs_container_instance.md +18 -0
  41. data/doc/_resource_types/ecs_service.md +15 -0
  42. data/doc/_resource_types/ecs_task_definition.md +15 -0
  43. data/doc/_resource_types/efs.md +15 -0
  44. data/doc/_resource_types/eip.md +23 -0
  45. data/doc/_resource_types/eks.md +14 -0
  46. data/doc/_resource_types/elasticache.md +57 -0
  47. data/doc/_resource_types/elasticache_cache_parameter_group.md +17 -0
  48. data/doc/_resource_types/elasticsearch.md +48 -0
  49. data/doc/_resource_types/elastictranscoder_pipeline.md +15 -0
  50. data/doc/_resource_types/elb.md +82 -0
  51. data/doc/_resource_types/emr.md +21 -0
  52. data/doc/_resource_types/firehose.md +31 -0
  53. data/doc/_resource_types/iam_group.md +94 -0
  54. data/doc/_resource_types/iam_policy.md +39 -0
  55. data/doc/_resource_types/iam_role.md +78 -0
  56. data/doc/_resource_types/iam_user.md +86 -0
  57. data/doc/_resource_types/internet_gateway.md +31 -0
  58. data/doc/_resource_types/kinesis.md +7 -0
  59. data/doc/_resource_types/kms.md +70 -0
  60. data/doc/_resource_types/lambda.md +40 -0
  61. data/doc/_resource_types/lambda_account_settings.md +10 -0
  62. data/doc/_resource_types/launch_configuration.md +15 -0
  63. data/doc/_resource_types/launch_template.md +48 -0
  64. data/doc/_resource_types/mq.md +33 -0
  65. data/doc/_resource_types/nat_gateway.md +39 -0
  66. data/doc/_resource_types/network_acl.md +61 -0
  67. data/doc/_resource_types/network_interface.md +66 -0
  68. data/doc/_resource_types/nlb.md +41 -0
  69. data/doc/_resource_types/nlb_listener.md +29 -0
  70. data/doc/_resource_types/nlb_target_group.md +35 -0
  71. data/doc/_resource_types/rds.md +100 -0
  72. data/doc/_resource_types/rds_account_attributes.md +8 -0
  73. data/doc/_resource_types/rds_db_cluster_parameter_group.md +16 -0
  74. data/doc/_resource_types/rds_db_parameter_group.md +15 -0
  75. data/doc/_resource_types/redshift.md +61 -0
  76. data/doc/_resource_types/redshift_cluster_parameter_group.md +17 -0
  77. data/doc/_resource_types/route53_hosted_zone.md +27 -0
  78. data/doc/_resource_types/route_table.md +60 -0
  79. data/doc/_resource_types/s3_bucket.md +158 -0
  80. data/doc/_resource_types/secretsmanager.md +15 -0
  81. data/doc/_resource_types/security_group.md +44 -0
  82. data/doc/_resource_types/ses_identity.md +17 -0
  83. data/doc/_resource_types/ses_send_quota.md +9 -0
  84. data/doc/_resource_types/sns_topic.md +134 -0
  85. data/doc/_resource_types/sqs.md +7 -0
  86. data/doc/_resource_types/ssm_parameter.md +33 -0
  87. data/doc/_resource_types/subnet.md +41 -0
  88. data/doc/_resource_types/vpc.md +88 -0
  89. data/doc/_resource_types/vpn_connection.md +25 -0
  90. data/doc/_resource_types/vpn_gateway.md +25 -0
  91. data/doc/_resource_types/waf_web_acl.md +29 -0
  92. data/doc/_resource_types/wafregional_web_acl.md +29 -0
  93. data/doc/contributing.md +45 -0
  94. data/doc/resource_types.md +3860 -0
  95. data/exe/awspec +5 -0
  96. data/lib/awspec.rb +23 -0
  97. data/lib/awspec/cli.rb +25 -0
  98. data/lib/awspec/command/generate.rb +69 -0
  99. data/lib/awspec/config.rb +41 -0
  100. data/lib/awspec/error.rb +32 -0
  101. data/lib/awspec/ext.rb +4 -0
  102. data/lib/awspec/ext/array.rb +8 -0
  103. data/lib/awspec/ext/hash.rb +10 -0
  104. data/lib/awspec/ext/string.rb +17 -0
  105. data/lib/awspec/ext/struct.rb +8 -0
  106. data/lib/awspec/generator.rb +55 -0
  107. data/lib/awspec/generator/doc/type.rb +60 -0
  108. data/lib/awspec/generator/doc/type/account.rb +71 -0
  109. data/lib/awspec/generator/doc/type/account_attribute.rb +69 -0
  110. data/lib/awspec/generator/doc/type/account_attribute_base.rb +32 -0
  111. data/lib/awspec/generator/doc/type/acm.rb +19 -0
  112. data/lib/awspec/generator/doc/type/alb.rb +21 -0
  113. data/lib/awspec/generator/doc/type/alb_listener.rb +18 -0
  114. data/lib/awspec/generator/doc/type/alb_target_group.rb +17 -0
  115. data/lib/awspec/generator/doc/type/ami.rb +19 -0
  116. data/lib/awspec/generator/doc/type/apigateway.rb +17 -0
  117. data/lib/awspec/generator/doc/type/autoscaling_group.rb +16 -0
  118. data/lib/awspec/generator/doc/type/base.rb +99 -0
  119. data/lib/awspec/generator/doc/type/batch_compute_environment.rb +23 -0
  120. data/lib/awspec/generator/doc/type/batch_job_definition.rb +17 -0
  121. data/lib/awspec/generator/doc/type/batch_job_queue.rb +17 -0
  122. data/lib/awspec/generator/doc/type/cloudformation_stack.rb +17 -0
  123. data/lib/awspec/generator/doc/type/cloudfront_distribution.rb +20 -0
  124. data/lib/awspec/generator/doc/type/cloudtrail.rb +17 -0
  125. data/lib/awspec/generator/doc/type/cloudwatch_alarm.rb +17 -0
  126. data/lib/awspec/generator/doc/type/cloudwatch_event.rb +17 -0
  127. data/lib/awspec/generator/doc/type/cloudwatch_logs.rb +17 -0
  128. data/lib/awspec/generator/doc/type/codebuild.rb +17 -0
  129. data/lib/awspec/generator/doc/type/codedeploy.rb +17 -0
  130. data/lib/awspec/generator/doc/type/codedeploy_deployment_group.rb +17 -0
  131. data/lib/awspec/generator/doc/type/customer_gateway.rb +19 -0
  132. data/lib/awspec/generator/doc/type/directconnect_virtual_interface.rb +21 -0
  133. data/lib/awspec/generator/doc/type/dynamodb_table.rb +19 -0
  134. data/lib/awspec/generator/doc/type/ebs.rb +19 -0
  135. data/lib/awspec/generator/doc/type/ec2.rb +21 -0
  136. data/lib/awspec/generator/doc/type/ec2_account_attributes.rb +17 -0
  137. data/lib/awspec/generator/doc/type/ecr_repository.rb +15 -0
  138. data/lib/awspec/generator/doc/type/ecs_cluster.rb +19 -0
  139. data/lib/awspec/generator/doc/type/ecs_container_instance.rb +19 -0
  140. data/lib/awspec/generator/doc/type/ecs_service.rb +19 -0
  141. data/lib/awspec/generator/doc/type/ecs_task_definition.rb +19 -0
  142. data/lib/awspec/generator/doc/type/efs.rb +17 -0
  143. data/lib/awspec/generator/doc/type/eip.rb +17 -0
  144. data/lib/awspec/generator/doc/type/eks.rb +20 -0
  145. data/lib/awspec/generator/doc/type/elasticache.rb +22 -0
  146. data/lib/awspec/generator/doc/type/elasticache_cache_parameter_group.rb +17 -0
  147. data/lib/awspec/generator/doc/type/elasticsearch.rb +17 -0
  148. data/lib/awspec/generator/doc/type/elastictranscoder_pipeline.rb +21 -0
  149. data/lib/awspec/generator/doc/type/elb.rb +21 -0
  150. data/lib/awspec/generator/doc/type/emr.rb +19 -0
  151. data/lib/awspec/generator/doc/type/firehose.rb +17 -0
  152. data/lib/awspec/generator/doc/type/iam_group.rb +17 -0
  153. data/lib/awspec/generator/doc/type/iam_policy.rb +17 -0
  154. data/lib/awspec/generator/doc/type/iam_role.rb +17 -0
  155. data/lib/awspec/generator/doc/type/iam_user.rb +17 -0
  156. data/lib/awspec/generator/doc/type/internet_gateway.rb +17 -0
  157. data/lib/awspec/generator/doc/type/kinesis.rb +17 -0
  158. data/lib/awspec/generator/doc/type/kms.rb +17 -0
  159. data/lib/awspec/generator/doc/type/lambda.rb +17 -0
  160. data/lib/awspec/generator/doc/type/lambda_account_settings.rb +17 -0
  161. data/lib/awspec/generator/doc/type/launch_configuration.rb +17 -0
  162. data/lib/awspec/generator/doc/type/launch_template.rb +17 -0
  163. data/lib/awspec/generator/doc/type/mq.rb +19 -0
  164. data/lib/awspec/generator/doc/type/nat_gateway.rb +20 -0
  165. data/lib/awspec/generator/doc/type/network_acl.rb +20 -0
  166. data/lib/awspec/generator/doc/type/network_interface.rb +21 -0
  167. data/lib/awspec/generator/doc/type/nlb.rb +20 -0
  168. data/lib/awspec/generator/doc/type/nlb_listener.rb +18 -0
  169. data/lib/awspec/generator/doc/type/nlb_target_group.rb +17 -0
  170. data/lib/awspec/generator/doc/type/rds.rb +22 -0
  171. data/lib/awspec/generator/doc/type/rds_account_attributes.rb +17 -0
  172. data/lib/awspec/generator/doc/type/rds_db_cluster_parameter_group.rb +15 -0
  173. data/lib/awspec/generator/doc/type/rds_db_parameter_group.rb +15 -0
  174. data/lib/awspec/generator/doc/type/redshift.rb +21 -0
  175. data/lib/awspec/generator/doc/type/redshift_cluster_parameter_group.rb +17 -0
  176. data/lib/awspec/generator/doc/type/route53_hosted_zone.rb +16 -0
  177. data/lib/awspec/generator/doc/type/route_table.rb +16 -0
  178. data/lib/awspec/generator/doc/type/s3_bucket.rb +16 -0
  179. data/lib/awspec/generator/doc/type/secretsmanager.rb +17 -0
  180. data/lib/awspec/generator/doc/type/security_group.rb +16 -0
  181. data/lib/awspec/generator/doc/type/ses_identity.rb +22 -0
  182. data/lib/awspec/generator/doc/type/ses_send_quota.rb +17 -0
  183. data/lib/awspec/generator/doc/type/sns_topic.rb +18 -0
  184. data/lib/awspec/generator/doc/type/sqs.rb +17 -0
  185. data/lib/awspec/generator/doc/type/ssm_parameter.rb +17 -0
  186. data/lib/awspec/generator/doc/type/subnet.rb +18 -0
  187. data/lib/awspec/generator/doc/type/vpc.rb +19 -0
  188. data/lib/awspec/generator/doc/type/vpn_connection.rb +19 -0
  189. data/lib/awspec/generator/doc/type/vpn_gateway.rb +19 -0
  190. data/lib/awspec/generator/doc/type/waf_web_acl.rb +17 -0
  191. data/lib/awspec/generator/doc/type/wafregional_web_acl.rb +17 -0
  192. data/lib/awspec/generator/spec/acm.rb +43 -0
  193. data/lib/awspec/generator/spec/alb.rb +38 -0
  194. data/lib/awspec/generator/spec/alb_listener.rb +110 -0
  195. data/lib/awspec/generator/spec/autoscaling_group.rb +56 -0
  196. data/lib/awspec/generator/spec/cloudwatch_alarm.rb +43 -0
  197. data/lib/awspec/generator/spec/cloudwatch_event.rb +27 -0
  198. data/lib/awspec/generator/spec/cloudwatch_logs.rb +68 -0
  199. data/lib/awspec/generator/spec/codebuild.rb +23 -0
  200. data/lib/awspec/generator/spec/directconnect.rb +33 -0
  201. data/lib/awspec/generator/spec/ebs.rb +55 -0
  202. data/lib/awspec/generator/spec/ec2.rb +82 -0
  203. data/lib/awspec/generator/spec/efs.rb +28 -0
  204. data/lib/awspec/generator/spec/eip.rb +30 -0
  205. data/lib/awspec/generator/spec/elasticsearch.rb +41 -0
  206. data/lib/awspec/generator/spec/elb.rb +59 -0
  207. data/lib/awspec/generator/spec/iam_group.rb +39 -0
  208. data/lib/awspec/generator/spec/iam_policy.rb +56 -0
  209. data/lib/awspec/generator/spec/iam_role.rb +39 -0
  210. data/lib/awspec/generator/spec/iam_user.rb +39 -0
  211. data/lib/awspec/generator/spec/internet_gateway.rb +35 -0
  212. data/lib/awspec/generator/spec/kms.rb +34 -0
  213. data/lib/awspec/generator/spec/lambda.rb +29 -0
  214. data/lib/awspec/generator/spec/nat_gateway.rb +39 -0
  215. data/lib/awspec/generator/spec/network_acl.rb +96 -0
  216. data/lib/awspec/generator/spec/network_interface.rb +80 -0
  217. data/lib/awspec/generator/spec/nlb.rb +38 -0
  218. data/lib/awspec/generator/spec/nlb_listener.rb +110 -0
  219. data/lib/awspec/generator/spec/rds.rb +62 -0
  220. data/lib/awspec/generator/spec/rds_db_cluster_parameter_group.rb +23 -0
  221. data/lib/awspec/generator/spec/rds_db_parameter_group.rb +23 -0
  222. data/lib/awspec/generator/spec/redshift.rb +65 -0
  223. data/lib/awspec/generator/spec/redshift_cluster_parameter_group.rb +23 -0
  224. data/lib/awspec/generator/spec/route53_hosted_zone.rb +72 -0
  225. data/lib/awspec/generator/spec/route_table.rb +128 -0
  226. data/lib/awspec/generator/spec/s3_bucket.rb +124 -0
  227. data/lib/awspec/generator/spec/security_group.rb +95 -0
  228. data/lib/awspec/generator/spec/subnet.rb +47 -0
  229. data/lib/awspec/generator/spec/vpc.rb +65 -0
  230. data/lib/awspec/generator/template.rb +145 -0
  231. data/lib/awspec/helper.rb +8 -0
  232. data/lib/awspec/helper/client_wrap.rb +49 -0
  233. data/lib/awspec/helper/color.rb +5 -0
  234. data/lib/awspec/helper/finder.rb +168 -0
  235. data/lib/awspec/helper/finder/account_attributes.rb +61 -0
  236. data/lib/awspec/helper/finder/acm.rb +40 -0
  237. data/lib/awspec/helper/finder/alb.rb +68 -0
  238. data/lib/awspec/helper/finder/ami.rb +22 -0
  239. data/lib/awspec/helper/finder/apigateway.rb +35 -0
  240. data/lib/awspec/helper/finder/autoscaling.rb +60 -0
  241. data/lib/awspec/helper/finder/batch.rb +20 -0
  242. data/lib/awspec/helper/finder/cloudformation.rb +12 -0
  243. data/lib/awspec/helper/finder/cloudfront.rb +21 -0
  244. data/lib/awspec/helper/finder/cloudtrail.rb +29 -0
  245. data/lib/awspec/helper/finder/cloudwatch.rb +33 -0
  246. data/lib/awspec/helper/finder/cloudwatch_event.rb +15 -0
  247. data/lib/awspec/helper/finder/cloudwatch_logs.rb +93 -0
  248. data/lib/awspec/helper/finder/codebuild.rb +24 -0
  249. data/lib/awspec/helper/finder/codedeploy.rb +15 -0
  250. data/lib/awspec/helper/finder/directconnect.rb +19 -0
  251. data/lib/awspec/helper/finder/dynamodb.rb +10 -0
  252. data/lib/awspec/helper/finder/ebs.rb +43 -0
  253. data/lib/awspec/helper/finder/ec2.rb +203 -0
  254. data/lib/awspec/helper/finder/ecr.rb +10 -0
  255. data/lib/awspec/helper/finder/ecs.rb +45 -0
  256. data/lib/awspec/helper/finder/efs.rb +63 -0
  257. data/lib/awspec/helper/finder/eks.rb +10 -0
  258. data/lib/awspec/helper/finder/elasticache.rb +21 -0
  259. data/lib/awspec/helper/finder/elasticsearch.rb +19 -0
  260. data/lib/awspec/helper/finder/elastictranscoder.rb +21 -0
  261. data/lib/awspec/helper/finder/elb.rb +37 -0
  262. data/lib/awspec/helper/finder/emr.rb +9 -0
  263. data/lib/awspec/helper/finder/firehose.rb +13 -0
  264. data/lib/awspec/helper/finder/iam.rb +118 -0
  265. data/lib/awspec/helper/finder/kinesis.rb +14 -0
  266. data/lib/awspec/helper/finder/kms.rb +38 -0
  267. data/lib/awspec/helper/finder/lambda.rb +35 -0
  268. data/lib/awspec/helper/finder/mq.rb +11 -0
  269. data/lib/awspec/helper/finder/nlb.rb +68 -0
  270. data/lib/awspec/helper/finder/rds.rb +59 -0
  271. data/lib/awspec/helper/finder/redshift.rb +37 -0
  272. data/lib/awspec/helper/finder/route53.rb +41 -0
  273. data/lib/awspec/helper/finder/s3.rb +80 -0
  274. data/lib/awspec/helper/finder/secretsmanager.rb +11 -0
  275. data/lib/awspec/helper/finder/security_group.rb +35 -0
  276. data/lib/awspec/helper/finder/ses.rb +13 -0
  277. data/lib/awspec/helper/finder/sns_topic.rb +82 -0
  278. data/lib/awspec/helper/finder/sqs.rb +17 -0
  279. data/lib/awspec/helper/finder/ssm_parameter.rb +32 -0
  280. data/lib/awspec/helper/finder/subnet.rb +29 -0
  281. data/lib/awspec/helper/finder/vpc.rb +115 -0
  282. data/lib/awspec/helper/finder/waf.rb +53 -0
  283. data/lib/awspec/helper/finder/wafregional.rb +53 -0
  284. data/lib/awspec/helper/type.rb +72 -0
  285. data/lib/awspec/matcher.rb +85 -0
  286. data/lib/awspec/matcher/be_allowed.rb +25 -0
  287. data/lib/awspec/matcher/be_allowed_action.rb +19 -0
  288. data/lib/awspec/matcher/be_attached_to.rb +19 -0
  289. data/lib/awspec/matcher/be_connected_to_vpc.rb +13 -0
  290. data/lib/awspec/matcher/be_denied.rb +25 -0
  291. data/lib/awspec/matcher/be_opened.rb +17 -0
  292. data/lib/awspec/matcher/be_opened_only.rb +17 -0
  293. data/lib/awspec/matcher/belong_to_alb.rb +8 -0
  294. data/lib/awspec/matcher/belong_to_cache_subnet_group.rb +5 -0
  295. data/lib/awspec/matcher/belong_to_cluster_subnet_group.rb +5 -0
  296. data/lib/awspec/matcher/belong_to_db_subnet_group.rb +5 -0
  297. data/lib/awspec/matcher/belong_to_domain.rb +5 -0
  298. data/lib/awspec/matcher/belong_to_iam_group.rb +8 -0
  299. data/lib/awspec/matcher/belong_to_metric.rb +13 -0
  300. data/lib/awspec/matcher/belong_to_nlb.rb +8 -0
  301. data/lib/awspec/matcher/belong_to_replication_group.rb +6 -0
  302. data/lib/awspec/matcher/belong_to_subnet.rb +31 -0
  303. data/lib/awspec/matcher/belong_to_vpc.rb +8 -0
  304. data/lib/awspec/matcher/have_attribute_definition.rb +9 -0
  305. data/lib/awspec/matcher/have_cluster_parameter_group.rb +9 -0
  306. data/lib/awspec/matcher/have_custom_response_error_code.rb +21 -0
  307. data/lib/awspec/matcher/have_db_parameter_group.rb +9 -0
  308. data/lib/awspec/matcher/have_env_var.rb +9 -0
  309. data/lib/awspec/matcher/have_env_var_value.rb +18 -0
  310. data/lib/awspec/matcher/have_env_vars.rb +5 -0
  311. data/lib/awspec/matcher/have_inline_policy.rb +9 -0
  312. data/lib/awspec/matcher/have_key_policy.rb +9 -0
  313. data/lib/awspec/matcher/have_key_schema.rb +9 -0
  314. data/lib/awspec/matcher/have_network_interface.rb +15 -0
  315. data/lib/awspec/matcher/have_option_group.rb +9 -0
  316. data/lib/awspec/matcher/have_origin.rb +21 -0
  317. data/lib/awspec/matcher/have_private_ip_address.rb +9 -0
  318. data/lib/awspec/matcher/have_record_set.rb +41 -0
  319. data/lib/awspec/matcher/have_route.rb +34 -0
  320. data/lib/awspec/matcher/have_rule.rb +36 -0
  321. data/lib/awspec/matcher/have_subscription_attributes.rb +16 -0
  322. data/lib/awspec/matcher/have_subscription_filter.rb +9 -0
  323. data/lib/awspec/matcher/have_tag.rb +13 -0
  324. data/lib/awspec/matcher/have_vpc_peering_connection.rb +13 -0
  325. data/lib/awspec/matcher/include_subscribed.rb +5 -0
  326. data/lib/awspec/resource_reader.rb +58 -0
  327. data/lib/awspec/setup.rb +84 -0
  328. data/lib/awspec/shared_context.rb +37 -0
  329. data/lib/awspec/stub.rb +7 -0
  330. data/lib/awspec/stub/account.rb +147 -0
  331. data/lib/awspec/stub/acm.rb +34 -0
  332. data/lib/awspec/stub/alb.rb +261 -0
  333. data/lib/awspec/stub/alb_listener.rb +307 -0
  334. data/lib/awspec/stub/alb_target_group.rb +325 -0
  335. data/lib/awspec/stub/ami.rb +58 -0
  336. data/lib/awspec/stub/apigateway.rb +114 -0
  337. data/lib/awspec/stub/autoscaling_group.rb +241 -0
  338. data/lib/awspec/stub/batch_compute_environment.rb +40 -0
  339. data/lib/awspec/stub/batch_job_definition.rb +28 -0
  340. data/lib/awspec/stub/batch_job_queue.rb +22 -0
  341. data/lib/awspec/stub/cloudformation_stack.rb +49 -0
  342. data/lib/awspec/stub/cloudfront_distribution.rb +230 -0
  343. data/lib/awspec/stub/cloudtrail.rb +35 -0
  344. data/lib/awspec/stub/cloudwatch_alarm.rb +40 -0
  345. data/lib/awspec/stub/cloudwatch_event.rb +15 -0
  346. data/lib/awspec/stub/cloudwatch_logs.rb +41 -0
  347. data/lib/awspec/stub/codebuild.rb +10 -0
  348. data/lib/awspec/stub/codedeploy.rb +12 -0
  349. data/lib/awspec/stub/codedeploy_deployment_group.rb +39 -0
  350. data/lib/awspec/stub/customer_gateway.rb +16 -0
  351. data/lib/awspec/stub/directconnect_virtual_interface.rb +25 -0
  352. data/lib/awspec/stub/duplicated_resource_type.rb +26 -0
  353. data/lib/awspec/stub/dynamodb_table.rb +34 -0
  354. data/lib/awspec/stub/ebs.rb +67 -0
  355. data/lib/awspec/stub/ec2.rb +235 -0
  356. data/lib/awspec/stub/ec2_has_multi_security_groups.rb +21 -0
  357. data/lib/awspec/stub/ecr_repository.rb +13 -0
  358. data/lib/awspec/stub/ecs.rb +199 -0
  359. data/lib/awspec/stub/ecs_cluster.rb +99 -0
  360. data/lib/awspec/stub/ecs_container_instance.rb +78 -0
  361. data/lib/awspec/stub/ecs_service.rb +51 -0
  362. data/lib/awspec/stub/ecs_task_definition.rb +58 -0
  363. data/lib/awspec/stub/efs.rb +43 -0
  364. data/lib/awspec/stub/eip.rb +13 -0
  365. data/lib/awspec/stub/eks.rb +28 -0
  366. data/lib/awspec/stub/elasticache.rb +91 -0
  367. data/lib/awspec/stub/elasticache_cache_parameter_group.rb +28 -0
  368. data/lib/awspec/stub/elasticsearch.rb +52 -0
  369. data/lib/awspec/stub/elastictranscoder_pipeline.rb +63 -0
  370. data/lib/awspec/stub/elb.rb +166 -0
  371. data/lib/awspec/stub/emr.rb +65 -0
  372. data/lib/awspec/stub/firehose.rb +24 -0
  373. data/lib/awspec/stub/iam_group.rb +90 -0
  374. data/lib/awspec/stub/iam_policy.rb +70 -0
  375. data/lib/awspec/stub/iam_role.rb +60 -0
  376. data/lib/awspec/stub/iam_user.rb +71 -0
  377. data/lib/awspec/stub/internet_gateway.rb +36 -0
  378. data/lib/awspec/stub/kinesis.rb +37 -0
  379. data/lib/awspec/stub/kms.rb +75 -0
  380. data/lib/awspec/stub/lambda.rb +47 -0
  381. data/lib/awspec/stub/launch_configuration.rb +56 -0
  382. data/lib/awspec/stub/launch_template.rb +16 -0
  383. data/lib/awspec/stub/mq.rb +111 -0
  384. data/lib/awspec/stub/nat_gateway.rb +41 -0
  385. data/lib/awspec/stub/network_acl.rb +97 -0
  386. data/lib/awspec/stub/network_interface.rb +144 -0
  387. data/lib/awspec/stub/nlb.rb +119 -0
  388. data/lib/awspec/stub/nlb_listener.rb +131 -0
  389. data/lib/awspec/stub/nlb_target_group.rb +187 -0
  390. data/lib/awspec/stub/rds.rb +106 -0
  391. data/lib/awspec/stub/rds_db_cluster_parameter_group.rb +20 -0
  392. data/lib/awspec/stub/rds_db_parameter_group.rb +20 -0
  393. data/lib/awspec/stub/redshift.rb +67 -0
  394. data/lib/awspec/stub/redshift_cluster_parameter_group.rb +20 -0
  395. data/lib/awspec/stub/route53_hosted_zone.rb +169 -0
  396. data/lib/awspec/stub/route_table.rb +207 -0
  397. data/lib/awspec/stub/s3_bucket.rb +135 -0
  398. data/lib/awspec/stub/secretsmanager.rb +36 -0
  399. data/lib/awspec/stub/security_group.rb +159 -0
  400. data/lib/awspec/stub/ses_identity.rb +41 -0
  401. data/lib/awspec/stub/sns_topic.rb +29 -0
  402. data/lib/awspec/stub/sqs.rb +30 -0
  403. data/lib/awspec/stub/ssm_parameter.rb +16 -0
  404. data/lib/awspec/stub/subnet.rb +33 -0
  405. data/lib/awspec/stub/vpc.rb +114 -0
  406. data/lib/awspec/stub/vpn_connection.rb +20 -0
  407. data/lib/awspec/stub/vpn_gateway.rb +15 -0
  408. data/lib/awspec/stub/waf_web_acl.rb +62 -0
  409. data/lib/awspec/stub/wafregional_web_acl.rb +62 -0
  410. data/lib/awspec/toolbox.rb +18 -0
  411. data/lib/awspec/type/account.rb +39 -0
  412. data/lib/awspec/type/account_attribute.rb +28 -0
  413. data/lib/awspec/type/account_attribute_base.rb +4 -0
  414. data/lib/awspec/type/acm.rb +41 -0
  415. data/lib/awspec/type/alb.rb +54 -0
  416. data/lib/awspec/type/alb_listener.rb +43 -0
  417. data/lib/awspec/type/alb_target_group.rb +22 -0
  418. data/lib/awspec/type/ami.rb +25 -0
  419. data/lib/awspec/type/apigateway.rb +65 -0
  420. data/lib/awspec/type/autoscaling_group.rb +54 -0
  421. data/lib/awspec/type/base.rb +63 -0
  422. data/lib/awspec/type/batch_compute_environment.rb +32 -0
  423. data/lib/awspec/type/batch_job_definition.rb +16 -0
  424. data/lib/awspec/type/batch_job_queue.rb +31 -0
  425. data/lib/awspec/type/cloudformation_stack.rb +11 -0
  426. data/lib/awspec/type/cloudfront_distribution.rb +60 -0
  427. data/lib/awspec/type/cloudtrail.rb +35 -0
  428. data/lib/awspec/type/cloudwatch_alarm.rb +23 -0
  429. data/lib/awspec/type/cloudwatch_event.rb +19 -0
  430. data/lib/awspec/type/cloudwatch_logs.rb +37 -0
  431. data/lib/awspec/type/codebuild.rb +11 -0
  432. data/lib/awspec/type/codedeploy.rb +11 -0
  433. data/lib/awspec/type/codedeploy_deployment_group.rb +33 -0
  434. data/lib/awspec/type/customer_gateway.rb +40 -0
  435. data/lib/awspec/type/directconnect_virtual_interface.rb +27 -0
  436. data/lib/awspec/type/dynamodb_table.rb +40 -0
  437. data/lib/awspec/type/ebs.rb +37 -0
  438. data/lib/awspec/type/ec2.rb +154 -0
  439. data/lib/awspec/type/ec2_account_attributes.rb +7 -0
  440. data/lib/awspec/type/ecr_repository.rb +18 -0
  441. data/lib/awspec/type/ecs_cluster.rb +46 -0
  442. data/lib/awspec/type/ecs_container_instance.rb +30 -0
  443. data/lib/awspec/type/ecs_service.rb +29 -0
  444. data/lib/awspec/type/ecs_task_definition.rb +24 -0
  445. data/lib/awspec/type/efs.rb +22 -0
  446. data/lib/awspec/type/eip.rb +16 -0
  447. data/lib/awspec/type/eks.rb +24 -0
  448. data/lib/awspec/type/elasticache.rb +68 -0
  449. data/lib/awspec/type/elasticache_cache_parameter_group.rb +42 -0
  450. data/lib/awspec/type/elasticsearch.rb +23 -0
  451. data/lib/awspec/type/elastictranscoder_pipeline.rb +21 -0
  452. data/lib/awspec/type/elb.rb +94 -0
  453. data/lib/awspec/type/emr.rb +40 -0
  454. data/lib/awspec/type/firehose.rb +30 -0
  455. data/lib/awspec/type/iam_group.rb +48 -0
  456. data/lib/awspec/type/iam_policy.rb +60 -0
  457. data/lib/awspec/type/iam_role.rb +38 -0
  458. data/lib/awspec/type/iam_user.rb +38 -0
  459. data/lib/awspec/type/internet_gateway.rb +20 -0
  460. data/lib/awspec/type/kinesis.rb +73 -0
  461. data/lib/awspec/type/kms.rb +21 -0
  462. data/lib/awspec/type/lambda.rb +23 -0
  463. data/lib/awspec/type/lambda_account_settings.rb +7 -0
  464. data/lib/awspec/type/launch_configuration.rb +28 -0
  465. data/lib/awspec/type/launch_template.rb +34 -0
  466. data/lib/awspec/type/mq.rb +57 -0
  467. data/lib/awspec/type/nat_gateway.rb +29 -0
  468. data/lib/awspec/type/network_acl.rb +117 -0
  469. data/lib/awspec/type/network_interface.rb +56 -0
  470. data/lib/awspec/type/nlb.rb +35 -0
  471. data/lib/awspec/type/nlb_listener.rb +43 -0
  472. data/lib/awspec/type/nlb_target_group.rb +22 -0
  473. data/lib/awspec/type/rds.rb +109 -0
  474. data/lib/awspec/type/rds_account_attributes.rb +7 -0
  475. data/lib/awspec/type/rds_db_cluster_parameter_group.rb +21 -0
  476. data/lib/awspec/type/rds_db_parameter_group.rb +21 -0
  477. data/lib/awspec/type/redshift.rb +88 -0
  478. data/lib/awspec/type/redshift_cluster_parameter_group.rb +20 -0
  479. data/lib/awspec/type/resource_base.rb +24 -0
  480. data/lib/awspec/type/route53_hosted_zone.rb +65 -0
  481. data/lib/awspec/type/route_table.rb +84 -0
  482. data/lib/awspec/type/s3_bucket.rb +139 -0
  483. data/lib/awspec/type/secretsmanager.rb +14 -0
  484. data/lib/awspec/type/security_group.rb +148 -0
  485. data/lib/awspec/type/ses_identity.rb +70 -0
  486. data/lib/awspec/type/ses_send_quota.rb +7 -0
  487. data/lib/awspec/type/sns_topic.rb +50 -0
  488. data/lib/awspec/type/sqs.rb +37 -0
  489. data/lib/awspec/type/ssm_parameter.rb +26 -0
  490. data/lib/awspec/type/subnet.rb +39 -0
  491. data/lib/awspec/type/vpc.rb +66 -0
  492. data/lib/awspec/type/vpn_connection.rb +40 -0
  493. data/lib/awspec/type/vpn_gateway.rb +40 -0
  494. data/lib/awspec/type/waf_web_acl.rb +24 -0
  495. data/lib/awspec/type/wafregional_web_acl.rb +24 -0
  496. data/lib/awspec/version.rb +3 -0
  497. metadata +744 -0
@@ -0,0 +1,37 @@
1
+ module Awspec::Helper
2
+ module Finder
3
+ module Redshift
4
+ def find_redshift_cluster_identifier(id)
5
+ res = redshift_client.describe_clusters(cluster_identifier: id)
6
+ res.clusters.single_resource(id)
7
+ rescue
8
+ nil
9
+ end
10
+
11
+ def select_redshift_by_vpc_id(vpc_id)
12
+ res = redshift_client.describe_clusters
13
+ res.clusters.select do |clusters|
14
+ clusters.vpc_id == vpc_id
15
+ end
16
+ end
17
+
18
+ def select_all_redshift_cluster_parameters(parameter_group)
19
+ parameters = {}
20
+ res = redshift_client.describe_cluster_parameters({
21
+ parameter_group_name: parameter_group
22
+ })
23
+ loop do
24
+ res.parameters.each do |param|
25
+ parameters[param.parameter_name] = param.parameter_value
26
+ end
27
+ break if res.marker.nil?
28
+ res = redshift_client.describe_cluster_parameters({
29
+ parameter_group_name: parameter_group,
30
+ marker: res.marker
31
+ })
32
+ end
33
+ parameters
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,41 @@
1
+ module Awspec::Helper
2
+ module Finder
3
+ module Route53
4
+ def find_hosted_zone(id)
5
+ res = route53_client.list_hosted_zones
6
+ selected = []
7
+ loop do
8
+ res.hosted_zones.each do |hosted_zone|
9
+ if hosted_zone[:name] == id || hosted_zone[:id] == '/hostedzone/' + id || hosted_zone[:id] == id
10
+ selected.push(hosted_zone)
11
+ end
12
+ end
13
+
14
+ break unless res.is_truncated
15
+ res = route53_client.list_hosted_zones({
16
+ marker: res.next_marker
17
+ })
18
+ end
19
+ selected.single_resource(id)
20
+ end
21
+
22
+ def select_record_sets_by_hosted_zone_id(id)
23
+ selected = []
24
+ res = route53_client.list_resource_record_sets({
25
+ hosted_zone_id: id
26
+ })
27
+ loop do
28
+ selected += res.resource_record_sets
29
+ break unless res.is_truncated
30
+
31
+ res = route53_client.list_resource_record_sets({
32
+ hosted_zone_id: id,
33
+ start_record_name: res.next_record_name,
34
+ start_record_type: res.next_record_type
35
+ })
36
+ end
37
+ selected
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,80 @@
1
+ module Awspec::Helper
2
+ module Finder
3
+ module S3
4
+ def find_bucket(id)
5
+ s3_client.list_buckets[:buckets].find do |bucket|
6
+ bucket.name == id
7
+ end
8
+ end
9
+
10
+ def find_bucket_acl(id)
11
+ s3_client.get_bucket_acl(bucket: id)
12
+ rescue Aws::S3::Errors::ServiceError
13
+ nil
14
+ end
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
+
26
+ def find_bucket_cors(id)
27
+ s3_client.get_bucket_cors(bucket: id)
28
+ rescue Aws::S3::Errors::ServiceError
29
+ nil
30
+ end
31
+
32
+ def find_bucket_policy(id)
33
+ s3_client.get_bucket_policy(bucket: id)
34
+ rescue Aws::S3::Errors::ServiceError
35
+ nil
36
+ end
37
+
38
+ def find_bucket_logging(id)
39
+ s3_client.get_bucket_logging(bucket: id)
40
+ rescue Aws::S3::Errors::ServiceError
41
+ nil
42
+ end
43
+
44
+ def find_bucket_tag(id, tag_key)
45
+ tag = nil
46
+ begin
47
+ bucket_tagging = s3_client.get_bucket_tagging(bucket: id)
48
+ tag_set = bucket_tagging.tag_set
49
+ tag = tag_set.find { |tag_obj| tag_obj.key == tag_key }
50
+ rescue Aws::S3::Errors::ServiceError
51
+ nil
52
+ end
53
+ return tag if tag
54
+ end
55
+
56
+ def find_bucket_versioning(id)
57
+ s3_client.get_bucket_versioning(bucket: id)
58
+ rescue Aws::S3::Errors::ServiceError
59
+ nil
60
+ end
61
+
62
+ def find_bucket_lifecycle_configuration(id)
63
+ s3_client.get_bucket_lifecycle_configuration(bucket: id)
64
+ rescue Aws::S3::Errors::ServiceError
65
+ nil
66
+ end
67
+
68
+ def find_bucket_server_side_encryption(id)
69
+ res = s3_client.get_bucket_encryption(bucket: id)
70
+ res.server_side_encryption_configuration
71
+ rescue Aws::S3::Errors::ServiceError
72
+ nil
73
+ end
74
+
75
+ def select_all_buckets
76
+ s3_client.list_buckets.buckets
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,11 @@
1
+ module Awspec::Helper
2
+ module Finder
3
+ module Secretsmanager
4
+ def find_secret(id)
5
+ secretsmanager_client.describe_secret({
6
+ secret_id: id
7
+ })
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,35 @@
1
+ module Awspec::Helper
2
+ module Finder
3
+ module SecurityGroup
4
+ def find_security_group(sg_id)
5
+ resource = select_security_group_by_group_id([sg_id]).single_resource(sg_id)
6
+ return resource if resource
7
+
8
+ resource = select_security_group_by_group_name([sg_id]).single_resource(sg_id)
9
+ return resource if resource
10
+
11
+ select_security_group_by_tag_name([sg_id]).single_resource(sg_id)
12
+ end
13
+
14
+ def select_security_group_by_vpc_id(vpc_id)
15
+ describe_security_groups({ filters: [{ name: 'vpc-id', values: [vpc_id] }] })
16
+ end
17
+
18
+ def select_security_group_by_group_id(ids)
19
+ describe_security_groups({ filters: [{ name: 'group-id', values: ids }] })
20
+ end
21
+
22
+ def select_security_group_by_group_name(names)
23
+ describe_security_groups({ filters: [{ name: 'group-name', values: names }] })
24
+ end
25
+
26
+ def select_security_group_by_tag_name(names)
27
+ describe_security_groups({ filters: [{ name: 'tag:Name', values: names }] })
28
+ end
29
+
30
+ def describe_security_groups(param)
31
+ ec2_client.describe_security_groups(param).security_groups
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,13 @@
1
+ module Awspec::Helper
2
+ module Finder
3
+ module Ses
4
+ def find_ses_identity(id)
5
+ res = ses_client.list_identities
6
+ ret = res.identities.select do |identity|
7
+ identity == id
8
+ end
9
+ ret.single_resource(id)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,82 @@
1
+ module Awspec::Helper
2
+ module Finder
3
+ module SNSTopic
4
+ class SnsTopic
5
+ # to make testing results easier to the eyes instead of using Rspec
6
+ # include matcher for hashes
7
+ attr_reader :policy, :owner, :pending_subscriptions, :topic_arn, :effective_delivery_policy,
8
+ :display_name, :confirmed_subscriptions, :deleted_subscriptions, :name
9
+
10
+ def initialize(attribs)
11
+ @policy = attribs['Policy']
12
+ @owner = attribs['Owner']
13
+ @pending_subscriptions = attribs['SubscriptionsPending'].to_i
14
+ @topic_arn = attribs['TopicArn']
15
+ @effective_delivery_policy = attribs['EffectiveDeliveryPolicy']
16
+ @display_name = attribs['DisplayName']
17
+ @confirmed_subscriptions = attribs['SubscriptionsConfirmed'].to_i
18
+ @deleted_subscriptions = attribs['SubscriptionsDeleted'].to_i
19
+ @name = attribs['TopicArn'].split(':')[-1]
20
+ end
21
+
22
+ def to_s
23
+ output = ["SnsTopic: #{self.name}"]
24
+ self.instance_variables.each do |attrib|
25
+ tmp = attrib.to_s.sub('@', '')
26
+ output << " #{tmp} = #{self.send(tmp)}"
27
+ end
28
+ output.join("\n")
29
+ end
30
+ end
31
+
32
+ def find_sns_topic(topic_arn)
33
+ # Find a SNS topic by searching from it's ARN.
34
+ # Expects as parameter the SNS topic ARN.
35
+ # Returns a Awspec::Helper::Finder::SNSTopic::SnsTopic if the topic is
36
+ # found, nil otherwise.
37
+ # If the SNS topic does not exist, AWS SDK throws an exception
38
+ # which is acceptable in some cases, but in others will generate a
39
+ # NoMethodFound during tests execution.
40
+ # In order to avoid that and follow a uniform interface, the exception
41
+ # will be captured and nil will be returned instead.
42
+ # By convention, the returned object will be checked (see check_existence
43
+ # method from Awspec::Type::Base class for an example) and an exception
44
+ # Awspec::NoExistingResource will be raised.
45
+ begin
46
+ response = sns_client.get_topic_attributes({ topic_arn: topic_arn })
47
+ topic = SnsTopic.new(response.attributes)
48
+ rescue Aws::SNS::Errors::NotFound
49
+ topic = nil
50
+ end
51
+
52
+ topic
53
+ end
54
+
55
+ def find_sns_topic_subs(topic_arn)
56
+ # Find a SNS topic subscribers by searching from it's ARN.
57
+ # Expects as parameter the SNS topic ARN.
58
+ # Returns a map (with keys as the subscribed ARN and the value instances
59
+ # of respective objects) if the topic is found, nil otherwise.
60
+ # If the SNS topic does not exist, AWS SDK throws an exception
61
+ # which is acceptable in some cases, but in others will generate a
62
+ # NoMethodFound during tests execution.
63
+ # In order to avoid that and follow a uniform interface, the exception
64
+ # will be captured and nil will be returned instead.
65
+ # By convention, the returned object will be checked (see check_existence
66
+ # method from Awspec::Type::Base class for an example) and an exception
67
+ # Awspec::NoExistingResource will be raised.
68
+ begin
69
+ response = sns_client.list_subscriptions_by_topic({ topic_arn: topic_arn })
70
+ subscriptions = {}
71
+ response.subscriptions.each do |subscribed|
72
+ subscriptions[subscribed['subscription_arn'].to_sym] = subscribed
73
+ end
74
+ rescue Aws::SNS::Errors::NotFound
75
+ subscriptions = nil
76
+ end
77
+
78
+ subscriptions
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,17 @@
1
+ module Awspec::Helper
2
+ module Finder
3
+ module Sqs
4
+ def find_queue(queue_name)
5
+ res = sqs_client.list_queues(queue_name_prefix: queue_name).queue_urls.select do |url|
6
+ url.split('/').last == queue_name
7
+ end
8
+ res.single_resource(queue_name)
9
+ end
10
+
11
+ def find_tags_for_queue(queue_url)
12
+ res = sqs_client.list_queue_tags({ queue_url: queue_url })
13
+ res.tags
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,32 @@
1
+ module Awspec::Helper
2
+ module Finder
3
+ module SsmParameter
4
+ def find_ssm_parameter(name)
5
+ ssm_client.describe_parameters(
6
+ {
7
+ filters: [
8
+ {
9
+ key: 'Name',
10
+ values: [name]
11
+ }
12
+ ]
13
+ }).parameters[0]
14
+ end
15
+
16
+ def find_parameter_tag(id, tag_key)
17
+ tag = nil
18
+ begin
19
+ response = ssm_client.list_tags_for_resource(
20
+ resource_type: 'Parameter',
21
+ resource_id: id
22
+ )
23
+ tag_set = response.tag_list
24
+ tag = tag_set.find { |tag_obj| tag_obj.key == tag_key }
25
+ rescue Aws::SSM::Errors::ServiceError
26
+ nil
27
+ end
28
+ return tag if tag
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,29 @@
1
+ module Awspec::Helper
2
+ module Finder
3
+ module Subnet
4
+ def find_subnet(subnet_id)
5
+ res = ec2_client.describe_subnets({
6
+ filters: [{ name: 'subnet-id', values: [subnet_id] }]
7
+ })
8
+ resource = res.subnets.single_resource(subnet_id)
9
+ return resource if resource
10
+ res = ec2_client.describe_subnets({
11
+ filters: [{ name: 'tag:Name', values: [subnet_id] }]
12
+ })
13
+ resource = res.subnets.single_resource(subnet_id)
14
+ return resource if resource
15
+ res = ec2_client.describe_subnets({
16
+ filters: [{ name: 'cidrBlock', values: [subnet_id] }]
17
+ })
18
+ res.subnets.single_resource(subnet_id)
19
+ end
20
+
21
+ def select_subnet_by_vpc_id(vpc_id)
22
+ res = ec2_client.describe_subnets({
23
+ filters: [{ name: 'vpc-id', values: [vpc_id] }]
24
+ })
25
+ res.subnets
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,115 @@
1
+ module Awspec::Helper
2
+ module Finder
3
+ module Vpc
4
+ def find_vpc(id)
5
+ res = ec2_client.describe_vpcs({
6
+ filters: [{ name: 'vpc-id', values: [id] }]
7
+ })
8
+ resource = res.vpcs.single_resource(id)
9
+ return resource if resource
10
+ res = ec2_client.describe_vpcs({
11
+ filters: [{ name: 'tag:Name', values: [id] }]
12
+ })
13
+ res.vpcs.single_resource(id)
14
+ end
15
+
16
+ def find_route_table(route_table_id)
17
+ res = ec2_client.describe_route_tables({
18
+ filters: [{ name: 'route-table-id', values: [route_table_id] }]
19
+ })
20
+ resource = res.route_tables.single_resource(route_table_id)
21
+ return resource if resource
22
+ res = ec2_client.describe_route_tables({
23
+ filters: [{ name: 'tag:Name', values: [route_table_id] }]
24
+ })
25
+ res.route_tables.single_resource(route_table_id)
26
+ end
27
+
28
+ def find_network_acl(id)
29
+ res = ec2_client.describe_network_acls({
30
+ filters: [{ name: 'network-acl-id', values: [id] }]
31
+ })
32
+ resource = res.network_acls.single_resource(id)
33
+ return resource if resource
34
+ res = ec2_client.describe_network_acls({
35
+ filters: [{ name: 'tag:Name', values: [id] }]
36
+ })
37
+ res.network_acls.single_resource(id)
38
+ end
39
+
40
+ def select_route_table_by_vpc_id(vpc_id)
41
+ res = ec2_client.describe_route_tables({
42
+ filters: [{ name: 'vpc-id', values: [vpc_id] }]
43
+ })
44
+ res.route_tables
45
+ end
46
+
47
+ def select_network_acl_by_vpc_id(vpc_id)
48
+ res = ec2_client.describe_network_acls({
49
+ filters: [{ name: 'vpc-id', values: [vpc_id] }]
50
+ })
51
+ res.network_acls
52
+ end
53
+
54
+ def find_vpc_peering_connection(vpc_peering_connection_id)
55
+ res = ec2_client.describe_vpc_peering_connections({
56
+ filters: [
57
+ {
58
+ name: 'vpc-peering-connection-id',
59
+ values: [vpc_peering_connection_id]
60
+ }
61
+ ]
62
+ })
63
+ resource = res.vpc_peering_connections.single_resource(vpc_peering_connection_id)
64
+ return resource if resource
65
+ res = ec2_client.describe_vpc_peering_connections({
66
+ filters: [
67
+ {
68
+ name: 'tag:Name',
69
+ values: [vpc_peering_connection_id]
70
+ }
71
+ ]
72
+ })
73
+ res.vpc_peering_connections.single_resource(vpc_peering_connection_id)
74
+ end
75
+
76
+ def select_vpc_peering_connection_by_vpc_id(vpc_id, status_code = nil)
77
+ params = {}
78
+ params = { filters: [{ name: 'status-code', values: [status_code] }] } if status_code
79
+ vpc_peering_connections = ec2_client.describe_vpc_peering_connections(params).map do |res|
80
+ res.vpc_peering_connections
81
+ end.flatten
82
+ vpc_peering_connections.select do |conn|
83
+ conn.accepter_vpc_info.vpc_id == vpc_id || conn.requester_vpc_info.vpc_id == vpc_id
84
+ end
85
+ end
86
+
87
+ def find_vpc_attribute(vpc_id, vpc_attribute)
88
+ res = ec2_client.describe_vpc_attribute({ vpc_id: vpc_id, attribute: vpc_attribute })
89
+ case vpc_attribute
90
+ when 'enableDnsSupport' then
91
+ res.enable_dns_support.value
92
+ when 'enableDnsHostnames' then
93
+ res.enable_dns_hostnames.value
94
+ end
95
+ end
96
+
97
+ def select_vpc_attribute(vpc_id)
98
+ attributes = {}
99
+ vpc_attributes = %w(
100
+ enableDnsHostnames enableDnsSupport
101
+ )
102
+ vpc_attributes.each do |vpc_attribute|
103
+ res = ec2_client.describe_vpc_attribute({ vpc_id: vpc_id, attribute: vpc_attribute })
104
+ attributes[vpc_attribute] = case vpc_attribute
105
+ when 'enableDnsHostnames' then
106
+ res.enable_dns_hostnames.value
107
+ when 'enableDnsSupport' then
108
+ res.enable_dns_support.value
109
+ end
110
+ end
111
+ attributes
112
+ end
113
+ end
114
+ end
115
+ end