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,31 @@
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
+ class ItemData
18
+
19
+ attr_reader :item
20
+
21
+ attr_reader :attributes
22
+
23
+ def initialize(opts = {})
24
+ @item = opts[:item]
25
+ @attributes = opts[:attributes]
26
+ end
27
+
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,41 @@
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
+ # @private
18
+ module Keys
19
+
20
+ include Types
21
+
22
+ # @return [Hash] Client options for identifying an item.
23
+ def item_key_options(item, extra = {})
24
+ key = item_key_hash(item)
25
+ extra.merge({ :table_name => item.table.name, :key => key })
26
+ end
27
+
28
+ # @return [Hash] Returns just the hash key element and range key element
29
+ def item_key_hash item
30
+ item.table.assert_schema!
31
+ key = {}
32
+ key[:hash_key_element] = format_attribute_value(item.hash_value)
33
+ key[:range_key_element] = format_attribute_value(item.range_value) if
34
+ item.table.composite_key?
35
+ key
36
+ end
37
+
38
+ end
39
+
40
+ end
41
+ end
@@ -0,0 +1,47 @@
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 PrimaryKeyElement
17
+
18
+ attr_reader :name
19
+
20
+ attr_reader :type
21
+
22
+ ATTRIBUTE_TYPES = {
23
+ "S" => :string,
24
+ "N" => :number
25
+ }
26
+
27
+ def initialize(hash)
28
+ @name = hash[:name] || hash["AttributeName"]
29
+ @type = hash[:type] || ATTRIBUTE_TYPES[hash["AttributeType"]]
30
+ end
31
+
32
+ def self.from_description(description)
33
+ (name, type, *extra) = description.to_a.flatten
34
+
35
+ raise(ArgumentError,
36
+ "key element may contain only one name/type pair") unless
37
+ extra.empty?
38
+
39
+ raise ArgumentError, "unsupported type #{type.inspect}" unless
40
+ ATTRIBUTE_TYPES.values.include?(type.to_sym)
41
+
42
+ new(:name => name.to_s, :type => type)
43
+ end
44
+
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,28 @@
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
+ # @private
18
+ class Request < Core::Http::Request
19
+
20
+ include Core::Signature::Version3
21
+
22
+ # @return [String,nil]
23
+ attr_accessor :body
24
+
25
+ end
26
+
27
+ end
28
+ end
@@ -0,0 +1,33 @@
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 Resource < Core::Resource
17
+
18
+ # @private
19
+ def self.attribute name, options = {}
20
+
21
+ # DynamoDB attributes are all returned in UpperCamelCase, this
22
+ # converts the :snake_case name into the correct format.
23
+ unless options[:as]
24
+ options[:as] = name.to_s.split(/_/).map(&:capitalize).join
25
+ end
26
+
27
+ super(name, options)
28
+
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,489 @@
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
+ # Represents a DynamoDB table.
18
+ #
19
+ # == Working with Tables
20
+ #
21
+ # Dynamo DB allows you to organize data into tables. Tables have a
22
+ # unique name and a key schema. A key schema is comprised of a
23
+ # hash key and an optional range key.
24
+ #
25
+ # Dynamo DB automatically partitions the data contained in a table
26
+ # across multiple nodes so that the data throughput is not constrained
27
+ # by the scale of a single box. You can reserve the required throughput
28
+ # by specifying a number of reads and writes per second to support.
29
+ #
30
+ # == Creating a Table
31
+ #
32
+ # To get started you can create a table by supplying a name
33
+ # and the read/write capacity. A default schema with a hash_key
34
+ # of :id => :string will be provided.
35
+ #
36
+ # dynamo_db = AWS::DynamoDB.new
37
+ # dynamo_db.tables.create('mytable', 10, 5)
38
+ #
39
+ # You can provide your own hash key and optional range key.
40
+ #
41
+ # dynamo_db.tables.create('comments', 10, 5,
42
+ # :hash_key => { :blog_post_id => :number },
43
+ # :range_key => { :comment_id => :number }
44
+ # )
45
+ #
46
+ # == Provisioning Throughput
47
+ #
48
+ # You must specify the desired read and write capacity when
49
+ # creating a table. After a table is created you can see what has
50
+ # been provisioned.
51
+ #
52
+ # table.read_capacity_units #=> 10
53
+ # table.write_capacity_units #=> 5
54
+ #
55
+ # To change these values, call {#provision_throughput}:
56
+ #
57
+ # table.provision_throughput :read_capacity_units => 100, :write_capacity_units => 100
58
+ #
59
+ # Please note that provisioned throughput can be decreased only once
60
+ # within a 24 hour period.
61
+ #
62
+ # == Table Status
63
+ #
64
+ # When you create or update a table the changes can take some time to
65
+ # apply. You can query the status of your table at any time:
66
+ #
67
+ # # creating a table can be a *very* slow operation
68
+ # table = dynamo_db.tables.create('mytable')
69
+ # sleep 1 while table.status == :creating
70
+ # table.status #=> :active
71
+ #
72
+ # @attr_reader [Time] created_at When the table was first creatd.
73
+ #
74
+ # @attr_reader [Symbol] status
75
+ #
76
+ # @attr [Integer] read_capacity_units
77
+ #
78
+ # @attr [Integer] write_capacity_units
79
+ #
80
+ # @attr [Time] throughput_last_increased_at
81
+ #
82
+ # @attr [Time] throughput_last_decreased_at
83
+ #
84
+ # @attr [PrimaryKeyElement] hash_key Returns the hash key element
85
+ # for this table.
86
+ #
87
+ # @attr [PrimaryKeyElement,nil] range_key Returns the range key
88
+ # element for this table, or nil if the table does not have a range
89
+ # key.
90
+ #
91
+ class Table < Resource
92
+
93
+ # @private
94
+ def initialize name, options = {}
95
+ @name = name
96
+ super
97
+ end
98
+
99
+ # @return [String] The name of this table.
100
+ attr_reader :name
101
+
102
+ attribute :creation_date_time, :timestamp => true, :static => true
103
+
104
+ alias_method :created_at, :creation_date_time
105
+
106
+ attribute :status, :as => 'TableStatus', :to_sym => true
107
+
108
+ attribute :throughput_last_increased_at,
109
+ :as => 'LastIncreaseDateTime',
110
+ :timestamp => true
111
+
112
+ attribute :throughput_last_decreased_at,
113
+ :as => 'LastDecreaseDateTime',
114
+ :timestamp => true
115
+
116
+ attribute :read_capacity_units
117
+
118
+ attribute :write_capacity_units
119
+
120
+ attribute :hash_key, :as => "HashKeyElement", :static => true do
121
+ translates_output {|v| PrimaryKeyElement.new(v) }
122
+ end
123
+
124
+ attribute :range_key, :as => "RangeKeyElement", :static => true do
125
+ translates_output {|v| PrimaryKeyElement.new(v) }
126
+ end
127
+ alias_method :range_key_without_schema_override, :range_key
128
+
129
+ populates_from :describe_table do |resp|
130
+ desc = resp.data['Table']
131
+ if desc['TableName'] == name
132
+ desc.
133
+ merge(desc['ProvisionedThroughput']).
134
+ merge(desc['KeySchema'] || {})
135
+ end
136
+ end
137
+
138
+ populates_from :create_table, :delete_table do |resp|
139
+ desc = resp.data['TableDescription']
140
+ if desc['TableName'] == name
141
+ desc.
142
+ merge(desc['ProvisionedThroughput']).
143
+ merge(desc['KeySchema'] || {})
144
+ end
145
+ end
146
+
147
+ # @return [PrimaryKeyElement]
148
+ def range_key
149
+ if schema_loaded?
150
+ static_attributes[:range_key]
151
+ else
152
+ range_key_without_schema_override
153
+ end
154
+ end
155
+
156
+ # @param [Hash] options
157
+ #
158
+ # @option options [Integer] :read_capacity_units
159
+ #
160
+ # @option options [Integer] :write_capacity_units
161
+ #
162
+ # @return [Hash] Returns a hash with the current throughput
163
+ # provisioning (+:read_capacity_units+ and +:write_capacity_units+).
164
+ #
165
+ def provision_throughput options = {}
166
+
167
+ options[:read_capacity_units] ||= read_capacity_units
168
+ options[:write_capacity_units] ||= write_capacity_units
169
+
170
+ client_opts = {}
171
+ client_opts[:table_name] = name
172
+ client_opts[:provisioned_throughput] = options
173
+ client.update_table(client_opts)
174
+
175
+ options
176
+
177
+ end
178
+
179
+ # @param [Integer] read_capacity_units
180
+ def read_capacity_units= read_capacity_units
181
+ provision_throughput(:read_capacity_units => read_capacity_units)
182
+ end
183
+
184
+ # @param [Integer] write_capacity_units
185
+ def write_capacity_units= write_capacity_units
186
+ provision_throughput(:write_capacity_units => write_capacity_units)
187
+ end
188
+
189
+ # @return [Boolean] Returns true if the table has a hash key and no
190
+ # range key.
191
+ def simple_key?
192
+ range_key.nil?
193
+ end
194
+
195
+ # @return [Boolean] Returns true if the table has both a hash key and
196
+ # a range key.
197
+ def composite_key?
198
+ !simple_key?
199
+ end
200
+ alias_method :has_range_key?, :composite_key?
201
+
202
+ # @return [Boolean] True if the table's schema information is
203
+ # loaded into memory.
204
+ #
205
+ # @note You must load the the table schema using {#load_schema},
206
+ # {#hash_key} or {#range_key} or configure it using
207
+ # {#hash_key=} and optionally {#range_key=} in order to work
208
+ # with DynamoDB items.
209
+ #
210
+ def schema_loaded?
211
+ static_attributes.include?(:hash_key)
212
+ end
213
+
214
+ # Raises an exception unless the table schema is loaded.
215
+ #
216
+ # @return [nil]
217
+ #
218
+ def assert_schema!
219
+ raise "table schema not loaded" unless schema_loaded?
220
+ end
221
+
222
+ # Loads the table's schema information into memory. This method
223
+ # should not be used in a high-volume code path, and is intended
224
+ # only as a convenience for exploring the API. In general you
225
+ # should configure a schema with {#hash_key=} and {#range_key=}
226
+ # before using the table.
227
+ #
228
+ # @note You must load the the table schema using {#load_schema},
229
+ # {#hash_key} or {#range_key} or configure it using
230
+ # {#hash_key=} and optionally {#range_key=} in order to work
231
+ # with DynamoDB items.
232
+ #
233
+ # @return self
234
+ def load_schema
235
+ hash_key
236
+ self
237
+ end
238
+
239
+ # Configures the hash key element of the table's key schema.
240
+ # This is the preferred way to load the table schema so that it
241
+ # can be used to work with DynamoDB items.
242
+ #
243
+ # # these are equivalent:
244
+ # table.hash_key = [:id, :string]
245
+ # table.hash_key = { :id => :string }
246
+ #
247
+ # @note For tables with composite primary keys, you must call
248
+ # this method first followed by {#range_key=} to configure the
249
+ # table schema.
250
+ #
251
+ # @param description A description of the hash key element. If
252
+ # this is a hash, it may contain a single mapping; the key is
253
+ # the name of the hash key attribute and the value is the type
254
+ # (+:string+ or +:number+). If it is an array, the first
255
+ # element is the name and the second element is the type.
256
+ #
257
+ def hash_key= description
258
+ static_attributes[:hash_key] =
259
+ PrimaryKeyElement.from_description(description)
260
+ end
261
+
262
+ # Configures the range key element of the table's key schema.
263
+ # This is the preferred way to load the table schema so that it
264
+ # can be used to work with DynamoDB items. This method is only
265
+ # valid if the table has a composite key schema, and it may only
266
+ # be called after {#hash_key=} has been used to configure the
267
+ # hash key element.
268
+ #
269
+ # # these are equivalent:
270
+ # table.range_key = [:id, :string]
271
+ # table.range_key = { :id => :string }
272
+ #
273
+ # @param description A description of the range key element. If
274
+ # this is a hash, it may contain a single mapping; the key is
275
+ # the name of the hash key attribute and the value is the type
276
+ # (+:string+ or +:number+). If it is an array, the first
277
+ # element is the name and the second element is the type.
278
+ #
279
+ def range_key= description
280
+ raise "attempted to set a range key without configuring a hash key first" unless
281
+ schema_loaded?
282
+
283
+ static_attributes[:range_key] =
284
+ PrimaryKeyElement.from_description(description)
285
+
286
+ end
287
+
288
+ # Deletes a table and all of its items. The table must be in an
289
+ # +:active+ state (see {#status}).
290
+ #
291
+ # @return [nil]
292
+ #
293
+ def delete
294
+ client.delete_table(:table_name => name)
295
+ nil
296
+ end
297
+
298
+ # @return [ItemCollection] Returns an object representing all the
299
+ # items in the table.
300
+ def items
301
+ ItemCollection.new(self)
302
+ end
303
+
304
+ # @return [Boolean] Returns true if the table exists. Note that a table
305
+ # exists even when it is in a +:deleting+ state; this method
306
+ # only returns false when DynamoDB no longer returns any
307
+ # information about the table.
308
+ def exists?
309
+ get_resource
310
+ true
311
+ rescue Errors::ResourceNotFoundException
312
+ false
313
+ end
314
+
315
+ # Requets a list of attributes for a list of items in the same table.
316
+ #
317
+ # If you want to request a list of attributes for items that span
318
+ # multiple tables, see {DynamoDB#batch_get}.
319
+ #
320
+ # You can call this method in two forms:
321
+ #
322
+ # # block form
323
+ # table.batch_get(:all, items) do |attributes|
324
+ # # yeilds one hash of attribute names/values for each item
325
+ # puts attributes.to_yaml
326
+ # end
327
+ #
328
+ # # enumerable return value
329
+ # attribute_hashes = table.batch_get(:all, items)
330
+ # attribute_hashes.each do |attributes|
331
+ # # ...
332
+ # end
333
+ #
334
+ # @note This method does not require the table schema to be loaded.
335
+ #
336
+ # == Attributes
337
+ #
338
+ # You can specify the list of attributes to request in 3 ways:
339
+ #
340
+ # * The symbol +:all+ (to recieve all attributes)
341
+ # * A single attribute name (e.g. 'size')
342
+ # * An array of attribute names (e.g. ['size', 'color'])
343
+ #
344
+ # A few exmaples:
345
+ #
346
+ # # get all attributes
347
+ # table.batch_get(:all, items)
348
+ #
349
+ # # only get the 'color' attribute
350
+ # table.batch_get('color', items)
351
+ #
352
+ # # get 'color' and 'size' attributes
353
+ # table.batch_get(['color', size'], items)
354
+ #
355
+ # == Items
356
+ #
357
+ # You must specify an array of items to fetch attributes for.
358
+ # The +items+ param should always be an array with:
359
+ #
360
+ # * String hash key values
361
+ # * Arrays of string hash key and range key values
362
+ # * Item objects
363
+ #
364
+ # Here are a few examples:
365
+ #
366
+ # # items as a list of hash key values
367
+ # items = %w(hashkey1 hashkey2 hashkey3)
368
+ # table.batch_get(:all, items)
369
+ #
370
+ # # items as a list of hash and range key values
371
+ # items = [['hashkey1', 'rangekey2'], ['hashkey1', 'rangekey2']]
372
+ # table.batch_get(:all, items)
373
+ #
374
+ # # items as a list of Item objects
375
+ # items = []
376
+ # items << Item.new(table, 'hashkey1')
377
+ # items << Item.new(table, 'hashkey2')
378
+ # table.batch_get(:all, items)
379
+ #
380
+ # Please note that you must provide both hash and range keys for tables
381
+ # that include a range key in the schema.
382
+ #
383
+ # @param [:all, String, Array<String>] attributes The list of
384
+ # attributes you want to fetch for each item. +attributes+ may be:
385
+ #
386
+ # * the symbol +:all+
387
+ # * a single attribute name string
388
+ # * an array of attribute name strings
389
+ #
390
+ # @param [Mixed] items A list of 2 or more items to fetch attributes
391
+ # for. You may provide +items+ as:
392
+ #
393
+ # * an array of hash key value strings
394
+ # * an array of hash and range key value pairs (nested arrays)
395
+ # * an array of {Item} objects
396
+ #
397
+ # @yield [Hash] Yields a hash of attributes for each item.
398
+ #
399
+ # @return [Enumerable] Returns an enumerable object that yields
400
+ # hashes of attributes.
401
+ #
402
+ def batch_get attributes, items, &block
403
+ batch = BatchGet.new(:config => config)
404
+ batch.table(name, attributes, items)
405
+ enum = batch.to_enum(:each_attributes)
406
+ block_given? ? enum.each(&block) : enum
407
+ end
408
+
409
+ # Batch puts up to 25 items to this table.
410
+ #
411
+ # table.batch_put([
412
+ # { :id => 'id1', :color => 'red' },
413
+ # { :id => 'id2', :color => 'blue' },
414
+ # { :id => 'id3', :color => 'green' },
415
+ # ])
416
+ #
417
+ # @param [Array<Hash>] items A list of item attributes to put.
418
+ # The hash must contain the table hash key element and range key
419
+ # element (if one is defined).
420
+ #
421
+ # @return (see BatchWrite#process!)
422
+ #
423
+ def batch_put items
424
+ batch = BatchWrite.new(:config => config)
425
+ batch.put(self, items)
426
+ batch.process!
427
+ end
428
+
429
+ # Batch writes up to 25 items to this table. A batch may contain
430
+ # a mix of items to put and items to delete.
431
+ #
432
+ # table.batch_write(
433
+ # :put => [
434
+ # { :id => 'id1', :color => 'red' },
435
+ # { :id => 'id2', :color => 'blue' },
436
+ # { :id => 'id3', :color => 'green' },
437
+ # ],
438
+ # :delete => ['id4', 'id5']
439
+ # )
440
+ #
441
+ # @param [Hash] options
442
+ #
443
+ # @option options (BatchWrite#write)
444
+ #
445
+ # @return (see BatchWrite#process!)
446
+ #
447
+ def batch_write options = {}
448
+ batch = BatchWrite.new(:config => config)
449
+ batch.write(self, options)
450
+ batch.process!
451
+ end
452
+
453
+ # Delete up to 25 items in a single batch.
454
+ #
455
+ # table.batch_delete(%w(id1 id2 id3 id4 id5))
456
+ #
457
+ # @param [Array<String>,Array<Array>] items A list of item keys to
458
+ # delete. For tables without a range key, items should be an array
459
+ # of hash key strings.
460
+ #
461
+ # batch.delete('table-name', ['hk1', 'hk2', 'hk3'])
462
+ #
463
+ # For tables with a range key, items should be an array of
464
+ # hash key and range key pairs.
465
+ #
466
+ # batch.delete('table-name', [['hk1', 'rk1'], ['hk1', 'rk2']])
467
+ #
468
+ # @return (see BatchWrite#process!)
469
+ #
470
+ def batch_delete items
471
+ batch = BatchWrite.new(:config => config)
472
+ batch.delete(self, items)
473
+ batch.process!
474
+ end
475
+
476
+ protected
477
+ def get_resource attribute_name = nil
478
+ client.describe_table(resource_options)
479
+ end
480
+
481
+ protected
482
+ def resource_identifiers
483
+ [[:table_name, name]]
484
+ end
485
+
486
+ end
487
+
488
+ end
489
+ end