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,393 @@
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 S3
16
+
17
+ # Represents a single S3 bucket.
18
+ #
19
+ # @example Creating a Bucket
20
+ #
21
+ # bucket = s3.buckets.create('mybucket')
22
+ #
23
+ # @example Getting an Existing Bucket
24
+ #
25
+ # bucket = s3.buckets['mybucket']
26
+ #
27
+ class Bucket
28
+
29
+ include Core::Model
30
+
31
+ # @param [String] name
32
+ # @param [Hash] options
33
+ # @option options [String] :owner (nil) The owner id of this bucket.
34
+ def initialize(name, options = {})
35
+ # the S3 docs disagree with what the service allows,
36
+ # so it's not safe to toss out invalid bucket names
37
+ # S3::Client.validate_bucket_name!(name)
38
+ @name = name
39
+ @owner = options[:owner]
40
+ super
41
+ end
42
+
43
+ # @return [String] The bucket name
44
+ attr_reader :name
45
+
46
+ # Returns the url for this bucket.
47
+ # @return [String] url to the bucket
48
+ def url
49
+ if client.dns_compatible_bucket_name?(name)
50
+ "http://#{name}.s3.amazonaws.com/"
51
+ else
52
+ "http://s3.amazonaws.com/#{name}/"
53
+ end
54
+ end
55
+
56
+ # @return [Boolean] Returns true if the bucket has no objects
57
+ # (this includes versioned objects that are delete markers).
58
+ def empty?
59
+ versions.first ? false : true
60
+ end
61
+
62
+ # @return [String,nil] Returns the location constraint for a bucket
63
+ # (if it has one), nil otherwise.
64
+ def location_constraint
65
+ client.get_bucket_location(:bucket_name => name).location_constraint
66
+ end
67
+
68
+ # Enables versioning on this bucket.
69
+ # @return [nil]
70
+ def enable_versioning
71
+ client.set_bucket_versioning(
72
+ :bucket_name => @name,
73
+ :state => :enabled)
74
+ nil
75
+ end
76
+
77
+ # Suspends versioning on this bucket.
78
+ # @return [nil]
79
+ def suspend_versioning
80
+ client.set_bucket_versioning(
81
+ :bucket_name => @name,
82
+ :state => :suspended)
83
+ nil
84
+ end
85
+
86
+ # @return [Boolean] returns +true+ if version is enabled on this bucket.
87
+ def versioning_enabled?
88
+ versioning_state == :enabled
89
+ end
90
+ alias_method :versioned?, :versioning_enabled?
91
+
92
+ # Returns the versioning status for this bucket. States include:
93
+ #
94
+ # * +:enabled+ - currently enabled
95
+ # * +:suspended+ - currently suspended
96
+ # * +:unversioned+ - versioning has never been enabled
97
+ #
98
+ # @return [Symbol] the versioning state
99
+ def versioning_state
100
+ client.get_bucket_versioning(:bucket_name => @name).status
101
+ end
102
+
103
+ # Deletes all objects from this bucket.
104
+ # @return [nil]
105
+ def clear!
106
+ versions.each_batch do |versions|
107
+ objects.delete(versions)
108
+ end
109
+ end
110
+
111
+ # Deletes the current bucket. An error will be raised if the
112
+ # bucket is not empty.
113
+ # @return [nil]
114
+ def delete
115
+ client.delete_bucket(:bucket_name => @name)
116
+ nil
117
+ end
118
+
119
+ # Deletes all objects in a bucket and then deletes the bucket.
120
+ # @return [nil]
121
+ def delete!
122
+ clear!
123
+ delete
124
+ end
125
+
126
+ # @return [String] bucket owner id
127
+ def owner
128
+ @owner || client.list_buckets.owner
129
+ end
130
+
131
+ # @private
132
+ def inspect
133
+ "#<AWS::S3::Bucket:#{name}>"
134
+ end
135
+
136
+ # @return [Boolean] Returns true if the two buckets have the same name.
137
+ def ==(other)
138
+ other.kind_of?(Bucket) && other.name == name
139
+ end
140
+
141
+ # @return [Boolean] Returns true if the two buckets have the same name
142
+ def eql?(other_bucket)
143
+ self == other_bucket
144
+ end
145
+
146
+ # @note This method only indicates if there is a bucket in S3, not
147
+ # if you have permissions to work with the bucket or not.
148
+ # @return [Boolean] Returns true if the bucket exists in S3.
149
+ def exists?
150
+ begin
151
+ versioned? # makes a get bucket request without listing contents
152
+ # raises a client error if the bucket doesn't exist or
153
+ # if you don't have permission to get the bucket
154
+ # versioning status.
155
+ true
156
+ rescue Errors::NoSuchBucket => e
157
+ false # bucket does not exist
158
+ rescue Errors::ClientError => e
159
+ true # bucket exists
160
+ end
161
+ end
162
+
163
+ # @return [ObjectCollection] Represents all objects(keys) in
164
+ # this bucket.
165
+ def objects
166
+ ObjectCollection.new(self)
167
+ end
168
+
169
+ # @return [BucketVersionCollection] Represents all of the versioned
170
+ # objects stored in this bucket.
171
+ def versions
172
+ BucketVersionCollection.new(self)
173
+ end
174
+
175
+ # @return [MultipartUploadCollection] Represents all of the
176
+ # multipart uploads that are in progress for this bucket.
177
+ def multipart_uploads
178
+ MultipartUploadCollection.new(self)
179
+ end
180
+
181
+ # @private
182
+ module ACLProxy
183
+
184
+ attr_accessor :bucket
185
+
186
+ def change
187
+ yield(self)
188
+ bucket.acl = self
189
+ end
190
+
191
+ end
192
+
193
+ # Returns the bucket's access control list. This will be an
194
+ # instance of AccessControlList, plus an additional +change+
195
+ # method:
196
+ #
197
+ # bucket.acl.change do |acl|
198
+ # acl.grants.reject! do |g|
199
+ # g.grantee.canonical_user_id != bucket.owner.id
200
+ # end
201
+ # end
202
+ #
203
+ # @return [AccessControlList]
204
+ def acl
205
+
206
+ resp = client.get_bucket_acl(:bucket_name => name)
207
+
208
+ acl = AccessControlList.new(resp.data)
209
+ acl.extend ACLProxy
210
+ acl.bucket = self
211
+ acl
212
+
213
+ end
214
+
215
+ # Sets the bucket's access control list. +acl+ can be:
216
+ #
217
+ # * An XML policy as a string (which is passed to S3 uninterpreted)
218
+ # * An AccessControlList object
219
+ # * Any object that responds to +to_xml+
220
+ # * Any Hash that is acceptable as an argument to
221
+ # AccessControlList#initialize.
222
+ #
223
+ # @param [AccessControlList] acl
224
+ # @return [nil]
225
+ def acl=(acl)
226
+ client.set_bucket_acl(:bucket_name => name, :acl => acl)
227
+ nil
228
+ end
229
+
230
+ # @private
231
+ module PolicyProxy
232
+
233
+ attr_accessor :bucket
234
+
235
+ def change
236
+ yield(self)
237
+ bucket.policy = self
238
+ end
239
+
240
+ def delete
241
+ bucket.client.delete_bucket_policy(:bucket_name => bucket.name)
242
+ end
243
+
244
+ end
245
+
246
+ # Returns the bucket policy. This will be an instance of
247
+ # Policy. The returned policy will also have the methods of
248
+ # PolicyProxy mixed in, so you can use it to change the
249
+ # current policy or delete it, for example:
250
+ #
251
+ # if policy = bucket.policy
252
+ # # add a statement
253
+ # policy.change do |p|
254
+ # p.allow(...)
255
+ # end
256
+ #
257
+ # # delete the policy
258
+ # policy.delete
259
+ # end
260
+ #
261
+ # Note that changing the policy is not an atomic operation; it
262
+ # fetches the current policy, yields it to the block, and then
263
+ # sets it again. Therefore, it's possible that you may
264
+ # overwrite a concurrent update to the policy using this
265
+ # method.
266
+ #
267
+ # @return [Policy,nil] Returns the bucket policy (if it has one),
268
+ # or it returns +nil+ otherwise.
269
+ def policy
270
+ resp = client.get_bucket_policy(:bucket_name => name)
271
+ policy = Policy.from_json(resp.data[:policy])
272
+ policy.extend(PolicyProxy)
273
+ policy.bucket = self
274
+ policy
275
+ rescue Errors::NoSuchBucketPolicy => e
276
+ nil
277
+ end
278
+
279
+ # Sets the bucket's policy.
280
+ #
281
+ # @param policy The new policy. This can be a string (which
282
+ # is assumed to contain a valid policy expressed in JSON), a
283
+ # Policy object or any object that responds to +to_json+.
284
+ # @see Policy
285
+ # @return [nil]
286
+ def policy=(policy)
287
+ client.set_bucket_policy(:bucket_name => name, :policy => policy)
288
+ nil
289
+ end
290
+
291
+ # The primary interface for editing the lifecycle configuration.
292
+ # See {BucketLifecycleConfiguration} for more information.
293
+ #
294
+ # @example Adding rules to a bucket's lifecycle configuration
295
+ #
296
+ # bucket.lifecycle_configuration.update do
297
+ # add_rule 'cache-1/', 30
298
+ # add_rule 'cache-2/', 30
299
+ # end
300
+ #
301
+ # @example Deleting the lifecycle configuration
302
+ #
303
+ # bucket.lifecycle_configuration.clear
304
+ #
305
+ # @return [BucketLifecycleConfiguration]
306
+ #
307
+ def lifecycle_configuration
308
+ @lifecycle_cfg ||= BucketLifecycleConfiguration.new(self)
309
+ end
310
+
311
+ # You can call this method if you prefer to build your own
312
+ # lifecycle configuration.
313
+ #
314
+ # bucket.lifecycle_configuration = <<-XML
315
+ # <LifecycleConfiguration>
316
+ # ...
317
+ # </LifecycleConfiguration>
318
+ # XML
319
+ #
320
+ # You can also use this method to copy a lifecycle configuration
321
+ # from another bucket.
322
+ #
323
+ # bucket.lifecycle_configuration = other_bucket.lifecycle_configuration
324
+ #
325
+ # If you call this method, passing nil, the lifecycle configuration
326
+ # for this bucket will be deleted.
327
+ #
328
+ # @param [String,Object] config You can pass an xml string or any
329
+ # other object that responds to #to_xml (e.g.
330
+ # BucketLifecycleConfiguration).
331
+ #
332
+ # @return [nil]
333
+ #
334
+ def lifecycle_configuration= config
335
+
336
+ if config.nil?
337
+
338
+ client_opts = {}
339
+ client_opts[:bucket_name] = name
340
+ client.delete_bucket_lifecycle_configuration(client_opts)
341
+
342
+ @lifecycle_cfg = BucketLifecycleConfiguration.new(self, :empty => true)
343
+
344
+ else
345
+
346
+ xml = config.is_a?(String) ? config : config.to_xml
347
+
348
+ client_opts = {}
349
+ client_opts[:bucket_name] = name
350
+ client_opts[:lifecycle_configuration] = xml
351
+ client.set_bucket_lifecycle_configuration(client_opts)
352
+
353
+ @lifecycle_cfg = BucketLifecycleConfiguration.new(self, :xml => xml)
354
+
355
+ end
356
+
357
+ nil
358
+
359
+ end
360
+
361
+ # Returns a tree that allows you to expose the bucket contents
362
+ # like a directory structure.
363
+ #
364
+ # @see Tree
365
+ # @param [Hash] options
366
+ # @option options [String] :prefix (nil) Set prefix to choose where
367
+ # the top of the tree will be. A value of +nil+ means
368
+ # that the tree will include all objects in the collection.
369
+ #
370
+ # @option options [String] :delimiter ('/') The string that separates
371
+ # each level of the tree. This is usually a directory separator.
372
+ #
373
+ # @option options [Boolean] :append (true) If true, the delimiter is
374
+ # appended to the prefix when the prefix does not already end
375
+ # with the delimiter.
376
+ #
377
+ # @return [Tree]
378
+ def as_tree options = {}
379
+ objects.as_tree(options)
380
+ end
381
+
382
+ # Generates fields for a presigned POST to this object. All
383
+ # options are sent to the PresignedPost constructor.
384
+ #
385
+ # @see PresignedPost
386
+ def presigned_post(options = {})
387
+ PresignedPost.new(self, options)
388
+ end
389
+
390
+ end
391
+
392
+ end
393
+ end
@@ -0,0 +1,143 @@
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 S3
16
+
17
+ # Represents a collection of buckets.
18
+ #
19
+ # You can use this to create a bucket:
20
+ #
21
+ # s3.buckets.create(:name => "mybucket")
22
+ #
23
+ # You can get a handle for a specific bucket with indifferent
24
+ # access:
25
+ #
26
+ # bucket = s3.buckets[:mybucket]
27
+ # bucket = s3.buckets['mybucket']
28
+ #
29
+ # You can also use it to find out which buckets are in your account:
30
+ #
31
+ # s3.buckets.collect(&:name)
32
+ # #=> ['bucket1', 'bucket2', ...]
33
+ #
34
+ class BucketCollection
35
+
36
+ include Core::Model
37
+ include Enumerable
38
+
39
+ # Creates and returns a new Bucket. For example:
40
+ #
41
+ # @note If your bucket name contains one or more periods and it
42
+ # is hosted in a non-US region, you should make requests
43
+ # against the bucket using the S3 endpoint specific to the
44
+ # region in which your bucket resides. For example:
45
+ #
46
+ # s3 = AWS::S3.new(:s3_endpoint => "s3-eu-west-1.amazonaws.com")
47
+ # bucket = s3.buckets.create("my.eu.bucket")
48
+ #
49
+ # For a full list of endpoints and regions, see
50
+ # {http://docs.amazonwebservices.com/general/latest/gr/index.html?rande.html
51
+ # Regions and Endpoints} in the Amazon Web Services General
52
+ # Reference.
53
+ #
54
+ # @example
55
+ #
56
+ # bucket = s3.buckets.create('my-bucket')
57
+ # bucket.name #=> "my-bucket"
58
+ # bucket.exists? #=> true
59
+ #
60
+ # @param [String] bucket_name
61
+ # @param [Hash] options
62
+ #
63
+ # @option options [String] :location_constraint (nil) The
64
+ # location where the bucket should be created. Defaults to
65
+ # the classic US region; however, if you configure a regional
66
+ # endpoint for Amazon S3 this option will default to the
67
+ # appropriate location constraint for the endpoint. For
68
+ # example:
69
+ #
70
+ # s3 = AWS::S3.new(:s3_endpoint => "s3-us-west-1.amazonaws.com")
71
+ # bucket = s3.buckets.create("my-us-west-bucket")
72
+ # bucket.location_constraint # => "us-west-1"
73
+ #
74
+ # @option options [String] :acl (:private) Sets the ACL of the bucket
75
+ # you are creating. Valid Values include :private, :public_read,
76
+ # :public_read_write, :authenticated_read, :bucket_owner_read and
77
+ # :bucket_owner_full_control
78
+ # @return [Bucket]
79
+ def create bucket_name, options = {}
80
+
81
+ # auto set the location constraint for the user if it is not
82
+ # passed in and the endpoint is not the us-standard region. don't
83
+ # override the location constraint though, even it is wrong,
84
+ unless
85
+ config.s3_endpoint == 's3.amazonaws.com' or
86
+ options[:location_constraint]
87
+ then
88
+ constraint =
89
+ case config.s3_endpoint
90
+ when 's3-eu-west-1.amazonaws.com' then 'EU'
91
+ when /^s3-(.*)\.amazonaws\.com$/ then $1
92
+ end
93
+ options[:location_constraint] = constraint if constraint
94
+ end
95
+
96
+ client.create_bucket(options.merge(:bucket_name => bucket_name))
97
+ bucket_named(bucket_name)
98
+
99
+ end
100
+
101
+ # Returns the Bucket with the given name.
102
+ #
103
+ # Makes no requests. The returned bucket object can
104
+ # be used to make requets for the bucket and its objects.
105
+ #
106
+ # @example
107
+ #
108
+ # bucket = s3.buckets[:mybucket],
109
+ # bucket = s3.buckets['mybucket'],
110
+ #
111
+ # @param [String] bucket_name
112
+ # @return [Bucket]
113
+ def [] bucket_name
114
+ bucket_named(bucket_name)
115
+ end
116
+
117
+ # Iterates the buckets in this collection.
118
+ #
119
+ # @example
120
+ #
121
+ # s3.buckets.each do |bucket|
122
+ # puts bucket.name
123
+ # end
124
+ #
125
+ # @return [nil]
126
+ def each &block
127
+ response = client.list_buckets
128
+ response.buckets.each do |b|
129
+ yield(bucket_named(b.name, response.owner))
130
+ end
131
+ nil
132
+ end
133
+
134
+ # @private
135
+ private
136
+ def bucket_named name, owner = nil
137
+ S3::Bucket.new(name.to_s, :owner => owner, :config => config)
138
+ end
139
+
140
+ end
141
+
142
+ end
143
+ end