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,206 @@
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 DynamoDB
16
+
17
+ # A utility class for configuring a list of tables, attributes and
18
+ # items to request information for.
19
+ #
20
+ # @see DynamoDB#batch_get
21
+ # @see Table#batch_get
22
+ #
23
+ class BatchGet
24
+
25
+ include Keys
26
+ include Enumerable
27
+ include Core::Model
28
+
29
+ def initialize options = {}
30
+ super(options)
31
+ @request_items = {}
32
+ end
33
+
34
+ # Add a list of items to fetch in this batch.
35
+ #
36
+ # @param [Table,String] table The name of the table to fetch attributes
37
+ # from.
38
+ #
39
+ # @param [Symbol, String, Array<String>] attributes The list of attributes
40
+ # to fetch. If you want to load *ALL* attributes for the named items,
41
+ # then pass the symbol +:all+.
42
+ #
43
+ # # get all attributes
44
+ # batch_get.table('mytable', :all, items)
45
+ #
46
+ # # get one attribute for each item
47
+ # batch_get.table('mytable', ['name'], items)
48
+ #
49
+ # # get a list of attributes for each item
50
+ # batch_get.table('mytable', ['name', 'size'], items)
51
+ #
52
+ # @param [Array<Item,Array>] items One or more items to fetch attributes
53
+ # for. Each attribute should be one of the following:
54
+ #
55
+ # * an {Item} object
56
+ # * a hash key value
57
+ # * a hash key value and a range key value
58
+ #
59
+ # You must provide both the hash key and range key values if the table
60
+ # schema has both.
61
+ #
62
+ # batch_get.table('mytable', :all, [%w(hk1 rk1), %w(hk1 rk2), ...])
63
+ #
64
+ # @return [nil]
65
+ #
66
+ def table table, attributes, items
67
+
68
+ table = table.is_a?(Table) ? table.name : table.to_s
69
+
70
+ attributes = attributes == :all ? nil : [attributes].flatten
71
+
72
+ keys = items.collect do |item|
73
+ case item
74
+ when Item then item_key_hash(item)
75
+ when Array
76
+ {
77
+ :hash_key_element => format_attribute_value(item[0]),
78
+ :range_key_element => format_attribute_value(item[1]),
79
+ }
80
+ else
81
+ { :hash_key_element => format_attribute_value(item) }
82
+ end
83
+ end
84
+
85
+ ## ensure we don't receive 2 different lists of attributes for
86
+ ## the same table
87
+
88
+ if
89
+ @request_items.has_key?(table) and
90
+ @request_items[table][:attributes_to_get] != attributes
91
+ then
92
+ msg = "When batch getting attributes, you may only provide " +
93
+ "1 list of attributes per table, but the `#{table}` table " +
94
+ "has received reqeusts for 2 different sets of attributes"
95
+ raise ArgumentError, msg
96
+ end
97
+
98
+ ## merge attributes and items with the request items
99
+
100
+ @request_items[table] ||= { :keys => [] }
101
+ @request_items[table][:attributes_to_get] = attributes if attributes
102
+ @request_items[table][:keys] += keys
103
+
104
+ nil
105
+
106
+ end
107
+
108
+ # Specify a list of {Item} objects to batch fetch attributes for.
109
+ # The table name is retrieved from the items objects, this means
110
+ # the items do not need to belong to the same table.
111
+ #
112
+ # @param [Symbol, String, Array<String>] attributes The list of attributes
113
+ # to fetch. If you want to load *ALL* attributes for the named items,
114
+ # then pass the symbol +:all+.
115
+ #
116
+ # # get all attributes
117
+ # batch_get.table('mytable', :all, items)
118
+ #
119
+ # # get one attribute for each item
120
+ # batch_get.table('mytable', ['name'], items)
121
+ #
122
+ # # get a list of attributes for each item
123
+ # batch_get.table('mytable', ['name', 'size'], items)
124
+ #
125
+ # @param [Item] items One or more {Item} objects to fetch attributes
126
+ # for. These items may come from any number of different tables.
127
+ #
128
+ def items attributes, *items
129
+ [items].flatten.each do |item|
130
+ self.table(item.table, attributes, [item])
131
+ end
132
+ end
133
+
134
+ # @return [nil]
135
+ def each &block
136
+
137
+ options = { :request_items => @request_items }
138
+
139
+ begin
140
+
141
+ response = client.batch_get_item(options)
142
+
143
+ response.data['Responses'].each_pair do |table_name,details|
144
+ details['Items'].each do |hash_data|
145
+ attributes = values_from_response_hash(hash_data)
146
+ yield(table_name, attributes)
147
+ end
148
+ end
149
+
150
+ options[:request_items] = convert_unprocessed_keys(response)
151
+
152
+ end while options[:request_items]
153
+
154
+ nil
155
+
156
+ end
157
+
158
+ # Yields only attribute hashes. This removes the outer hash that
159
+ # normally provides the :table_name and :attributes keys. This is
160
+ # useful when your batch get requested items from a single table.
161
+ def each_attributes
162
+ each do |table_name, attributes|
163
+ yield(attributes)
164
+ end
165
+ end
166
+
167
+ protected
168
+ def convert_unprocessed_keys response
169
+
170
+ return nil if response.data['UnprocessedKeys'].empty?
171
+
172
+ # convert the json response keys into symbolized keys
173
+ str2sym = lambda do |key_desc|
174
+ type, value = key_desc.to_a.flatten
175
+ case type
176
+ when "S" then { :s => value }
177
+ when "N" then { :n => value }
178
+ else
179
+ raise "unhandled key type: #{type}"
180
+ end
181
+ end
182
+
183
+ request_items = {}
184
+ response.data['UnprocessedKeys'].each_pair do |table,keys|
185
+
186
+ request_items[table] = {}
187
+
188
+ request_items[table][:attributes_to_get] = keys['AttributesToGet'] if
189
+ keys['AttributesToGet']
190
+
191
+ request_items[table][:keys] = keys['Keys'].collect do |desc|
192
+ key = {}
193
+ key[:hash_key_element] = str2sym.call(desc['HashKeyElement'])
194
+ key[:range_key_element] = str2sym.call(desc['RangeKeyElement']) if
195
+ desc['RangeKeyElement']
196
+ key
197
+ end
198
+
199
+ end
200
+ request_items
201
+
202
+ end
203
+
204
+ end
205
+ end
206
+ end
@@ -0,0 +1,251 @@
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 DynamoDB
16
+ class BatchWrite
17
+
18
+ include Types
19
+ include Core::Model
20
+
21
+ def initialize options = {}
22
+ super(options)
23
+ @request_items = {}
24
+ end
25
+
26
+ # Adds one or more items to the batch write operation.
27
+ #
28
+ # # adding one item at a time to the batch
29
+ # batch = AWS::DynamoDB::BatchWrite.new
30
+ # batch.put('table-name', :id => 'id1', :color => 'red')
31
+ # batch.put('table-name', :id => 'id2', :color => 'blue')
32
+ # batch.process!
33
+ #
34
+ # # adding multiple items to a batch
35
+ # batch = AWS::DynamoDB::BatchWrite.new
36
+ # batch.put('table-name', [
37
+ # { :id => 'id1', :color => 'red' },
38
+ # { :id => 'id2', :color => 'blue' },
39
+ # { :id => 'id3', :color => 'green' },
40
+ # ])
41
+ # batch.process!
42
+ #
43
+ # @param [Table,String] table A {Table} object or table name string.
44
+ #
45
+ # @param [Array<Hash>] items A list of item attributes to put.
46
+ # The hash must contain the table hash key element and range key
47
+ # element (if one is defined).
48
+ #
49
+ # @return [nil]
50
+ #
51
+ def put table, items
52
+ write(table, :put => items.flatten)
53
+ nil
54
+ end
55
+
56
+ # Adds one or more items to the batch to delete.
57
+ #
58
+ # # for a table w/out a range key
59
+ # batch = AWS::DynamoDB::BatchWrite.new
60
+ # batch.delete('table-name', %w(hk1 hk2))
61
+ # batch.process!
62
+ #
63
+ # # for a table with a range key
64
+ # batch = AWS::DynamoDB::BatchWrite.new
65
+ # batch.delete('table-name', [['hk1', 'rk2'], ['hk1', 'rk2']]])
66
+ # batch.process!
67
+ #
68
+ # @param [Table,String] table A {Table} object or table name string.
69
+ #
70
+ # @param [Array<String>,Array<Array>] items A list of item keys to
71
+ # delete. For tables without a range key, items should be an array
72
+ # of hash key strings.
73
+ #
74
+ # batch.delete('table-name', ['hk1', 'hk2', 'hk3'])
75
+ #
76
+ # For tables with a range key, items should be an array of
77
+ # hash key and range key pairs.
78
+ #
79
+ # batch.delete('table-name', [['hk1', 'rk1'], ['hk1', 'rk2']])
80
+ #
81
+ # @return [nil]
82
+ #
83
+ def delete table, items
84
+ write(table, :delete => items)
85
+ nil
86
+ end
87
+
88
+ # Add items to the batch. Accepts both item to put and and items
89
+ # to delete.
90
+ #
91
+ # @param [Table,String] table A {Table} object or table name string.
92
+ #
93
+ # @param [Hash] options
94
+ #
95
+ # @option options [Array<Hash>] :put An array of items to put. Each item
96
+ # should be an array of attribute hashes.
97
+ #
98
+ # # add 3 items to the batch
99
+ # batch.write(table, :put => [
100
+ # { :id => 'abc', :color => 'red', :count => 2 },
101
+ # { :id => 'mno', :color => 'blue', :count => 3 },
102
+ # { :id => 'xyz', :color => 'green', :count => 5 },
103
+ # ])
104
+ #
105
+ # @option options [Array<String>,Array<Array>] :delete A list of item keys
106
+ # to delete. For tables without a range key, items should be an array
107
+ # of hash key strings.
108
+ #
109
+ # batch.write('table-name', :delete => ['hk1', 'hk2', 'hk3'])
110
+ #
111
+ # For tables with a range key, items should be an array of
112
+ # hash key and range key pairs.
113
+ #
114
+ # batch.write('table-name', :delete => [['hk1', 'rk1'], ['hk1', 'rk2']])
115
+ #
116
+ def write table, options = {}
117
+
118
+ items = table_items(table)
119
+
120
+ if put = options[:put]
121
+ put.each do |attributes|
122
+ items << { :put_request => { :item => format_put(attributes) }}
123
+ end
124
+ end
125
+
126
+ if del = options[:delete]
127
+ del.each do |keys|
128
+ items << { :delete_request => { :key => format_delete(keys) }}
129
+ end
130
+ end
131
+
132
+ end
133
+
134
+ # Proccesses pending request items.
135
+ # @return [nil]
136
+ def process!
137
+
138
+ return if @request_items.empty?
139
+
140
+ opts = { :request_items => @request_items }
141
+
142
+ begin
143
+
144
+ response = client.batch_write_item(opts)
145
+
146
+ unprocessed = response.data['UnprocessedItems']
147
+
148
+ opts[:request_items] = convert_unprocessed_items(unprocessed)
149
+
150
+ end while opts[:request_items]
151
+
152
+ @request_items = {}
153
+ nil
154
+
155
+ end
156
+
157
+ protected
158
+
159
+ def table_name table
160
+ table.is_a?(Table) ? table.name : table.to_s
161
+ end
162
+
163
+ def table_items table
164
+ @request_items[table_name(table)] ||= []
165
+ end
166
+
167
+ def format_put attributes
168
+ attributes.inject({}) do |hash, (key, value)|
169
+ context = "value for attribute #{key}"
170
+ hash.merge(key.to_s => format_attribute_value(value, context))
171
+ end
172
+ end
173
+
174
+ def format_delete keys
175
+
176
+ keys = [keys] unless keys.is_a?(Array)
177
+
178
+ item = {}
179
+ item[:hash_key_element] = format_attribute_value(keys.first)
180
+ item[:range_key_element] = format_attribute_value(keys.last) if
181
+ keys.count > 1
182
+
183
+ item
184
+
185
+ end
186
+
187
+ def convert_unprocessed_items items
188
+
189
+ return nil if items.empty?
190
+
191
+ request_items = {}
192
+
193
+ items.each_pair do |table,requests|
194
+
195
+ request_items[table] ||= []
196
+
197
+ requests.each do |request|
198
+
199
+ item = request.values.first
200
+
201
+ request_items[table] <<
202
+ case request.keys.first
203
+ when 'PutRequest' then convert_put_item(item['Item'])
204
+ when 'DeleteRequest' then convert_delete_item(item['Key'])
205
+ end
206
+
207
+ end
208
+
209
+ end
210
+
211
+ request_items
212
+
213
+ end
214
+
215
+ def convert_put_item item
216
+
217
+ attributes = {}
218
+ item.each_pair do |name,value|
219
+ attributes[name] = str2sym(value)
220
+ end
221
+
222
+ { :put_request => { :item => attributes }}
223
+
224
+ end
225
+
226
+ def convert_delete_item item
227
+
228
+ key = {}
229
+ key[:hash_key_element] = str2sym(item['HashKeyElement'])
230
+ key[:range_key_element] = str2sym(item['RangeKeyElement']) if
231
+ item['RangeKeyElement']
232
+
233
+ { :delete_request => { :key => key}}
234
+
235
+ end
236
+
237
+ def str2sym key_desc
238
+ type, value = key_desc.to_a.flatten(1)
239
+ case type
240
+ when "S" then { :s => value }
241
+ when "N" then { :n => value }
242
+ when "SS" then { :ss => value }
243
+ when "NS" then { :ns => value }
244
+ else
245
+ raise "unhandled key type: #{type.inspect}"
246
+ end
247
+ end
248
+
249
+ end
250
+ end
251
+ end