aws_sdk 3.1.5

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 (390) hide show
  1. data/lib/aws-sdk.rb +14 -0
  2. data/lib/aws.rb +49 -0
  3. data/lib/aws/api_config/AutoScaling-2011-01-01.yml +791 -0
  4. data/lib/aws/api_config/CloudFormation-2010-05-15.yml +303 -0
  5. data/lib/aws/api_config/DynamoDB-2011-12-05.yml +540 -0
  6. data/lib/aws/api_config/EC2-2011-12-15.yml +3638 -0
  7. data/lib/aws/api_config/EC2-2012-04-01.yml +3739 -0
  8. data/lib/aws/api_config/ELB-2011-08-15.yml +512 -0
  9. data/lib/aws/api_config/IAM-2010-05-08.yml +1221 -0
  10. data/lib/aws/api_config/SNS-2010-03-31.yml +248 -0
  11. data/lib/aws/api_config/SQS-2011-10-01.yml +314 -0
  12. data/lib/aws/api_config/STS-2011-06-15.yml +54 -0
  13. data/lib/aws/api_config/SimpleDB-2009-04-15.yml +305 -0
  14. data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +231 -0
  15. data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +721 -0
  16. data/lib/aws/auto_scaling.rb +162 -0
  17. data/lib/aws/auto_scaling/activity.rb +102 -0
  18. data/lib/aws/auto_scaling/activity_collection.rb +82 -0
  19. data/lib/aws/auto_scaling/client.rb +765 -0
  20. data/lib/aws/auto_scaling/config.rb +18 -0
  21. data/lib/aws/auto_scaling/errors.rb +22 -0
  22. data/lib/aws/auto_scaling/group.rb +420 -0
  23. data/lib/aws/auto_scaling/group_collection.rb +96 -0
  24. data/lib/aws/auto_scaling/group_options.rb +146 -0
  25. data/lib/aws/auto_scaling/instance.rb +192 -0
  26. data/lib/aws/auto_scaling/instance_collection.rb +63 -0
  27. data/lib/aws/auto_scaling/launch_configuration.rb +150 -0
  28. data/lib/aws/auto_scaling/launch_configuration_collection.rb +144 -0
  29. data/lib/aws/auto_scaling/notification_configuration.rb +89 -0
  30. data/lib/aws/auto_scaling/notification_configuration_collection.rb +184 -0
  31. data/lib/aws/auto_scaling/request.rb +23 -0
  32. data/lib/aws/auto_scaling/scaling_policy.rb +125 -0
  33. data/lib/aws/auto_scaling/scaling_policy_collection.rb +72 -0
  34. data/lib/aws/auto_scaling/scaling_policy_options.rb +61 -0
  35. data/lib/aws/auto_scaling/scheduled_action.rb +145 -0
  36. data/lib/aws/auto_scaling/scheduled_action_collection.rb +195 -0
  37. data/lib/aws/auto_scaling/tag.rb +59 -0
  38. data/lib/aws/auto_scaling/tag_collection.rb +112 -0
  39. data/lib/aws/cloud_formation.rb +270 -0
  40. data/lib/aws/cloud_formation/client.rb +339 -0
  41. data/lib/aws/cloud_formation/config.rb +18 -0
  42. data/lib/aws/cloud_formation/errors.rb +22 -0
  43. data/lib/aws/cloud_formation/request.rb +29 -0
  44. data/lib/aws/cloud_formation/stack.rb +256 -0
  45. data/lib/aws/cloud_formation/stack_collection.rb +206 -0
  46. data/lib/aws/cloud_formation/stack_event.rb +75 -0
  47. data/lib/aws/cloud_formation/stack_event_collection.rb +47 -0
  48. data/lib/aws/cloud_formation/stack_options.rb +72 -0
  49. data/lib/aws/cloud_formation/stack_output.rb +53 -0
  50. data/lib/aws/cloud_formation/stack_resource.rb +117 -0
  51. data/lib/aws/cloud_formation/stack_resource_collection.rb +84 -0
  52. data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +72 -0
  53. data/lib/aws/cloud_formation/stack_summary.rb +71 -0
  54. data/lib/aws/cloud_formation/stack_summary_collection.rb +127 -0
  55. data/lib/aws/core.rb +474 -0
  56. data/lib/aws/core/async_handle.rb +90 -0
  57. data/lib/aws/core/autoloader.rb +64 -0
  58. data/lib/aws/core/cacheable.rb +78 -0
  59. data/lib/aws/core/client.rb +541 -0
  60. data/lib/aws/core/client/query_json.rb +110 -0
  61. data/lib/aws/core/client/query_xml.rb +122 -0
  62. data/lib/aws/core/collection.rb +234 -0
  63. data/lib/aws/core/collection/limitable.rb +99 -0
  64. data/lib/aws/core/collection/simple.rb +90 -0
  65. data/lib/aws/core/configuration.rb +445 -0
  66. data/lib/aws/core/data.rb +242 -0
  67. data/lib/aws/core/default_signer.rb +67 -0
  68. data/lib/aws/core/http/curb_handler.rb +136 -0
  69. data/lib/aws/core/http/handler.rb +77 -0
  70. data/lib/aws/core/http/httparty_handler.rb +114 -0
  71. data/lib/aws/core/http/net_http_handler.rb +85 -0
  72. data/lib/aws/core/http/request.rb +250 -0
  73. data/lib/aws/core/http/response.rb +74 -0
  74. data/lib/aws/core/indifferent_hash.rb +88 -0
  75. data/lib/aws/core/inflection.rb +47 -0
  76. data/lib/aws/core/lazy_error_classes.rb +90 -0
  77. data/lib/aws/core/log_formatter.rb +454 -0
  78. data/lib/aws/core/meta_utils.rb +45 -0
  79. data/lib/aws/core/model.rb +57 -0
  80. data/lib/aws/core/naming.rb +30 -0
  81. data/lib/aws/core/option_grammar.rb +700 -0
  82. data/lib/aws/core/page_result.rb +73 -0
  83. data/lib/aws/core/policy.rb +916 -0
  84. data/lib/aws/core/resource.rb +408 -0
  85. data/lib/aws/core/resource_cache.rb +40 -0
  86. data/lib/aws/core/response.rb +202 -0
  87. data/lib/aws/core/response_cache.rb +50 -0
  88. data/lib/aws/core/service_interface.rb +61 -0
  89. data/lib/aws/core/session_signer.rb +90 -0
  90. data/lib/aws/core/signature/version_2.rb +42 -0
  91. data/lib/aws/core/signature/version_3.rb +73 -0
  92. data/lib/aws/core/signature/version_3_http.rb +72 -0
  93. data/lib/aws/core/signature/version_4.rb +138 -0
  94. data/lib/aws/core/uri_escape.rb +42 -0
  95. data/lib/aws/core/xml/frame.rb +242 -0
  96. data/lib/aws/core/xml/frame_stack.rb +85 -0
  97. data/lib/aws/core/xml/grammar.rb +299 -0
  98. data/lib/aws/core/xml/parser.rb +70 -0
  99. data/lib/aws/core/xml/root_frame.rb +65 -0
  100. data/lib/aws/core/xml/sax_handlers/libxml.rb +47 -0
  101. data/lib/aws/core/xml/sax_handlers/nokogiri.rb +55 -0
  102. data/lib/aws/core/xml/sax_handlers/ox.rb +41 -0
  103. data/lib/aws/core/xml/sax_handlers/rexml.rb +43 -0
  104. data/lib/aws/core/xml/stub.rb +123 -0
  105. data/lib/aws/dynamo_db.rb +213 -0
  106. data/lib/aws/dynamo_db/attribute_collection.rb +460 -0
  107. data/lib/aws/dynamo_db/batch_get.rb +206 -0
  108. data/lib/aws/dynamo_db/batch_write.rb +251 -0
  109. data/lib/aws/dynamo_db/client.rb +888 -0
  110. data/lib/aws/dynamo_db/config.rb +20 -0
  111. data/lib/aws/dynamo_db/errors.rb +20 -0
  112. data/lib/aws/dynamo_db/expectations.rb +40 -0
  113. data/lib/aws/dynamo_db/item.rb +130 -0
  114. data/lib/aws/dynamo_db/item_collection.rb +852 -0
  115. data/lib/aws/dynamo_db/item_data.rb +31 -0
  116. data/lib/aws/dynamo_db/keys.rb +41 -0
  117. data/lib/aws/dynamo_db/primary_key_element.rb +47 -0
  118. data/lib/aws/dynamo_db/request.rb +28 -0
  119. data/lib/aws/dynamo_db/resource.rb +33 -0
  120. data/lib/aws/dynamo_db/table.rb +489 -0
  121. data/lib/aws/dynamo_db/table_collection.rb +165 -0
  122. data/lib/aws/dynamo_db/types.rb +86 -0
  123. data/lib/aws/ec2.rb +431 -0
  124. data/lib/aws/ec2/attachment.rb +140 -0
  125. data/lib/aws/ec2/attachment_collection.rb +54 -0
  126. data/lib/aws/ec2/availability_zone.rb +87 -0
  127. data/lib/aws/ec2/availability_zone_collection.rb +43 -0
  128. data/lib/aws/ec2/block_device_mappings.rb +53 -0
  129. data/lib/aws/ec2/client.rb +4121 -0
  130. data/lib/aws/ec2/collection.rb +36 -0
  131. data/lib/aws/ec2/config.rb +18 -0
  132. data/lib/aws/ec2/config_transform.rb +63 -0
  133. data/lib/aws/ec2/customer_gateway.rb +90 -0
  134. data/lib/aws/ec2/customer_gateway_collection.rb +73 -0
  135. data/lib/aws/ec2/dhcp_options.rb +106 -0
  136. data/lib/aws/ec2/dhcp_options_collection.rb +87 -0
  137. data/lib/aws/ec2/elastic_ip.rb +157 -0
  138. data/lib/aws/ec2/elastic_ip_collection.rb +97 -0
  139. data/lib/aws/ec2/errors.rb +32 -0
  140. data/lib/aws/ec2/filtered_collection.rb +90 -0
  141. data/lib/aws/ec2/has_permissions.rb +44 -0
  142. data/lib/aws/ec2/image.rb +254 -0
  143. data/lib/aws/ec2/image_collection.rb +228 -0
  144. data/lib/aws/ec2/instance.rb +669 -0
  145. data/lib/aws/ec2/instance_collection.rb +346 -0
  146. data/lib/aws/ec2/internet_gateway.rb +122 -0
  147. data/lib/aws/ec2/internet_gateway/attachment.rb +78 -0
  148. data/lib/aws/ec2/internet_gateway_collection.rb +54 -0
  149. data/lib/aws/ec2/key_pair.rb +82 -0
  150. data/lib/aws/ec2/key_pair_collection.rb +99 -0
  151. data/lib/aws/ec2/network_acl.rb +256 -0
  152. data/lib/aws/ec2/network_acl/association.rb +56 -0
  153. data/lib/aws/ec2/network_acl/entry.rb +147 -0
  154. data/lib/aws/ec2/network_acl_collection.rb +64 -0
  155. data/lib/aws/ec2/network_interface.rb +228 -0
  156. data/lib/aws/ec2/network_interface/attachment.rb +100 -0
  157. data/lib/aws/ec2/network_interface_collection.rb +103 -0
  158. data/lib/aws/ec2/permission_collection.rb +174 -0
  159. data/lib/aws/ec2/region.rb +97 -0
  160. data/lib/aws/ec2/region_collection.rb +51 -0
  161. data/lib/aws/ec2/request.rb +22 -0
  162. data/lib/aws/ec2/reserved_instances.rb +53 -0
  163. data/lib/aws/ec2/reserved_instances_collection.rb +40 -0
  164. data/lib/aws/ec2/reserved_instances_offering.rb +58 -0
  165. data/lib/aws/ec2/reserved_instances_offering_collection.rb +39 -0
  166. data/lib/aws/ec2/resource.rb +161 -0
  167. data/lib/aws/ec2/resource_tag_collection.rb +211 -0
  168. data/lib/aws/ec2/route_table.rb +205 -0
  169. data/lib/aws/ec2/route_table/association.rb +119 -0
  170. data/lib/aws/ec2/route_table/route.rb +113 -0
  171. data/lib/aws/ec2/route_table_collection.rb +72 -0
  172. data/lib/aws/ec2/security_group.rb +458 -0
  173. data/lib/aws/ec2/security_group/egress_ip_permission_collection.rb +63 -0
  174. data/lib/aws/ec2/security_group/ingress_ip_permission_collection.rb +61 -0
  175. data/lib/aws/ec2/security_group/ip_permission.rb +128 -0
  176. data/lib/aws/ec2/security_group_collection.rb +135 -0
  177. data/lib/aws/ec2/snapshot.rb +143 -0
  178. data/lib/aws/ec2/snapshot_collection.rb +131 -0
  179. data/lib/aws/ec2/subnet.rb +161 -0
  180. data/lib/aws/ec2/subnet_collection.rb +115 -0
  181. data/lib/aws/ec2/tag.rb +81 -0
  182. data/lib/aws/ec2/tag_collection.rb +107 -0
  183. data/lib/aws/ec2/tagged_collection.rb +53 -0
  184. data/lib/aws/ec2/tagged_item.rb +85 -0
  185. data/lib/aws/ec2/volume.rb +170 -0
  186. data/lib/aws/ec2/volume_collection.rb +97 -0
  187. data/lib/aws/ec2/vpc.rb +166 -0
  188. data/lib/aws/ec2/vpc_collection.rb +70 -0
  189. data/lib/aws/ec2/vpn_connection.rb +99 -0
  190. data/lib/aws/ec2/vpn_connection/telemetry.rb +49 -0
  191. data/lib/aws/ec2/vpn_connection_collection.rb +96 -0
  192. data/lib/aws/ec2/vpn_gateway.rb +123 -0
  193. data/lib/aws/ec2/vpn_gateway/attachment.rb +45 -0
  194. data/lib/aws/ec2/vpn_gateway_collection.rb +77 -0
  195. data/lib/aws/elb.rb +65 -0
  196. data/lib/aws/elb/availability_zone_collection.rb +138 -0
  197. data/lib/aws/elb/backend_server_policy_collection.rb +140 -0
  198. data/lib/aws/elb/client.rb +539 -0
  199. data/lib/aws/elb/config.rb +18 -0
  200. data/lib/aws/elb/errors.rb +26 -0
  201. data/lib/aws/elb/instance_collection.rb +174 -0
  202. data/lib/aws/elb/listener.rb +189 -0
  203. data/lib/aws/elb/listener_collection.rb +119 -0
  204. data/lib/aws/elb/listener_opts.rb +45 -0
  205. data/lib/aws/elb/load_balancer.rb +253 -0
  206. data/lib/aws/elb/load_balancer_collection.rb +113 -0
  207. data/lib/aws/elb/load_balancer_policy.rb +93 -0
  208. data/lib/aws/elb/load_balancer_policy_collection.rb +208 -0
  209. data/lib/aws/elb/request.rb +23 -0
  210. data/lib/aws/errors.rb +122 -0
  211. data/lib/aws/iam.rb +418 -0
  212. data/lib/aws/iam/access_key.rb +180 -0
  213. data/lib/aws/iam/access_key_collection.rb +128 -0
  214. data/lib/aws/iam/account_alias_collection.rb +79 -0
  215. data/lib/aws/iam/client.rb +1609 -0
  216. data/lib/aws/iam/collection.rb +83 -0
  217. data/lib/aws/iam/config.rb +18 -0
  218. data/lib/aws/iam/errors.rb +22 -0
  219. data/lib/aws/iam/group.rb +111 -0
  220. data/lib/aws/iam/group_collection.rb +132 -0
  221. data/lib/aws/iam/group_policy_collection.rb +47 -0
  222. data/lib/aws/iam/group_user_collection.rb +84 -0
  223. data/lib/aws/iam/login_profile.rb +99 -0
  224. data/lib/aws/iam/mfa_device.rb +52 -0
  225. data/lib/aws/iam/mfa_device_collection.rb +127 -0
  226. data/lib/aws/iam/policy.rb +46 -0
  227. data/lib/aws/iam/policy_collection.rb +188 -0
  228. data/lib/aws/iam/request.rb +29 -0
  229. data/lib/aws/iam/resource.rb +71 -0
  230. data/lib/aws/iam/server_certificate.rb +141 -0
  231. data/lib/aws/iam/server_certificate_collection.rb +138 -0
  232. data/lib/aws/iam/signing_certificate.rb +169 -0
  233. data/lib/aws/iam/signing_certificate_collection.rb +131 -0
  234. data/lib/aws/iam/user.rb +205 -0
  235. data/lib/aws/iam/user_collection.rb +133 -0
  236. data/lib/aws/iam/user_group_collection.rb +98 -0
  237. data/lib/aws/iam/user_policy.rb +90 -0
  238. data/lib/aws/iam/user_policy_collection.rb +45 -0
  239. data/lib/aws/iam/virtual_mfa_device.rb +139 -0
  240. data/lib/aws/iam/virtual_mfa_device_collection.rb +73 -0
  241. data/lib/aws/rails.rb +195 -0
  242. data/lib/aws/record.rb +116 -0
  243. data/lib/aws/record/abstract_base.rb +645 -0
  244. data/lib/aws/record/attributes.rb +384 -0
  245. data/lib/aws/record/conversion.rb +38 -0
  246. data/lib/aws/record/dirty_tracking.rb +285 -0
  247. data/lib/aws/record/errors.rb +143 -0
  248. data/lib/aws/record/exceptions.rb +48 -0
  249. data/lib/aws/record/hash_model.rb +161 -0
  250. data/lib/aws/record/hash_model/attributes.rb +182 -0
  251. data/lib/aws/record/hash_model/finder_methods.rb +172 -0
  252. data/lib/aws/record/hash_model/scope.rb +108 -0
  253. data/lib/aws/record/model.rb +427 -0
  254. data/lib/aws/record/model/attributes.rb +379 -0
  255. data/lib/aws/record/model/finder_methods.rb +232 -0
  256. data/lib/aws/record/model/scope.rb +213 -0
  257. data/lib/aws/record/naming.rb +31 -0
  258. data/lib/aws/record/scope.rb +199 -0
  259. data/lib/aws/record/validations.rb +694 -0
  260. data/lib/aws/record/validator.rb +237 -0
  261. data/lib/aws/record/validators/acceptance.rb +51 -0
  262. data/lib/aws/record/validators/block.rb +38 -0
  263. data/lib/aws/record/validators/confirmation.rb +43 -0
  264. data/lib/aws/record/validators/count.rb +108 -0
  265. data/lib/aws/record/validators/exclusion.rb +43 -0
  266. data/lib/aws/record/validators/format.rb +57 -0
  267. data/lib/aws/record/validators/inclusion.rb +56 -0
  268. data/lib/aws/record/validators/length.rb +107 -0
  269. data/lib/aws/record/validators/method.rb +33 -0
  270. data/lib/aws/record/validators/numericality.rb +138 -0
  271. data/lib/aws/record/validators/presence.rb +45 -0
  272. data/lib/aws/s3.rb +135 -0
  273. data/lib/aws/s3/access_control_list.rb +250 -0
  274. data/lib/aws/s3/acl_object.rb +264 -0
  275. data/lib/aws/s3/bucket.rb +393 -0
  276. data/lib/aws/s3/bucket_collection.rb +143 -0
  277. data/lib/aws/s3/bucket_lifecycle_configuration.rb +360 -0
  278. data/lib/aws/s3/bucket_version_collection.rb +77 -0
  279. data/lib/aws/s3/client.rb +1184 -0
  280. data/lib/aws/s3/client/xml.rb +177 -0
  281. data/lib/aws/s3/config.rb +26 -0
  282. data/lib/aws/s3/data_options.rb +100 -0
  283. data/lib/aws/s3/errors.rb +81 -0
  284. data/lib/aws/s3/multipart_upload.rb +317 -0
  285. data/lib/aws/s3/multipart_upload_collection.rb +68 -0
  286. data/lib/aws/s3/object_collection.rb +337 -0
  287. data/lib/aws/s3/object_metadata.rb +96 -0
  288. data/lib/aws/s3/object_upload_collection.rb +77 -0
  289. data/lib/aws/s3/object_version.rb +143 -0
  290. data/lib/aws/s3/object_version_collection.rb +89 -0
  291. data/lib/aws/s3/paginated_collection.rb +75 -0
  292. data/lib/aws/s3/policy.rb +74 -0
  293. data/lib/aws/s3/prefix_and_delimiter_collection.rb +47 -0
  294. data/lib/aws/s3/prefixed_collection.rb +81 -0
  295. data/lib/aws/s3/presigned_post.rb +553 -0
  296. data/lib/aws/s3/request.rb +201 -0
  297. data/lib/aws/s3/s3_object.rb +1037 -0
  298. data/lib/aws/s3/tree.rb +118 -0
  299. data/lib/aws/s3/tree/branch_node.rb +68 -0
  300. data/lib/aws/s3/tree/child_collection.rb +104 -0
  301. data/lib/aws/s3/tree/leaf_node.rb +94 -0
  302. data/lib/aws/s3/tree/node.rb +22 -0
  303. data/lib/aws/s3/tree/parent.rb +87 -0
  304. data/lib/aws/s3/uploaded_part.rb +80 -0
  305. data/lib/aws/s3/uploaded_part_collection.rb +84 -0
  306. data/lib/aws/simple_db.rb +217 -0
  307. data/lib/aws/simple_db/attribute.rb +154 -0
  308. data/lib/aws/simple_db/attribute_collection.rb +231 -0
  309. data/lib/aws/simple_db/client.rb +349 -0
  310. data/lib/aws/simple_db/config.rb +20 -0
  311. data/lib/aws/simple_db/consistent_read_option.rb +42 -0
  312. data/lib/aws/simple_db/delete_attributes.rb +62 -0
  313. data/lib/aws/simple_db/domain.rb +121 -0
  314. data/lib/aws/simple_db/domain_collection.rb +113 -0
  315. data/lib/aws/simple_db/domain_metadata.rb +110 -0
  316. data/lib/aws/simple_db/errors.rb +55 -0
  317. data/lib/aws/simple_db/expect_condition_option.rb +45 -0
  318. data/lib/aws/simple_db/item.rb +93 -0
  319. data/lib/aws/simple_db/item_collection.rb +649 -0
  320. data/lib/aws/simple_db/item_data.rb +73 -0
  321. data/lib/aws/simple_db/put_attributes.rb +60 -0
  322. data/lib/aws/simple_db/request.rb +23 -0
  323. data/lib/aws/simple_email_service.rb +426 -0
  324. data/lib/aws/simple_email_service/client.rb +286 -0
  325. data/lib/aws/simple_email_service/config.rb +19 -0
  326. data/lib/aws/simple_email_service/email_address_collection.rb +69 -0
  327. data/lib/aws/simple_email_service/errors.rb +22 -0
  328. data/lib/aws/simple_email_service/identity.rb +91 -0
  329. data/lib/aws/simple_email_service/identity_collection.rb +81 -0
  330. data/lib/aws/simple_email_service/quotas.rb +64 -0
  331. data/lib/aws/simple_email_service/request.rb +29 -0
  332. data/lib/aws/simple_workflow.rb +226 -0
  333. data/lib/aws/simple_workflow/activity_task.rb +173 -0
  334. data/lib/aws/simple_workflow/activity_task_collection.rb +123 -0
  335. data/lib/aws/simple_workflow/activity_type.rb +131 -0
  336. data/lib/aws/simple_workflow/activity_type_collection.rb +93 -0
  337. data/lib/aws/simple_workflow/client.rb +1434 -0
  338. data/lib/aws/simple_workflow/config.rb +18 -0
  339. data/lib/aws/simple_workflow/count.rb +49 -0
  340. data/lib/aws/simple_workflow/decision_task.rb +601 -0
  341. data/lib/aws/simple_workflow/decision_task_collection.rb +225 -0
  342. data/lib/aws/simple_workflow/domain.rb +122 -0
  343. data/lib/aws/simple_workflow/domain_collection.rb +169 -0
  344. data/lib/aws/simple_workflow/errors.rb +20 -0
  345. data/lib/aws/simple_workflow/history_event.rb +276 -0
  346. data/lib/aws/simple_workflow/history_event_collection.rb +76 -0
  347. data/lib/aws/simple_workflow/option_formatters.rb +82 -0
  348. data/lib/aws/simple_workflow/request.rb +36 -0
  349. data/lib/aws/simple_workflow/resource.rb +94 -0
  350. data/lib/aws/simple_workflow/type.rb +89 -0
  351. data/lib/aws/simple_workflow/type_collection.rb +140 -0
  352. data/lib/aws/simple_workflow/workflow_execution.rb +386 -0
  353. data/lib/aws/simple_workflow/workflow_execution_collection.rb +617 -0
  354. data/lib/aws/simple_workflow/workflow_type.rb +177 -0
  355. data/lib/aws/simple_workflow/workflow_type_collection.rb +91 -0
  356. data/lib/aws/sns.rb +74 -0
  357. data/lib/aws/sns/client.rb +371 -0
  358. data/lib/aws/sns/config.rb +18 -0
  359. data/lib/aws/sns/errors.rb +22 -0
  360. data/lib/aws/sns/has_delivery_policy.rb +68 -0
  361. data/lib/aws/sns/policy.rb +47 -0
  362. data/lib/aws/sns/request.rb +23 -0
  363. data/lib/aws/sns/subscription.rb +144 -0
  364. data/lib/aws/sns/subscription_collection.rb +80 -0
  365. data/lib/aws/sns/topic.rb +403 -0
  366. data/lib/aws/sns/topic_collection.rb +67 -0
  367. data/lib/aws/sns/topic_subscription_collection.rb +55 -0
  368. data/lib/aws/sqs.rb +79 -0
  369. data/lib/aws/sqs/client.rb +360 -0
  370. data/lib/aws/sqs/config.rb +18 -0
  371. data/lib/aws/sqs/errors.rb +101 -0
  372. data/lib/aws/sqs/policy.rb +48 -0
  373. data/lib/aws/sqs/queue.rb +725 -0
  374. data/lib/aws/sqs/queue_collection.rb +170 -0
  375. data/lib/aws/sqs/received_message.rb +181 -0
  376. data/lib/aws/sqs/received_sns_message.rb +112 -0
  377. data/lib/aws/sqs/request.rb +43 -0
  378. data/lib/aws/sts.rb +152 -0
  379. data/lib/aws/sts/client.rb +105 -0
  380. data/lib/aws/sts/config.rb +18 -0
  381. data/lib/aws/sts/errors.rb +22 -0
  382. data/lib/aws/sts/federated_session.rb +56 -0
  383. data/lib/aws/sts/policy.rb +30 -0
  384. data/lib/aws/sts/request.rb +29 -0
  385. data/lib/aws/sts/session.rb +48 -0
  386. data/lib/net/http/connection_pool.rb +210 -0
  387. data/lib/net/http/connection_pool/connection.rb +132 -0
  388. data/lib/net/http/connection_pool/session.rb +93 -0
  389. data/lib/user.rb +49 -0
  390. metadata +433 -0
