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,888 @@
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
+ # Client class for Amazon DynamoDB.
18
+ class Client < Core::Client
19
+
20
+ API_VERSION = '2011-12-05'
21
+
22
+ extend Core::Client::QueryJSON
23
+
24
+ # @private
25
+ REGION_US_E1 = 'dynamodb.us-east-1.amazonaws.com'
26
+
27
+ # @private
28
+ TARGET_PREFIX = "DynamoDB_20111205."
29
+
30
+ # @private
31
+ CACHEABLE_REQUESTS = Set[:list_tables, :describe_table]
32
+
33
+ # @private
34
+ def initialize *args
35
+
36
+ super
37
+
38
+ # If the signer does not provide a session token, then we will
39
+ # replace it with another signer that manages an AWS STS session.
40
+ # This session will auto renew whenever it has expired and will
41
+ # be shared across threads.
42
+ if config.signer.session_token.nil?
43
+ @signer = Core::SessionSigner.for(config)
44
+ end
45
+
46
+ end
47
+
48
+ ## client methods ##
49
+
50
+ # Calls the BatchGetItem API operation.
51
+ # @method batch_get_item(options = {})
52
+ #
53
+ # === Options:
54
+ #
55
+ # * +:request_items+ - *required* - (Hash<String,Hash>)
56
+ # * +:keys+ - *required* - (Array<Hash>)
57
+ # * +:hash_key_element+ - *required* - (Hash) A hash key element is
58
+ # treated as the primary key, and can be a string or a number.
59
+ # Single attribute primary keys have one index value. The value can
60
+ # be String, Number, StringSet, NumberSet.
61
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
62
+ # The maximum size is limited by the size of the primary key
63
+ # (1024 bytes as a range part of a key or 2048 bytes as a single
64
+ # part hash key) or the item size (64k).
65
+ # * +:n+ - (String) Numbers are positive or negative exact-value
66
+ # decimals and integers. A number can have up to 38 digits
67
+ # precision and can be between 10^-128 to 10^+126.
68
+ # * +:ss+ - (Array<String>) A set of strings.
69
+ # * +:ns+ - (Array<String>) A set of numbers.
70
+ # * +:range_key_element+ - (Hash) A range key element is treated as a
71
+ # secondary key (used in conjunction with the primary key), and can
72
+ # be a string or a number, and is only used for hash-and-range
73
+ # primary keys. The value can be String, Number, StringSet,
74
+ # NumberSet.
75
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
76
+ # The maximum size is limited by the size of the primary key
77
+ # (1024 bytes as a range part of a key or 2048 bytes as a single
78
+ # part hash key) or the item size (64k).
79
+ # * +:n+ - (String) Numbers are positive or negative exact-value
80
+ # decimals and integers. A number can have up to 38 digits
81
+ # precision and can be between 10^-128 to 10^+126.
82
+ # * +:ss+ - (Array<String>) A set of strings.
83
+ # * +:ns+ - (Array<String>) A set of numbers.
84
+ # * +:attributes_to_get+ - (Array<String>)
85
+ #
86
+ # === Response Structure:
87
+ #
88
+ # * +Responses+ - (Hash<String,Hash>)
89
+ # * +member+ - (Hash<String,Hash>)
90
+ # * +S+ - (String)
91
+ # * +N+ - (String)
92
+ # * +SS+ - (Array<String>)
93
+ # * +NS+ - (Array<String>)
94
+ # * +ConsumedCapacityUnits+ - (Numeric)
95
+ # * +UnprocessedKeys+ - (Hash<String,Hash>)
96
+ # * +Keys+ - (Array<Hash>)
97
+ # * +HashKeyElement+ - (Hash)
98
+ # * +S+ - (String)
99
+ # * +N+ - (String)
100
+ # * +SS+ - (Array<String>)
101
+ # * +NS+ - (Array<String>)
102
+ # * +RangeKeyElement+ - (Hash)
103
+ # * +S+ - (String)
104
+ # * +N+ - (String)
105
+ # * +SS+ - (Array<String>)
106
+ # * +NS+ - (Array<String>)
107
+ # * +AttributesToGet+ - (Array<String>)
108
+ #
109
+ # @return [Core::Response]
110
+ #
111
+ define_client_method :batch_get_item, 'BatchGetItem'
112
+
113
+ # Calls the BatchWriteItem API operation.
114
+ # @method batch_write_item(options = {})
115
+ #
116
+ # === Options:
117
+ #
118
+ # * +:request_items+ - *required* - (Hash<String,Array<Hash>>) A map of
119
+ # table name to list-of-write-requests. Used as input to the
120
+ # BatchWriteItem API call
121
+ # * +:put_request+ - (Hash)
122
+ # * +:item+ - *required* - (Hash<String,Hash>) The item to put
123
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
124
+ # The maximum size is limited by the size of the primary key
125
+ # (1024 bytes as a range part of a key or 2048 bytes as a single
126
+ # part hash key) or the item size (64k).
127
+ # * +:n+ - (String) Numbers are positive or negative exact-value
128
+ # decimals and integers. A number can have up to 38 digits
129
+ # precision and can be between 10^-128 to 10^+126.
130
+ # * +:ss+ - (Array<String>) A set of strings.
131
+ # * +:ns+ - (Array<String>) A set of numbers.
132
+ # * +:delete_request+ - (Hash)
133
+ # * +:key+ - *required* - (Hash) The item's key to be delete
134
+ # * +:hash_key_element+ - *required* - (Hash) A hash key element is
135
+ # treated as the primary key, and can be a string or a number.
136
+ # Single attribute primary keys have one index value. The value
137
+ # can be String, Number, StringSet, NumberSet.
138
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary
139
+ # encoding. The maximum size is limited by the size of the
140
+ # primary key (1024 bytes as a range part of a key or 2048
141
+ # bytes as a single part hash key) or the item size (64k).
142
+ # * +:n+ - (String) Numbers are positive or negative exact-value
143
+ # decimals and integers. A number can have up to 38 digits
144
+ # precision and can be between 10^-128 to 10^+126.
145
+ # * +:ss+ - (Array<String>) A set of strings.
146
+ # * +:ns+ - (Array<String>) A set of numbers.
147
+ # * +:range_key_element+ - (Hash) A range key element is treated as
148
+ # a secondary key (used in conjunction with the primary key), and
149
+ # can be a string or a number, and is only used for
150
+ # hash-and-range primary keys. The value can be String, Number,
151
+ # StringSet, NumberSet.
152
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary
153
+ # encoding. The maximum size is limited by the size of the
154
+ # primary key (1024 bytes as a range part of a key or 2048
155
+ # bytes as a single part hash key) or the item size (64k).
156
+ # * +:n+ - (String) Numbers are positive or negative exact-value
157
+ # decimals and integers. A number can have up to 38 digits
158
+ # precision and can be between 10^-128 to 10^+126.
159
+ # * +:ss+ - (Array<String>) A set of strings.
160
+ # * +:ns+ - (Array<String>) A set of numbers.
161
+ #
162
+ # === Response Structure:
163
+ #
164
+ # * +Responses+ - (Hash<String,Hash>)
165
+ # * +ConsumedCapacityUnits+ - (Numeric)
166
+ # * +UnprocessedItems+ - (Hash<String,Hash>)
167
+ # * +value+ - (Array<Hash>)
168
+ # * +PutRequest+ - (Hash)
169
+ # * +Item+ - (Hash<String,Hash>)
170
+ # * +S+ - (String)
171
+ # * +N+ - (String)
172
+ # * +SS+ - (Array<String>)
173
+ # * +NS+ - (Array<String>)
174
+ # * +DeleteRequest+ - (Hash)
175
+ # * +Key+ - (Hash)
176
+ # * +HashKeyElement+ - (Hash)
177
+ # * +S+ - (String)
178
+ # * +N+ - (String)
179
+ # * +SS+ - (Array<String>)
180
+ # * +NS+ - (Array<String>)
181
+ # * +RangeKeyElement+ - (Hash)
182
+ # * +S+ - (String)
183
+ # * +N+ - (String)
184
+ # * +SS+ - (Array<String>)
185
+ # * +NS+ - (Array<String>)
186
+ #
187
+ # @return [Core::Response]
188
+ #
189
+ define_client_method :batch_write_item, 'BatchWriteItem'
190
+
191
+ # Calls the CreateTable API operation.
192
+ # @method create_table(options = {})
193
+ #
194
+ # === Options:
195
+ #
196
+ # * +:table_name+ - *required* - (String) The name of the table you want
197
+ # to create. Allowed characters are a-z, A-Z, 0-9, _ (underscore), -
198
+ # (hyphen) and . (period).
199
+ # * +:key_schema+ - *required* - (Hash)
200
+ # * +:hash_key_element+ - *required* - (Hash) A hash key element is
201
+ # treated as the primary key, and can be a string or a number. Single
202
+ # attribute primary keys have one index value. The value can be
203
+ # String, Number, StringSet, NumberSet.
204
+ # * +:attribute_name+ - *required* - (String) The AttributeName of
205
+ # the KeySchemaElement.
206
+ # * +:attribute_type+ - *required* - (String) The AttributeType of
207
+ # the KeySchemaElement which can be a String or a Number.
208
+ # * +:range_key_element+ - (Hash) A range key element is treated as a
209
+ # secondary key (used in conjunction with the primary key), and can
210
+ # be a string or a number, and is only used for hash-and-range
211
+ # primary keys. The value can be String, Number, StringSet,
212
+ # NumberSet.
213
+ # * +:attribute_name+ - *required* - (String) The AttributeName of
214
+ # the KeySchemaElement.
215
+ # * +:attribute_type+ - *required* - (String) The AttributeType of
216
+ # the KeySchemaElement which can be a String or a Number.
217
+ # * +:provisioned_throughput+ - *required* - (Hash)
218
+ # * +:read_capacity_units+ - *required* - (Integer) ReadCapacityUnits
219
+ # are in terms of strictly consistent reads, assuming items of 1k. 2k
220
+ # items require twice the ReadCapacityUnits. Eventually-consistent
221
+ # reads only require half the ReadCapacityUnits of stirctly
222
+ # consistent reads.
223
+ # * +:write_capacity_units+ - *required* - (Integer) WriteCapacityUnits
224
+ # are in terms of strictly consistent reads, assuming items of 1k. 2k
225
+ # items require twice the WriteCapacityUnits.
226
+ #
227
+ # === Response Structure:
228
+ #
229
+ # * +TableDescription+ - (Hash)
230
+ # * +TableName+ - (String)
231
+ # * +KeySchema+ - (Hash)
232
+ # * +HashKeyElement+ - (Hash)
233
+ # * +AttributeName+ - (String)
234
+ # * +AttributeType+ - (String)
235
+ # * +RangeKeyElement+ - (Hash)
236
+ # * +AttributeName+ - (String)
237
+ # * +AttributeType+ - (String)
238
+ # * +TableStatus+ - (String)
239
+ # * +CreationDateTime+ - (Time)
240
+ # * +ProvisionedThroughput+ - (Hash)
241
+ # * +LastIncreaseDateTime+ - (Time)
242
+ # * +LastDecreaseDateTime+ - (Time)
243
+ # * +ReadCapacityUnits+ - (Integer)
244
+ # * +WriteCapacityUnits+ - (Integer)
245
+ # * +TableSizeBytes+ - (Integer)
246
+ # * +ItemCount+ - (Integer)
247
+ #
248
+ # @return [Core::Response]
249
+ #
250
+ define_client_method :create_table, 'CreateTable'
251
+
252
+ # Calls the DeleteItem API operation.
253
+ # @method delete_item(options = {})
254
+ #
255
+ # === Options:
256
+ #
257
+ # * +:table_name+ - *required* - (String) The name of the table in which
258
+ # you want to delete an item. Allowed characters are a-z, A-Z, 0-9, _
259
+ # (underscore), - (hyphen) and . (period).
260
+ # * +:key+ - *required* - (Hash)
261
+ # * +:hash_key_element+ - *required* - (Hash) A hash key element is
262
+ # treated as the primary key, and can be a string or a number. Single
263
+ # attribute primary keys have one index value. The value can be
264
+ # String, Number, StringSet, NumberSet.
265
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
266
+ # The maximum size is limited by the size of the primary key (1024
267
+ # bytes as a range part of a key or 2048 bytes as a single part
268
+ # hash key) or the item size (64k).
269
+ # * +:n+ - (String) Numbers are positive or negative exact-value
270
+ # decimals and integers. A number can have up to 38 digits
271
+ # precision and can be between 10^-128 to 10^+126.
272
+ # * +:ss+ - (Array<String>) A set of strings.
273
+ # * +:ns+ - (Array<String>) A set of numbers.
274
+ # * +:range_key_element+ - (Hash) A range key element is treated as a
275
+ # secondary key (used in conjunction with the primary key), and can
276
+ # be a string or a number, and is only used for hash-and-range
277
+ # primary keys. The value can be String, Number, StringSet,
278
+ # NumberSet.
279
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
280
+ # The maximum size is limited by the size of the primary key (1024
281
+ # bytes as a range part of a key or 2048 bytes as a single part
282
+ # hash key) or the item size (64k).
283
+ # * +:n+ - (String) Numbers are positive or negative exact-value
284
+ # decimals and integers. A number can have up to 38 digits
285
+ # precision and can be between 10^-128 to 10^+126.
286
+ # * +:ss+ - (Array<String>) A set of strings.
287
+ # * +:ns+ - (Array<String>) A set of numbers.
288
+ # * +:expected+ - (Hash<String,Hash>)
289
+ # * +:value+ - (Hash) Specify whether or not a value already exists and
290
+ # has a specific content for the attribute name-value pair.
291
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
292
+ # The maximum size is limited by the size of the primary key (1024
293
+ # bytes as a range part of a key or 2048 bytes as a single part
294
+ # hash key) or the item size (64k).
295
+ # * +:n+ - (String) Numbers are positive or negative exact-value
296
+ # decimals and integers. A number can have up to 38 digits
297
+ # precision and can be between 10^-128 to 10^+126.
298
+ # * +:ss+ - (Array<String>) A set of strings.
299
+ # * +:ns+ - (Array<String>) A set of numbers.
300
+ # * +:exists+ - (Boolean) Specify whether or not a value already exists
301
+ # for the attribute name-value pair.
302
+ # * +:return_values+ - (String)
303
+ #
304
+ # === Response Structure:
305
+ #
306
+ # * +Attributes+ - (Hash<String,Hash>)
307
+ # * +S+ - (String)
308
+ # * +N+ - (String)
309
+ # * +SS+ - (Array<String>)
310
+ # * +NS+ - (Array<String>)
311
+ # * +ConsumedCapacityUnits+ - (Numeric)
312
+ #
313
+ # @return [Core::Response]
314
+ #
315
+ define_client_method :delete_item, 'DeleteItem'
316
+
317
+ # Calls the DeleteTable API operation.
318
+ # @method delete_table(options = {})
319
+ #
320
+ # === Options:
321
+ #
322
+ # * +:table_name+ - *required* - (String) The name of the table you want
323
+ # to delete. Allowed characters are a-z, A-Z, 0-9, _ (underscore), -
324
+ # (hyphen) and . (period).
325
+ #
326
+ # === Response Structure:
327
+ #
328
+ # * +TableDescription+ - (Hash)
329
+ # * +TableName+ - (String)
330
+ # * +KeySchema+ - (Hash)
331
+ # * +HashKeyElement+ - (Hash)
332
+ # * +AttributeName+ - (String)
333
+ # * +AttributeType+ - (String)
334
+ # * +RangeKeyElement+ - (Hash)
335
+ # * +AttributeName+ - (String)
336
+ # * +AttributeType+ - (String)
337
+ # * +TableStatus+ - (String)
338
+ # * +CreationDateTime+ - (Time)
339
+ # * +ProvisionedThroughput+ - (Hash)
340
+ # * +LastIncreaseDateTime+ - (Time)
341
+ # * +LastDecreaseDateTime+ - (Time)
342
+ # * +ReadCapacityUnits+ - (Integer)
343
+ # * +WriteCapacityUnits+ - (Integer)
344
+ # * +TableSizeBytes+ - (Integer)
345
+ # * +ItemCount+ - (Integer)
346
+ #
347
+ # @return [Core::Response]
348
+ #
349
+ define_client_method :delete_table, 'DeleteTable'
350
+
351
+ # Calls the DescribeTable API operation.
352
+ # @method describe_table(options = {})
353
+ #
354
+ # === Options:
355
+ #
356
+ # * +:table_name+ - *required* - (String) The name of the table you want
357
+ # to describe. Allowed characters are a-z, A-Z, 0-9, _ (underscore), -
358
+ # (hyphen) and . (period).
359
+ #
360
+ # === Response Structure:
361
+ #
362
+ # * +Table+ - (Hash)
363
+ # * +TableName+ - (String)
364
+ # * +KeySchema+ - (Hash)
365
+ # * +HashKeyElement+ - (Hash)
366
+ # * +AttributeName+ - (String)
367
+ # * +AttributeType+ - (String)
368
+ # * +RangeKeyElement+ - (Hash)
369
+ # * +AttributeName+ - (String)
370
+ # * +AttributeType+ - (String)
371
+ # * +TableStatus+ - (String)
372
+ # * +CreationDateTime+ - (Time)
373
+ # * +ProvisionedThroughput+ - (Hash)
374
+ # * +LastIncreaseDateTime+ - (Time)
375
+ # * +LastDecreaseDateTime+ - (Time)
376
+ # * +ReadCapacityUnits+ - (Integer)
377
+ # * +WriteCapacityUnits+ - (Integer)
378
+ # * +TableSizeBytes+ - (Integer)
379
+ # * +ItemCount+ - (Integer)
380
+ #
381
+ # @return [Core::Response]
382
+ #
383
+ define_client_method :describe_table, 'DescribeTable'
384
+
385
+ # Calls the GetItem API operation.
386
+ # @method get_item(options = {})
387
+ #
388
+ # === Options:
389
+ #
390
+ # * +:table_name+ - *required* - (String) The name of the table in which
391
+ # you want to get an item. Allowed characters are a-z, A-Z, 0-9, _
392
+ # (underscore), - (hyphen) and . (period).
393
+ # * +:key+ - *required* - (Hash)
394
+ # * +:hash_key_element+ - *required* - (Hash) A hash key element is
395
+ # treated as the primary key, and can be a string or a number. Single
396
+ # attribute primary keys have one index value. The value can be
397
+ # String, Number, StringSet, NumberSet.
398
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
399
+ # The maximum size is limited by the size of the primary key (1024
400
+ # bytes as a range part of a key or 2048 bytes as a single part
401
+ # hash key) or the item size (64k).
402
+ # * +:n+ - (String) Numbers are positive or negative exact-value
403
+ # decimals and integers. A number can have up to 38 digits
404
+ # precision and can be between 10^-128 to 10^+126.
405
+ # * +:ss+ - (Array<String>) A set of strings.
406
+ # * +:ns+ - (Array<String>) A set of numbers.
407
+ # * +:range_key_element+ - (Hash) A range key element is treated as a
408
+ # secondary key (used in conjunction with the primary key), and can
409
+ # be a string or a number, and is only used for hash-and-range
410
+ # primary keys. The value can be String, Number, StringSet,
411
+ # NumberSet.
412
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
413
+ # The maximum size is limited by the size of the primary key (1024
414
+ # bytes as a range part of a key or 2048 bytes as a single part
415
+ # hash key) or the item size (64k).
416
+ # * +:n+ - (String) Numbers are positive or negative exact-value
417
+ # decimals and integers. A number can have up to 38 digits
418
+ # precision and can be between 10^-128 to 10^+126.
419
+ # * +:ss+ - (Array<String>) A set of strings.
420
+ # * +:ns+ - (Array<String>) A set of numbers.
421
+ # * +:attributes_to_get+ - (Array<String>)
422
+ # * +:consistent_read+ - (Boolean)
423
+ #
424
+ # === Response Structure:
425
+ #
426
+ # * +Item+ - (Hash<String,Hash>)
427
+ # * +S+ - (String)
428
+ # * +N+ - (String)
429
+ # * +SS+ - (Array<String>)
430
+ # * +NS+ - (Array<String>)
431
+ # * +ConsumedCapacityUnits+ - (Numeric)
432
+ #
433
+ # @return [Core::Response]
434
+ #
435
+ define_client_method :get_item, 'GetItem'
436
+
437
+ # Calls the ListTables API operation.
438
+ # @method list_tables(options = {})
439
+ #
440
+ # === Options:
441
+ #
442
+ # * +:exclusive_start_table_name+ - (String) The name of the table that
443
+ # starts the list. If you already ran a ListTables operation and
444
+ # recieved a LastEvaluatedTableName value in the response, use that
445
+ # value here to continue the list.
446
+ # * +:limit+ - (Integer)
447
+ #
448
+ # === Response Structure:
449
+ #
450
+ # * +TableNames+ - (Array<String>)
451
+ # * +LastEvaluatedTableName+ - (String)
452
+ #
453
+ # @return [Core::Response]
454
+ #
455
+ define_client_method :list_tables, 'ListTables'
456
+
457
+ # Calls the PutItem API operation.
458
+ # @method put_item(options = {})
459
+ #
460
+ # === Options:
461
+ #
462
+ # * +:table_name+ - *required* - (String) The name of the table in which
463
+ # you want to put an item. Allowed characters are a-z, A-Z, 0-9, _
464
+ # (underscore), - (hyphen) and . (period).
465
+ # * +:item+ - *required* - (Hash<String,Hash>)
466
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding. The
467
+ # maximum size is limited by the size of the primary key (1024 bytes
468
+ # as a range part of a key or 2048 bytes as a single part hash key)
469
+ # or the item size (64k).
470
+ # * +:n+ - (String) Numbers are positive or negative exact-value
471
+ # decimals and integers. A number can have up to 38 digits precision
472
+ # and can be between 10^-128 to 10^+126.
473
+ # * +:ss+ - (Array<String>) A set of strings.
474
+ # * +:ns+ - (Array<String>) A set of numbers.
475
+ # * +:expected+ - (Hash<String,Hash>)
476
+ # * +:value+ - (Hash) Specify whether or not a value already exists and
477
+ # has a specific content for the attribute name-value pair.
478
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
479
+ # The maximum size is limited by the size of the primary key (1024
480
+ # bytes as a range part of a key or 2048 bytes as a single part
481
+ # hash key) or the item size (64k).
482
+ # * +:n+ - (String) Numbers are positive or negative exact-value
483
+ # decimals and integers. A number can have up to 38 digits
484
+ # precision and can be between 10^-128 to 10^+126.
485
+ # * +:ss+ - (Array<String>) A set of strings.
486
+ # * +:ns+ - (Array<String>) A set of numbers.
487
+ # * +:exists+ - (Boolean) Specify whether or not a value already exists
488
+ # for the attribute name-value pair.
489
+ # * +:return_values+ - (String)
490
+ #
491
+ # === Response Structure:
492
+ #
493
+ # * +Attributes+ - (Hash<String,Hash>)
494
+ # * +S+ - (String)
495
+ # * +N+ - (String)
496
+ # * +SS+ - (Array<String>)
497
+ # * +NS+ - (Array<String>)
498
+ # * +ConsumedCapacityUnits+ - (Numeric)
499
+ #
500
+ # @return [Core::Response]
501
+ #
502
+ define_client_method :put_item, 'PutItem'
503
+
504
+ # Calls the Query API operation.
505
+ # @method query(options = {})
506
+ #
507
+ # === Options:
508
+ #
509
+ # * +:table_name+ - *required* - (String) The name of the table in which
510
+ # you want to query. Allowed characters are a-z, A-Z, 0-9, _
511
+ # (underscore), - (hyphen) and . (period).
512
+ # * +:attributes_to_get+ - (Array<String>)
513
+ # * +:limit+ - (Integer) The maximum number of items to return. If Amazon
514
+ # DynamoDB hits this limit while querying the table, it stops the query
515
+ # and returns the matching values up to the limit, and a
516
+ # LastEvaluatedKey to apply in a subsequent operation to continue the
517
+ # query. Also, if the result set size exceeds 1MB before Amazon
518
+ # DynamoDB hits this limit, it stops the query and returns the matching
519
+ # values, and a LastEvaluatedKey to apply in a subsequent operation to
520
+ # continue the query.
521
+ # * +:consistent_read+ - (Boolean)
522
+ # * +:count+ - (Boolean) If set to +true+ , Amazon DynamoDB returns a
523
+ # total number of items that match the query parameters, instead of a
524
+ # list of the matching items and their attributes. Do not set Count to
525
+ # +true+ while providing a list of AttributesToGet, otherwise Amazon
526
+ # DynamoDB returns a validation error.
527
+ # * +:hash_key_value+ - *required* - (Hash) Attribute value of the hash
528
+ # component of the composite primary key.
529
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding. The
530
+ # maximum size is limited by the size of the primary key (1024 bytes
531
+ # as a range part of a key or 2048 bytes as a single part hash key)
532
+ # or the item size (64k).
533
+ # * +:n+ - (String) Numbers are positive or negative exact-value
534
+ # decimals and integers. A number can have up to 38 digits precision
535
+ # and can be between 10^-128 to 10^+126.
536
+ # * +:ss+ - (Array<String>) A set of strings.
537
+ # * +:ns+ - (Array<String>) A set of numbers.
538
+ # * +:range_key_condition+ - (Hash) A container for the attribute values
539
+ # and comparison operators to use for the query.
540
+ # * +:attribute_value_list+ - (Array<Hash>)
541
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
542
+ # The maximum size is limited by the size of the primary key (1024
543
+ # bytes as a range part of a key or 2048 bytes as a single part
544
+ # hash key) or the item size (64k).
545
+ # * +:n+ - (String) Numbers are positive or negative exact-value
546
+ # decimals and integers. A number can have up to 38 digits
547
+ # precision and can be between 10^-128 to 10^+126.
548
+ # * +:ss+ - (Array<String>) A set of strings.
549
+ # * +:ns+ - (Array<String>) A set of numbers.
550
+ # * +:comparison_operator+ - *required* - (String)
551
+ # * +:scan_index_forward+ - (Boolean) Specifies forward or backward
552
+ # traversal of the index. Amazon DynamoDB returns results reflecting
553
+ # the requested order, determined by the range key. Default is +true+
554
+ # (forward).
555
+ # * +:exclusive_start_key+ - (Hash) Primary key of the item from which to
556
+ # continue an earlier query. An earlier query might provide this value
557
+ # as the LastEvaluatedKey if that query operation was interrupted
558
+ # before completing the query; either because of the result set size or
559
+ # the Limit parameter. The LastEvaluatedKey can be passed back in a new
560
+ # query request to continue the operation from that point.
561
+ # * +:hash_key_element+ - *required* - (Hash) A hash key element is
562
+ # treated as the primary key, and can be a string or a number. Single
563
+ # attribute primary keys have one index value. The value can be
564
+ # String, Number, StringSet, NumberSet.
565
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
566
+ # The maximum size is limited by the size of the primary key (1024
567
+ # bytes as a range part of a key or 2048 bytes as a single part
568
+ # hash key) or the item size (64k).
569
+ # * +:n+ - (String) Numbers are positive or negative exact-value
570
+ # decimals and integers. A number can have up to 38 digits
571
+ # precision and can be between 10^-128 to 10^+126.
572
+ # * +:ss+ - (Array<String>) A set of strings.
573
+ # * +:ns+ - (Array<String>) A set of numbers.
574
+ # * +:range_key_element+ - (Hash) A range key element is treated as a
575
+ # secondary key (used in conjunction with the primary key), and can
576
+ # be a string or a number, and is only used for hash-and-range
577
+ # primary keys. The value can be String, Number, StringSet,
578
+ # NumberSet.
579
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
580
+ # The maximum size is limited by the size of the primary key (1024
581
+ # bytes as a range part of a key or 2048 bytes as a single part
582
+ # hash key) or the item size (64k).
583
+ # * +:n+ - (String) Numbers are positive or negative exact-value
584
+ # decimals and integers. A number can have up to 38 digits
585
+ # precision and can be between 10^-128 to 10^+126.
586
+ # * +:ss+ - (Array<String>) A set of strings.
587
+ # * +:ns+ - (Array<String>) A set of numbers.
588
+ #
589
+ # === Response Structure:
590
+ #
591
+ # * +member+ - (Hash<String,Hash>)
592
+ # * +S+ - (String)
593
+ # * +N+ - (String)
594
+ # * +SS+ - (Array<String>)
595
+ # * +NS+ - (Array<String>)
596
+ # * +Count+ - (Integer)
597
+ # * +LastEvaluatedKey+ - (Hash)
598
+ # * +HashKeyElement+ - (Hash)
599
+ # * +S+ - (String)
600
+ # * +N+ - (String)
601
+ # * +SS+ - (Array<String>)
602
+ # * +NS+ - (Array<String>)
603
+ # * +RangeKeyElement+ - (Hash)
604
+ # * +S+ - (String)
605
+ # * +N+ - (String)
606
+ # * +SS+ - (Array<String>)
607
+ # * +NS+ - (Array<String>)
608
+ # * +ConsumedCapacityUnits+ - (Numeric)
609
+ #
610
+ # @return [Core::Response]
611
+ #
612
+ define_client_method :query, 'Query'
613
+
614
+ # Calls the Scan API operation.
615
+ # @method scan(options = {})
616
+ #
617
+ # === Options:
618
+ #
619
+ # * +:table_name+ - *required* - (String) The name of the table in which
620
+ # you want to scan. Allowed characters are a-z, A-Z, 0-9, _
621
+ # (underscore), - (hyphen) and . (period).
622
+ # * +:attributes_to_get+ - (Array<String>)
623
+ # * +:limit+ - (Integer) The maximum number of items to return. If Amazon
624
+ # DynamoDB hits this limit while scanning the table, it stops the scan
625
+ # and returns the matching values up to the limit, and a
626
+ # LastEvaluatedKey to apply in a subsequent operation to continue the
627
+ # scan. Also, if the scanned data set size exceeds 1MB before Amazon
628
+ # DynamoDB hits this limit, it stops the scan and returns the matching
629
+ # values up to the limit, and a LastEvaluatedKey to apply in a
630
+ # subsequent operation to continue the scan.
631
+ # * +:count+ - (Boolean) If set to +true+ , Amazon DynamoDB returns a
632
+ # total number of items for the Scan operation, even if the operation
633
+ # has no matching items for the assigned filter. Do not set Count to
634
+ # +true+ while providing a list of AttributesToGet, otherwise Amazon
635
+ # DynamoDB returns a validation error.
636
+ # * +:scan_filter+ - (Hash<String,Hash>) Evaluates the scan results and
637
+ # returns only the desired values.
638
+ # * +:attribute_value_list+ - (Array<Hash>)
639
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
640
+ # The maximum size is limited by the size of the primary key (1024
641
+ # bytes as a range part of a key or 2048 bytes as a single part
642
+ # hash key) or the item size (64k).
643
+ # * +:n+ - (String) Numbers are positive or negative exact-value
644
+ # decimals and integers. A number can have up to 38 digits
645
+ # precision and can be between 10^-128 to 10^+126.
646
+ # * +:ss+ - (Array<String>) A set of strings.
647
+ # * +:ns+ - (Array<String>) A set of numbers.
648
+ # * +:comparison_operator+ - *required* - (String)
649
+ # * +:exclusive_start_key+ - (Hash) Primary key of the item from which to
650
+ # continue an earlier scan. An earlier scan might provide this value if
651
+ # that scan operation was interrupted before scanning the entire table;
652
+ # either because of the result set size or the Limit parameter. The
653
+ # LastEvaluatedKey can be passed back in a new scan request to continue
654
+ # the operation from that point.
655
+ # * +:hash_key_element+ - *required* - (Hash) A hash key element is
656
+ # treated as the primary key, and can be a string or a number. Single
657
+ # attribute primary keys have one index value. The value can be
658
+ # String, Number, StringSet, NumberSet.
659
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
660
+ # The maximum size is limited by the size of the primary key (1024
661
+ # bytes as a range part of a key or 2048 bytes as a single part
662
+ # hash key) or the item size (64k).
663
+ # * +:n+ - (String) Numbers are positive or negative exact-value
664
+ # decimals and integers. A number can have up to 38 digits
665
+ # precision and can be between 10^-128 to 10^+126.
666
+ # * +:ss+ - (Array<String>) A set of strings.
667
+ # * +:ns+ - (Array<String>) A set of numbers.
668
+ # * +:range_key_element+ - (Hash) A range key element is treated as a
669
+ # secondary key (used in conjunction with the primary key), and can
670
+ # be a string or a number, and is only used for hash-and-range
671
+ # primary keys. The value can be String, Number, StringSet,
672
+ # NumberSet.
673
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
674
+ # The maximum size is limited by the size of the primary key (1024
675
+ # bytes as a range part of a key or 2048 bytes as a single part
676
+ # hash key) or the item size (64k).
677
+ # * +:n+ - (String) Numbers are positive or negative exact-value
678
+ # decimals and integers. A number can have up to 38 digits
679
+ # precision and can be between 10^-128 to 10^+126.
680
+ # * +:ss+ - (Array<String>) A set of strings.
681
+ # * +:ns+ - (Array<String>) A set of numbers.
682
+ #
683
+ # === Response Structure:
684
+ #
685
+ # * +member+ - (Hash<String,Hash>)
686
+ # * +S+ - (String)
687
+ # * +N+ - (String)
688
+ # * +SS+ - (Array<String>)
689
+ # * +NS+ - (Array<String>)
690
+ # * +Count+ - (Integer)
691
+ # * +ScannedCount+ - (Integer)
692
+ # * +LastEvaluatedKey+ - (Hash)
693
+ # * +HashKeyElement+ - (Hash)
694
+ # * +S+ - (String)
695
+ # * +N+ - (String)
696
+ # * +SS+ - (Array<String>)
697
+ # * +NS+ - (Array<String>)
698
+ # * +RangeKeyElement+ - (Hash)
699
+ # * +S+ - (String)
700
+ # * +N+ - (String)
701
+ # * +SS+ - (Array<String>)
702
+ # * +NS+ - (Array<String>)
703
+ # * +ConsumedCapacityUnits+ - (Numeric)
704
+ #
705
+ # @return [Core::Response]
706
+ #
707
+ define_client_method :scan, 'Scan'
708
+
709
+ # Calls the UpdateItem API operation.
710
+ # @method update_item(options = {})
711
+ #
712
+ # === Options:
713
+ #
714
+ # * +:table_name+ - *required* - (String) The name of the table in which
715
+ # you want to update an item. Allowed characters are a-z, A-Z, 0-9, _
716
+ # (underscore), - (hyphen) and . (period).
717
+ # * +:key+ - *required* - (Hash)
718
+ # * +:hash_key_element+ - *required* - (Hash) A hash key element is
719
+ # treated as the primary key, and can be a string or a number. Single
720
+ # attribute primary keys have one index value. The value can be
721
+ # String, Number, StringSet, NumberSet.
722
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
723
+ # The maximum size is limited by the size of the primary key (1024
724
+ # bytes as a range part of a key or 2048 bytes as a single part
725
+ # hash key) or the item size (64k).
726
+ # * +:n+ - (String) Numbers are positive or negative exact-value
727
+ # decimals and integers. A number can have up to 38 digits
728
+ # precision and can be between 10^-128 to 10^+126.
729
+ # * +:ss+ - (Array<String>) A set of strings.
730
+ # * +:ns+ - (Array<String>) A set of numbers.
731
+ # * +:range_key_element+ - (Hash) A range key element is treated as a
732
+ # secondary key (used in conjunction with the primary key), and can
733
+ # be a string or a number, and is only used for hash-and-range
734
+ # primary keys. The value can be String, Number, StringSet,
735
+ # NumberSet.
736
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
737
+ # The maximum size is limited by the size of the primary key (1024
738
+ # bytes as a range part of a key or 2048 bytes as a single part
739
+ # hash key) or the item size (64k).
740
+ # * +:n+ - (String) Numbers are positive or negative exact-value
741
+ # decimals and integers. A number can have up to 38 digits
742
+ # precision and can be between 10^-128 to 10^+126.
743
+ # * +:ss+ - (Array<String>) A set of strings.
744
+ # * +:ns+ - (Array<String>) A set of numbers.
745
+ # * +:attribute_updates+ - *required* - (Hash<String,Hash>)
746
+ # * +:value+ - (Hash)
747
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
748
+ # The maximum size is limited by the size of the primary key (1024
749
+ # bytes as a range part of a key or 2048 bytes as a single part
750
+ # hash key) or the item size (64k).
751
+ # * +:n+ - (String) Numbers are positive or negative exact-value
752
+ # decimals and integers. A number can have up to 38 digits
753
+ # precision and can be between 10^-128 to 10^+126.
754
+ # * +:ss+ - (Array<String>) A set of strings.
755
+ # * +:ns+ - (Array<String>) A set of numbers.
756
+ # * +:action+ - (String)
757
+ # * +:expected+ - (Hash<String,Hash>)
758
+ # * +:value+ - (Hash) Specify whether or not a value already exists and
759
+ # has a specific content for the attribute name-value pair.
760
+ # * +:s+ - (String) Strings are Unicode with UTF-8 binary encoding.
761
+ # The maximum size is limited by the size of the primary key (1024
762
+ # bytes as a range part of a key or 2048 bytes as a single part
763
+ # hash key) or the item size (64k).
764
+ # * +:n+ - (String) Numbers are positive or negative exact-value
765
+ # decimals and integers. A number can have up to 38 digits
766
+ # precision and can be between 10^-128 to 10^+126.
767
+ # * +:ss+ - (Array<String>) A set of strings.
768
+ # * +:ns+ - (Array<String>) A set of numbers.
769
+ # * +:exists+ - (Boolean) Specify whether or not a value already exists
770
+ # for the attribute name-value pair.
771
+ # * +:return_values+ - (String)
772
+ #
773
+ # === Response Structure:
774
+ #
775
+ # * +Attributes+ - (Hash<String,Hash>)
776
+ # * +S+ - (String)
777
+ # * +N+ - (String)
778
+ # * +SS+ - (Array<String>)
779
+ # * +NS+ - (Array<String>)
780
+ # * +ConsumedCapacityUnits+ - (Numeric)
781
+ #
782
+ # @return [Core::Response]
783
+ #
784
+ define_client_method :update_item, 'UpdateItem'
785
+
786
+ # Calls the UpdateTable API operation.
787
+ # @method update_table(options = {})
788
+ #
789
+ # === Options:
790
+ #
791
+ # * +:table_name+ - *required* - (String) The name of the table you want
792
+ # to update. Allowed characters are a-z, A-Z, 0-9, _ (underscore), -
793
+ # (hyphen) and . (period).
794
+ # * +:provisioned_throughput+ - *required* - (Hash)
795
+ # * +:read_capacity_units+ - *required* - (Integer) ReadCapacityUnits
796
+ # are in terms of strictly consistent reads, assuming items of 1k. 2k
797
+ # items require twice the ReadCapacityUnits. Eventually-consistent
798
+ # reads only require half the ReadCapacityUnits of stirctly
799
+ # consistent reads.
800
+ # * +:write_capacity_units+ - *required* - (Integer) WriteCapacityUnits
801
+ # are in terms of strictly consistent reads, assuming items of 1k. 2k
802
+ # items require twice the WriteCapacityUnits.
803
+ #
804
+ # === Response Structure:
805
+ #
806
+ # * +TableDescription+ - (Hash)
807
+ # * +TableName+ - (String)
808
+ # * +KeySchema+ - (Hash)
809
+ # * +HashKeyElement+ - (Hash)
810
+ # * +AttributeName+ - (String)
811
+ # * +AttributeType+ - (String)
812
+ # * +RangeKeyElement+ - (Hash)
813
+ # * +AttributeName+ - (String)
814
+ # * +AttributeType+ - (String)
815
+ # * +TableStatus+ - (String)
816
+ # * +CreationDateTime+ - (Time)
817
+ # * +ProvisionedThroughput+ - (Hash)
818
+ # * +LastIncreaseDateTime+ - (Time)
819
+ # * +LastDecreaseDateTime+ - (Time)
820
+ # * +ReadCapacityUnits+ - (Integer)
821
+ # * +WriteCapacityUnits+ - (Integer)
822
+ # * +TableSizeBytes+ - (Integer)
823
+ # * +ItemCount+ - (Integer)
824
+ #
825
+ # @return [Core::Response]
826
+ #
827
+ define_client_method :update_table, 'UpdateTable'
828
+
829
+ ## end client methods ##
830
+
831
+ protected
832
+
833
+ def extract_error_details response
834
+ if response.http_response.status == 413
835
+ ['RequestEntityTooLarge', 'Request entity too large']
836
+ else
837
+ super
838
+ end
839
+ end
840
+
841
+ def should_retry? response
842
+ if possible_expired_credentials?(response)
843
+ true
844
+ elsif response.error.is_a?(Errors::ProvisionedThroughputExceededException)
845
+ config.dynamo_db_retry_throughput_errors?
846
+ else
847
+ super
848
+ end
849
+ end
850
+
851
+ def rebuild_http_request response
852
+ # called when a request is going to be retried, in case of
853
+ # expired credentials we should refresh the session
854
+ signer.refresh_session if possible_expired_credentials?(response)
855
+ super
856
+ end
857
+
858
+ def sleep_durations response
859
+
860
+ retry_count =
861
+ if possible_expired_credentials?(response)
862
+ config.max_retries == 0 ? 0 : 1
863
+ else
864
+ config.max_retries { 10 }
865
+ end
866
+
867
+ # given a retry_count of 10, the sleep durations will look like:
868
+ # 0, 50, 100, 200, 400, 800, 1600, 3200, 6400, 12800 (milliseconds)
869
+ (0...retry_count).map do |n|
870
+ if n == 0
871
+ 0
872
+ else
873
+ 50 * (2 ** (n - 1)) / 1000.0
874
+ end
875
+ end
876
+
877
+ end
878
+
879
+ # Returns true if we get an access denied error from the service AND
880
+ # our signer is capible of getting new short-term credentials
881
+ def possible_expired_credentials? response
882
+ signer.respond_to?(:refresh_session) and
883
+ response.error.is_a?(Errors::ExpiredTokenException)
884
+ end
885
+
886
+ end
887
+ end
888
+ end