@@ -0,0 +1,458 @@
1
+ # Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+
14
+ module AWS
15
+ class EC2
16
+
17
+ # Represents a security group in EC2.
18
+ #
19
+ # @attr_reader [String] description The short informal description
20
+ # given when the group was created.
21
+ #
22
+ # @attr_reader [String] name The name of the security group.
23
+ #
24
+ # @attr_reader [String] owner_id The security group owner's id.
25
+ #
26
+ # @attr_reader [String,nil] vpc_id If this is a VPC security group,
27
+ # vpc_id is the ID of the VPC this group was created in.
28
+ # Returns false otherwise.
29
+ #
30
+ class SecurityGroup < Resource
31
+
32
+ AWS.register_autoloads(self, 'aws/ec2/security_group') do
33
+ autoload :IpPermission, 'ip_permission'
34
+ autoload :IpPermissionCollection, 'ingress_ip_permission_collection'
35
+ autoload :IngressIpPermissionCollection, 'ingress_ip_permission_collection'
36
+ autoload :EgressIpPermissionCollection, 'egress_ip_permission_collection'
37
+ end
38
+
39
+ include TaggedItem
40
+
41
+ def initialize security_group_id, options = {}
42
+ @security_group_id = security_group_id
43
+ super
44
+ end
45
+
46
+ # @return [String]
47
+ attr_reader :security_group_id
48
+
49
+ alias_method :group_id, :security_group_id
50
+
51
+ alias_method :id, :security_group_id
52
+
53
+ attribute :name, :as => :group_name, :static => true
54
+
55
+ attribute :owner_id, :static => true
56
+
57
+ attribute :vpc_id, :static => true
58
+
59
+ attribute :description, :as => :group_description, :static => true
60
+
61
+ attribute :ip_permissions_list, :as => :ip_permissions
62
+
63
+ attribute :ip_permissions_list_egress, :as => :ip_permissions_egress
64
+
65
+ populates_from(:describe_security_groups) do |resp|
66
+ resp.security_group_index[id]
67
+ end
68
+
69
+ # @return [Boolean] True if the security group exists.
70
+ def exists?
71
+ client.describe_security_groups(:filters => [
72
+ { :name => "group-id", :values => [id] }
73
+ ]).security_group_index.key?(id)
74
+ end
75
+
76
+ # Returns true if this security group is a VPC security group and
77
+ # not an EC2 security group. VPC security groups belong to a VPC
78
+ # subnet and can have egress rules.
79
+ # @return [Boolean] Returns true if this is a VPC security group and
80
+ # false if this is an EC2 security group.
81
+ def vpc?
82
+ vpc_id ? true : false
83
+ end
84
+
85
+ # @return [VPC,nil] Returns the VPC this security group belongs to,
86
+ # or nil if this is not a VPC security group.
87
+ def vpc
88
+ if vpc_id
89
+ VPC.new(vpc_id, :config => config)
90
+ end
91
+ end
92
+
93
+ # @return [SecurityGroup::IngressIpPermissionCollection] Returns a
94
+ # collection of {IpPermission} objects that represents all of
95
+ # the (ingress) permissions this security group has
96
+ # authorizations for.
97
+ def ingress_ip_permissions
98
+ IngressIpPermissionCollection.new(self, :config => config)
99
+ end
100
+ alias_method :ip_permissions, :ingress_ip_permissions
101
+
102
+ # @return [SecurityGroup::EgressIpPermissionCollection] Returns a
103
+ # collection of {IpPermission} objects that represents all of
104
+ # the egress permissions this security group has authorizations for.
105
+ def egress_ip_permissions
106
+ EgressIpPermissionCollection.new(self, :config => config)
107
+ end
108
+
109
+ # Adds ingress rules for ICMP pings. Defaults to 0.0.0.0/0 for
110
+ # the list of allowed IP ranges the ping can come from.
111
+ #
112
+ # security_group.allow_ping # anyone can ping servers in this group
113
+ #
114
+ # # only allow ping from a particular address
115
+ # security_group.allow_ping('123.123.123.123/0')
116
+ #
117
+ # @param [String] sources One or more IP ranges to allow ping from.
118
+ # Defaults to 0.0.0.0/0
119
+ #
120
+ # @return [nil]
121
+ #
122
+ def allow_ping *sources
123
+ sources << '0.0.0.0/0' if sources.empty?
124
+ authorize_ingress('icmp', -1, *sources)
125
+ end
126
+
127
+ # Removes ingress rules for ICMP pings. Defaults to 0.0.0.0/0 for
128
+ # the list of IP ranges to revoke.
129
+ #
130
+ # @param [String] sources One or more IP ranges to disallow ping from.
131
+ # Defaults to 0.0.0.0/0
132
+ #
133
+ # @return [nil]
134
+ #
135
+ def disallow_ping *sources
136
+ sources << '0.0.0.0/0' if sources.empty?
137
+ revoke_ingress('icmp', -1, *sources)
138
+ end
139
+
140
+ # Add an ingress rules to this security group.
141
+ # Ingress rules permit inbound traffic over a given protocol for
142
+ # a given port range from one or more souce ip addresses.
143
+ #
144
+ # This example grants the whole internet (0.0.0.0/0) access to port 80
145
+ # over TCP (HTTP web traffic).
146
+ #
147
+ # security_group.authorize_ingress(:tcp, 80)
148
+ #
149
+ # You can specify port ranges as well:
150
+ #
151
+ # # ftp
152
+ # security_group.authorize_ingress(:tcp, 20..21)
153
+ #
154
+ # == Sources
155
+ #
156
+ # Security groups accept ingress trafic from:
157
+ #
158
+ # * CIDR IP addresses
159
+ # * security groups
160
+ # * load balancers
161
+ #
162
+ # === Ip Addresses
163
+ #
164
+ # In the following example allow incoming SSH from a list of
165
+ # IP address ranges.
166
+ #
167
+ # security_group.authorize_ingress(:tcp, 22,
168
+ # '111.111.111.111/0', '222.222.222.222/0')
169
+ #
170
+ # === Security Groups
171
+ #
172
+ # To autohrize ingress traffic from all EC2 instance in another
173
+ # security group, just pass the security group:
174
+ #
175
+ # web = security_groups.create('webservers')
176
+ # db = security_groups.create('database')
177
+ # db.authorize_ingress(:tcp, 3306, web)
178
+ #
179
+ # You can also pass a hash of security group details instead of
180
+ # a {SecurityGroup} object.
181
+ #
182
+ # # by security group name
183
+ # sg.authorize_ingress(:tcp, 80, { :group_name => 'other-group' })
184
+ #
185
+ # # by security group id
186
+ # sg.authorize_ingress(:tcp, 80, { :group_id => 'sg-1234567' })
187
+ #
188
+ # If the security group belongs to a different account, just make
189
+ # sure it has the correct owner ID populated:
190
+ #
191
+ # not_my_sg = SecurityGroup.new('sg-1234567', :owner_id => 'abcxyz123')
192
+ # my_sg.authorize_ingress(:tcp, 80, not_my_sg)
193
+ #
194
+ # You can do the same with a hash as well (with either +:group_id+
195
+ # or +:group_name+):
196
+ #
197
+ # sg.authorize_ingress(:tcp, 21..22, { :group_id => 'sg-id', :user_id => 'abcxyz123' })
198
+ #
199
+ # === Load Balancers
200
+ #
201
+ # If you use ELB to manage load balancers, then you need to add
202
+ # ingress permissions to the security groups they route traffic into.
203
+ # You can do this by passing the {ELB::LoadBalancer} into
204
+ # authorize_ingress:
205
+ #
206
+ # load_balancer = AWS::ELB.new.load_balancers['web-load-balancer']
207
+ #
208
+ # sg.authorize_ingress(:tcp, 80, load_balancer)
209
+ #
210
+ # === Multiple Sources
211
+ #
212
+ # You can provide multiple sources each time you call authorize
213
+ # ingress, and you can mix and match the source types:
214
+ #
215
+ # sg.authorize_ingress(:tcp, 80, other_sg, '1.2.3.4/0', load_balancer)
216
+ #
217
+ # @param [String, Symbol] protocol Should be :tcp, :udp or :icmp
218
+ # or the string equivalent.
219
+ #
220
+ # @param [Integer, Range] ports The port (or port range) to allow
221
+ # traffic through. You can pass a single integer (like 80)
222
+ # or a range (like 20..21).
223
+ #
224
+ # @param [Mixed] sources One or more CIDR IP addresses,
225
+ # security groups, or load balancers. Security groups
226
+ # can be specified as hashes.
227
+ #
228
+ # A security group hash must provide either +:group_id+ or
229
+ # +:group_name+ for the security group. If the security group
230
+ # does not belong to you aws account then you must also
231
+ # provide +:user_id+ (which can be an AWS account ID or alias).
232
+ #
233
+ # @return [nil]
234
+ #
235
+ def authorize_ingress protocol, ports, *sources
236
+ client.authorize_security_group_ingress(
237
+ :group_id => id,
238
+ :ip_permissions => [ingress_opts(protocol, ports, sources)]
239
+ )
240
+ nil
241
+ end
242
+
243
+ # Revokes an ingress (inbound) ip permission. This is the inverse
244
+ # operation to {#authorize_ingress}. See {#authorize_ingress}
245
+ # for param and option documentation.
246
+ #
247
+ # @see #authorize_ingress
248
+ #
249
+ # @return [nil]
250
+ #
251
+ def revoke_ingress protocol, ports, *sources
252
+ client.revoke_security_group_ingress(
253
+ :group_id => id,
254
+ :ip_permissions => [ingress_opts(protocol, ports, sources)]
255
+ )
256
+ nil
257
+ end
258
+
259
+ # Authorize egress (outbound) traffic for a VPC security group.
260
+ #
261
+ # # allow traffic for all protocols/ports from the given sources
262
+ # security_group.authorize_egress('10.0.0.0/16', '10.0.0.1/16')
263
+ #
264
+ # # allow tcp traffic outband via port 80
265
+ # security_group.authorize_egress('10.0.0.0/16',
266
+ # :protocol => :tcp, :ports => 80..80)
267
+ #
268
+ # @note Calling this method on a non-VPC security group raises an error.
269
+ #
270
+ # @overload authorize_egress(*sources, options = {})
271
+ #
272
+ # @param [Mixed] sources One or more CIDR IP addresses,
273
+ # security groups or load balancers. See {#authorize_ingress}
274
+ # for more information on accepted formats for sources.
275
+ #
276
+ # @param [Hash] options
277
+ #
278
+ # @option options [Symbol] :protocol (:any) The protocol name or number
279
+ # to authorize egress traffic for. For a complete list of protocols
280
+ # see: {http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml}
281
+ #
282
+ # @option options [Range<Integer>,Integer] :ports (nil) An optional
283
+ # port or range of ports. This option is required depending on
284
+ # the protocol.
285
+ #
286
+ # @return [nil]
287
+ #
288
+ def authorize_egress *sources
289
+ client.authorize_security_group_egress(
290
+ :group_id => id,
291
+ :ip_permissions => [egress_opts(sources)])
292
+ nil
293
+ end
294
+
295
+ # Revokes an egress (outound) ip permission. This is the inverse
296
+ # operation to {#authorize_egress}. See {#authorize_egress}
297
+ # for param and option documentation.
298
+ #
299
+ # @see #authorize_egress
300
+ #
301
+ # @return [nil]
302
+ #
303
+ def revoke_egress *sources
304
+ client.revoke_security_group_egress(
305
+ :group_id => id,
306
+ :ip_permissions => [egress_opts(sources)])
307
+ nil
308
+ end
309
+
310
+ # Deletes this security group.
311
+ #
312
+ # If you attempt to delete a security group that contains
313
+ # instances, or attempt to delete a security group that is referenced
314
+ # by another security group, an error is raised. For example, if
315
+ # security group B has a rule that allows access from security
316
+ # group A, security group A cannot be deleted until the rule is
317
+ # removed.
318
+ # @return [nil]
319
+ def delete
320
+ client.delete_security_group(:group_id => id)
321
+ nil
322
+ end
323
+
324
+ # @private
325
+ def resource_type
326
+ 'security-group'
327
+ end
328
+
329
+ # @private
330
+ def inflected_name
331
+ "group"
332
+ end
333
+
334
+ # @private
335
+ def self.describe_call_name
336
+ :describe_security_groups
337
+ end
338
+ def describe_call_name; self.class.describe_call_name; end
339
+
340
+ # @private
341
+ protected
342
+ def ingress_opts protocol, ports, sources
343
+
344
+ opts = {}
345
+ opts[:ip_protocol] = protocol.to_s.downcase
346
+ opts[:from_port] = Array(ports).first.to_i
347
+ opts[:to_port] = Array(ports).last.to_i
348
+
349
+ ips, groups = parse_sources(sources)
350
+
351
+ opts[:ip_ranges] = ips unless ips.empty?
352
+ opts[:user_id_group_pairs] = groups unless groups.empty?
353
+
354
+ opts
355
+
356
+ end
357
+
358
+ # @private
359
+ protected
360
+ def egress_opts args
361
+ ensure_vpc do
362
+
363
+ last = args.last
364
+
365
+ if last.is_a?(Hash) and (last.key?(:protocol) or last.key?(:ports))
366
+ # hashes at the end of egress methods could be a hash intedned
367
+ # to be a source, like:
368
+ #
369
+ # { :group_id => ..., :user_id => ... }
370
+ #
371
+ options = args.pop
372
+ else
373
+ options = {}
374
+ end
375
+
376
+ opts = {}
377
+
378
+ opts[:ip_protocol] = [nil,:any, '-1'].include?(options[:protocol]) ?
379
+ '-1' : options[:protocol].to_s.downcase
380
+
381
+ if options[:ports]
382
+ opts[:from_port] = Array(options[:ports]).first.to_i
383
+ opts[:to_port] = Array(options[:ports]).last.to_i
384
+ end
385
+
386
+ ips, groups = parse_sources(args)
387
+
388
+ opts[:ip_ranges] = ips unless ips.empty?
389
+ opts[:user_id_group_pairs] = groups unless groups.empty?
390
+
391
+ opts
392
+
393
+ end
394
+ end
395
+
396
+ # @private
397
+ protected
398
+ def parse_sources sources
399
+
400
+ ips = []
401
+ groups = []
402
+
403
+ sources.each do |source|
404
+ case source
405
+
406
+ when String
407
+ ips << { :cidr_ip => source }
408
+
409
+ when SecurityGroup
410
+ groups << { :group_id => source.id, :user_id => source.owner_id }
411
+
412
+ when ELB::LoadBalancer
413
+ groups << source.source_security_group
414
+
415
+ when Hash
416
+
417
+ # group name or id required
418
+ unless source.has_key?(:group_id) or source.has_key?(:group_name)
419
+ raise ArgumentError, 'invalid ip permission hash, ' +
420
+ 'must provide :group_id or :group_name'
421
+ end
422
+
423
+ # prevent typos
424
+ unless source.keys - [:group_id, :group_name, :user_id] == []
425
+ raise ArgumentError, 'invalid ip permission hash, ' +
426
+ 'only accepts the following keys, :group_id, :group_name, :user_id'
427
+ end
428
+
429
+ groups << source
430
+
431
+ else
432
+ raise ArgumentError, 'invalid ingress ip permission, ' +
433
+ 'expected CIDR IP address or SecurityGroup'
434
+ end
435
+ end
436
+
437
+ ips << { :cidr_ip => '0.0.0.0/0' } if ips.empty? and groups.empty?
438
+
439
+ [ips, groups]
440
+
441
+ end
442
+
443
+ # @private
444
+ protected
445
+ def ensure_vpc &block
446
+ raise 'operation permitted for VPC security groups only' unless vpc?
447
+ yield
448
+ end
449
+
450
+ # @private
451
+ protected
452
+ def find_in_response(resp)
453
+ resp.security_group_index[id]
454
+ end
455
+
456
+ end
457
+ end
458
+ end