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,208 @@
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 ELB
16
+
17
+ class LoadBalancerPolicyCollection
18
+
19
+ include Core::Collection::Simple
20
+
21
+ def initialize load_balancer, options = {}
22
+ @load_balancer = load_balancer
23
+ super
24
+ end
25
+
26
+ attr_reader :load_balancer
27
+
28
+ # Creates a new load balancer policy that contains the necessary
29
+ # attributes depending on the policy type. Policies are settings
30
+ # that are saved for your load balancer and that can be applied to
31
+ # the front-end listener, or the back-end application server,
32
+ # depending on your policy type.
33
+ #
34
+ # == Applying Policies
35
+ #
36
+ # To apply a policy to a front-end listener:
37
+ #
38
+ # # each listener may only have a single policy
39
+ # load_balancer.listener[80].policy = listener_policy
40
+ #
41
+ # To apply a policy to backend instance port
42
+ #
43
+ # # back end servers can have multiple policies per instance port
44
+ # load_balancer.backend_server_policies.add(80, back_end_policy)
45
+ #
46
+ # @param [String] name The name of the policy being created. The name
47
+ # must be unique within the set of policies for this load balancer.
48
+ #
49
+ # @param [String] type The policy type name. Valid values inlucde:
50
+ #
51
+ # * 'PublicKeyPolicyType'
52
+ # * 'AppCookieStickinessPolicyType'
53
+ # * 'LBCookieStickinessPolicyType'
54
+ # * 'SSLNegotiationPolicyType'
55
+ # * 'BackendServerAuthenticationPolicyType'
56
+ #
57
+ # @param [Hash] attributes A hash of policy attributes. Each policy
58
+ # type accepts a different list of hash options. Below each
59
+ # policy type name is listed with its list of accepted options.
60
+ # Attributes that accept more than one value should be provided
61
+ # as an array of values.
62
+ #
63
+ # Hash keys should be attribute names, values may be single
64
+ # values or arrays of values.
65
+ #
66
+ # PublicKeyPolicyType
67
+ #
68
+ # Policy containing a list of public keys to accept when authenticating the back-end server(s). This policy cannot be applied directly to back-end servers or listeners but must be part of a BackendServerAuthenticationPolicyType.
69
+ #
70
+ # * 'PublicKey', String, one
71
+ #
72
+ # AppCookieStickinessPolicyType
73
+ #
74
+ # Stickiness policy with session lifetimes controlled by the lifetime of the application-generated cookie. This policy can be associated only with HTTP/HTTPS listeners.
75
+ #
76
+ # * 'CookieName', String, one
77
+ #
78
+ # LBCookieStickinessPolicyType
79
+ #
80
+ # Stickiness policy with session lifetimes controlled by the browser (user-agent) or a specified expiration period. This policy can be associated only with HTTP/HTTPS listeners.
81
+ #
82
+ # * 'CookieExpirationPeriod', Long, zero or one
83
+ #
84
+ # SSLNegotiationPolicyType
85
+ #
86
+ # Listener policy that defines the ciphers and protocols that will be accepted by the load balancer. This policy can be associated only with HTTPS/SSL listeners.
87
+ #
88
+ # * 'Protocol-SSLv2', Boolean, zero or one
89
+ # * 'Protocol-TLSv1', Boolean, zero or one
90
+ # * 'Protocol-SSLv3', Boolean, zero or one
91
+ # * 'DHE-RSA-AES256-SHA', Boolean, zero or one
92
+ # * 'DHE-DSS-AES256-SHA', Boolean, zero or one
93
+ # * 'DHE-RSA-CAMELLIA256-SHA', Boolean, zero or one
94
+ # * 'DHE-DSS-CAMELLIA256-SHA', Boolean, zero or one
95
+ # * 'ADH-AES256-SHA', Boolean, zero or one
96
+ # * 'ADH-CAMELLIA256-SHA', Boolean, zero or one
97
+ # * 'AES256-SHA', Boolean, zero or one
98
+ # * 'CAMELLIA256-SHA', Boolean, zero or one
99
+ # * 'PSK-AES256-CBC-SHA', Boolean, zero or one
100
+ # * 'EDH-RSA-DES-CBC3-SHA', Boolean, zero or one
101
+ # * 'EDH-DSS-DES-CBC3-SHA', Boolean, zero or one
102
+ # * 'ADH-DES-CBC3-SHA', Boolean, zero or one
103
+ # * 'DES-CBC3-SHA', Boolean, zero or one
104
+ # * 'DES-CBC3-MD5', Boolean, zero or one
105
+ # * 'PSK-3DES-EDE-CBC-SHA', Boolean, zero or one
106
+ # * 'KRB5-DES-CBC3-SHA', Boolean, zero or one
107
+ # * 'KRB5-DES-CBC3-MD5', Boolean, zero or one
108
+ # * 'DHE-RSA-AES128-SHA', Boolean, zero or one
109
+ # * 'DHE-DSS-AES128-SHA', Boolean, zero or one
110
+ # * 'DHE-RSA-SEED-SHA', Boolean, zero or one
111
+ # * 'DHE-DSS-SEED-SHA', Boolean, zero or one
112
+ # * 'DHE-RSA-CAMELLIA128-SHA', Boolean, zero or one
113
+ # * 'DHE-DSS-CAMELLIA128-SHA', Boolean, zero or one
114
+ # * 'ADH-AES128-SHA', Boolean, zero or one
115
+ # * 'ADH-SEED-SHA', Boolean, zero or one
116
+ # * 'ADH-CAMELLIA128-SHA', Boolean, zero or one
117
+ # * 'AES128-SHA', Boolean, zero or one
118
+ # * 'SEED-SHA', Boolean, zero or one
119
+ # * 'CAMELLIA128-SHA', Boolean, zero or one
120
+ # * 'RC2-CBC-MD5', Boolean, zero or one
121
+ # * 'PSK-AES128-CBC-SHA', Boolean, zero or one
122
+ # * 'ADH-RC4-MD5', Boolean, zero or one
123
+ # * 'IDEA-CBC-SHA', Boolean, zero or one
124
+ # * 'RC4-SHA', Boolean, zero or one
125
+ # * 'RC4-MD5', Boolean, zero or one
126
+ # * 'PSK-RC4-SHA', Boolean, zero or one
127
+ # * 'KRB5-RC4-SHA', Boolean, zero or one
128
+ # * 'KRB5-RC4-MD5', Boolean, zero or one
129
+ # * 'EDH-RSA-DES-CBC-SHA', Boolean, zero or one
130
+ # * 'EDH-DSS-DES-CBC-SHA', Boolean, zero or one
131
+ # * 'ADH-DES-CBC-SHA', Boolean, zero or one
132
+ # * 'DES-CBC-SHA', Boolean, zero or one
133
+ # * 'DES-CBC-MD5', Boolean, zero or one
134
+ # * 'KRB5-DES-CBC-SHA', Boolean, zero or one
135
+ # * 'KRB5-DES-CBC-MD5', Boolean, zero or one
136
+ # * 'EXP-EDH-RSA-DES-CBC-SHA', Boolean, zero or one
137
+ # * 'EXP-EDH-DSS-DES-CBC-SHA', Boolean, zero or one
138
+ # * 'EXP-ADH-DES-CBC-SHA', Boolean, zero or one
139
+ # * 'EXP-DES-CBC-SHA', Boolean, zero or one
140
+ # * 'EXP-RC2-CBC-MD5', Boolean, zero or one
141
+ # * 'EXP-KRB5-RC2-CBC-SHA', Boolean, zero or one
142
+ # * 'EXP-KRB5-DES-CBC-SHA', Boolean, zero or one
143
+ # * 'EXP-KRB5-RC2-CBC-MD5', Boolean, zero or one
144
+ # * 'EXP-KRB5-DES-CBC-MD5', Boolean, zero or one
145
+ # * 'EXP-ADH-RC4-MD5', Boolean, zero or one
146
+ # * 'EXP-RC4-MD5', Boolean, zero or one
147
+ # * 'EXP-KRB5-RC4-SHA', Boolean, zero or one
148
+ # * 'EXP-KRB5-RC4-MD5', Boolean, zero or one
149
+ #
150
+ # BackendServerAuthenticationPolicyType
151
+ #
152
+ # Policy that controls authentication to back-end server(s) and contains one or more policies, such as an instance of a PublicKeyPolicyType. This policy can be associated only with back-end servers that are using HTTPS/SSL.
153
+ #
154
+ # * 'PublicKeyPolicyName', PolicyName, one or more
155
+ #
156
+ # @return [nil]
157
+ #
158
+ def create name, type, attributes = {}
159
+
160
+ attribute_list = []
161
+
162
+ attributes.each do |attr_name,values|
163
+ [values].flatten.each do |value|
164
+ attribute_list << {
165
+ :attribute_name => attr_name,
166
+ :attribute_value => value.to_s
167
+ }
168
+ end
169
+ end
170
+
171
+ client.create_load_balancer_policy(
172
+ :load_balancer_name => load_balancer.name,
173
+ :policy_name => name.to_s,
174
+ :policy_type_name => type.to_s,
175
+ :policy_attributes => attribute_list)
176
+
177
+ LoadBalancerPolicy.new(load_balancer, name, :type => type.to_s)
178
+
179
+ end
180
+
181
+ # @param [String] policy_name The name of the policy to return.
182
+ # @return [LoadBalancerPolicy] Returns a reference to the load balancer
183
+ # policy with the given name.
184
+ def [] policy_name
185
+ LoadBalancerPolicy.new(load_balancer, policy_name)
186
+ end
187
+
188
+ protected
189
+ def _each_item options = {}, &block
190
+
191
+ options[:load_balancer_name] = load_balancer.name
192
+
193
+ response = client.describe_load_balancer_policies(options)
194
+ response.policy_descriptions.each do |desc|
195
+
196
+ load_balancer_policy = LoadBalancerPolicy.new_from(
197
+ :describe_load_balancer_policies,
198
+ desc, load_balancer, desc.policy_name)
199
+
200
+ yield(load_balancer_policy)
201
+
202
+ end
203
+
204
+ end
205
+
206
+ end
207
+ end
208
+ end
@@ -0,0 +1,23 @@
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 ELB
16
+
17
+ # @private
18
+ class Request < Core::Http::Request
19
+ include Core::Signature::Version2
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,122 @@
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
+
16
+ # = Errors
17
+ #
18
+ # There are two basic types of errors:
19
+ #
20
+ # * {ClientError}
21
+ # * {ServerError}
22
+ #
23
+ # == Client Errors
24
+ #
25
+ # Errors in the three and four hundreds are client errors ({ClientError}).
26
+ # A client error should not be resent without changes. The body of the
27
+ # http response (the error #message) should give more information about
28
+ # the nature of the problem.
29
+ #
30
+ # == Server Errors
31
+ #
32
+ # A 500 level error typically indicates the service is having an issue.
33
+ #
34
+ # Requests that generate service errors are automatically retried with
35
+ # an exponential backoff. If the service still fails to respond with
36
+ # a 200 after 3 retries the error is raised.
37
+ #
38
+ module Errors
39
+
40
+ # Base class for all errors returned by the service.
41
+ class Base < StandardError
42
+
43
+ # @overload new(error_message)
44
+ # @param [String] error_message The body of the error message
45
+ #
46
+ # @overload new(http_request, http_response, code = nil, message = nil)
47
+ # @param [Http::Request] http_request
48
+ # @param [Http::Response] http_response
49
+ # @param [String] code (nil)
50
+ # @param [String] message (nil)
51
+ #
52
+ def initialize req = nil, resp = nil, code = nil, message = nil
53
+ if req.is_a?(String) or req.nil?
54
+ super(req)
55
+ else
56
+ @http_request = req
57
+ @http_response = resp
58
+ @code = code
59
+ include_error_type
60
+ super(message || http_response.body)
61
+ end
62
+ end
63
+
64
+ # @return [String] The response code given by the service.
65
+ attr_reader :code
66
+
67
+ # @return [Http::Request] The low level http request that caused the
68
+ # error to be raised.
69
+ attr_reader :http_request
70
+
71
+ # @return [Http::Response] The low level http response from the service
72
+ # that wrapped the service error.
73
+ attr_reader :http_response
74
+
75
+ protected
76
+
77
+ # Extends the error object with {ServerError} or {ClientError}.
78
+ # This indicates if the request should be retried (server errors)
79
+ # or not (client errors).
80
+ def include_error_type
81
+ if http_response.status >= 500
82
+ extend ServerError
83
+ else
84
+ extend ClientError
85
+ end
86
+ end
87
+
88
+ end
89
+
90
+ # Provides the ability to instantiate instances of {ServerError} and
91
+ # {ClientError}.
92
+ # @private
93
+ module ExceptionMixinClassMethods
94
+ def new(*args)
95
+ e = Base.new(*args)
96
+ e.extend(self)
97
+ e
98
+ end
99
+ end
100
+
101
+ # Raised when an error occurs as a result of bad client
102
+ # behavior, most commonly when the parameters passed to a method
103
+ # are somehow invalid. Other common cases:
104
+ #
105
+ # * Throttling errors
106
+ # * Bad credentials
107
+ # * No permission to do the requested operation
108
+ # * Limits exceeded (e.g. too many buckets)
109
+ #
110
+ module ClientError
111
+ extend ExceptionMixinClassMethods
112
+ end
113
+
114
+ # Raised when an AWS service is unable to handle the request. These
115
+ # are automatically retired. If after 3 retries the request is still
116
+ # failing, then the error is raised.
117
+ module ServerError
118
+ extend ExceptionMixinClassMethods
119
+ end
120
+
121
+ end
122
+ end
@@ -0,0 +1,418 @@
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
+ require 'aws/core'
15
+ require 'aws/iam/config'
16
+
17
+ module AWS
18
+
19
+ # This class is the starting point for working with
20
+ # AWS Identity and Access Management (IAM).
21
+ #
22
+ # For more information about IAM:
23
+ #
24
+ # * {AWS Identity and Access Management}[http://aws.amazon.com/iam/]
25
+ # * {AWS Identity and Access Management Documentation}[http://aws.amazon.com/documentation/iam/]
26
+ #
27
+ # = Credentials
28
+ #
29
+ # You can setup default credentials for all AWS services via
30
+ # AWS.config:
31
+ #
32
+ # AWS.config(
33
+ # :access_key_id => 'YOUR_ACCESS_KEY_ID',
34
+ # :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
35
+ #
36
+ # Or you can set them directly on the IAM interface:
37
+ #
38
+ # iam = AWS::IAM.new(
39
+ # :access_key_id => 'YOUR_ACCESS_KEY_ID',
40
+ # :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')
41
+ #
42
+ # = Account Summary
43
+ #
44
+ # You can get account level information about entity usage and IAM quotas
45
+ # directly from an IAM interface object.
46
+ #
47
+ # summary = iam.account_summary
48
+ #
49
+ # puts "Num users: #{summary[:users]}"
50
+ # puts "Num user quota: #{summary[:users_quota]}"
51
+ #
52
+ # For a complete list of summary attributes see the {#account_summary} method.
53
+ #
54
+ # = Account Aliases
55
+ #
56
+ # Currently IAM only supports a single account alias for each AWS account.
57
+ # You can set the account alias on the IAM interface.
58
+ #
59
+ # iam.account_alias = 'myaccountalias'
60
+ # iam.account_alias
61
+ # #=> 'myaccountalias'
62
+ #
63
+ # You can also remove your account alias:
64
+ #
65
+ # iam.remove_account_alias
66
+ # iam.account_alias
67
+ # #=> nil
68
+ #
69
+ # = Access Keys
70
+ #
71
+ # You can create up to 2 access for your account and 2 for each user.
72
+ # This makes it easy to rotate keys if you need to. You can also
73
+ # deactivate/activate access keys.
74
+ #
75
+ # # get your current access key
76
+ # old_access_key = iam.access_keys.first
77
+ #
78
+ # # create a new access key
79
+ # new_access_key = iam.access_keys.create
80
+ # new_access_key.credentials
81
+ # #=> { :access_key_id => 'ID', :secret_access_key => 'SECRET' }
82
+ #
83
+ # # go rotate your keys/credentials ...
84
+ #
85
+ # # now disable the old access key
86
+ # old_access_key.deactivate!
87
+ #
88
+ # # go make sure everything still works ...
89
+ #
90
+ # # all done, lets clean up
91
+ # old_access_key.delete
92
+ #
93
+ # Users can also have access keys:
94
+ #
95
+ # u = iam.users['someuser']
96
+ # access_key = u.access_keys.create
97
+ # access_key.credentials
98
+ # #=> { :access_key_id => 'ID', :secret_access_key => 'SECRET' }
99
+ #
100
+ # See {AccessKeyCollection} and {AccessKey} for more information about
101
+ # working with access keys.
102
+ #
103
+ # = Users & Groups
104
+ #
105
+ # Each AWS account can have multiple users. Users can be used to easily
106
+ # manage permissions. Users can also be organized into groups.
107
+ #
108
+ # user = iam.users.create('JohnDoe')
109
+ # group = iam.groups.create('Developers')
110
+ #
111
+ # # add a user to a group
112
+ # user.groups.add(group)
113
+ #
114
+ # # remove a user from a group
115
+ # user.groups.remove(group)
116
+ #
117
+ # # add a user to a group
118
+ # group.users.add(user)
119
+ #
120
+ # # remove a user from a group
121
+ # group.users.remove(user)
122
+ #
123
+ # See {User}, {UserCollection}, {Group} and {GroupCollection} for more
124
+ # information on how to work with users and groups.
125
+ #
126
+ # = Other Interfaces
127
+ #
128
+ # Other useful IAM interfaces:
129
+ # * User Login Profiles ({LoginProfile})
130
+ # * Policies ({Policy})
131
+ # * Server Certificates ({ServerCertificateCollection}, {ServerCertificate})
132
+ # * Signing Certificates ({SigningCertificateCollection}, {SigningCertificate})
133
+ # * Multifactor Authentication Devices ({MFADeviceCollection}, {MFADevice})
134
+ #
135
+ class IAM
136
+
137
+ AWS.register_autoloads(self) do
138
+ autoload :AccessKey, 'access_key'
139
+ autoload :AccessKeyCollection, 'access_key_collection'
140
+ autoload :AccountAliasCollection, 'account_alias_collection'
141
+ autoload :Client, 'client'
142
+ autoload :Collection, 'collection'
143
+ autoload :Errors, 'errors'
144
+ autoload :Group, 'group'
145
+ autoload :GroupCollection, 'group_collection'
146
+ autoload :GroupPolicyCollection, 'group_policy_collection'
147
+ autoload :GroupUserCollection, 'group_user_collection'
148
+ autoload :LoginProfile, 'login_profile'
149
+ autoload :MFADevice, 'mfa_device'
150
+ autoload :MFADeviceCollection, 'mfa_device_collection'
151
+ autoload :Policy, 'policy'
152
+ autoload :PolicyCollection, 'policy_collection'
153
+ autoload :Request, 'request'
154
+ autoload :Resource, 'resource'
155
+ autoload :ServerCertificate, 'server_certificate'
156
+ autoload :ServerCertificateCollection, 'server_certificate_collection'
157
+ autoload :SigningCertificate, 'signing_certificate'
158
+ autoload :SigningCertificateCollection, 'signing_certificate_collection'
159
+ autoload :User, 'user'
160
+ autoload :UserCollection, 'user_collection'
161
+ autoload :UserGroupCollection, 'user_group_collection'
162
+ autoload :UserPolicy, 'user_policy'
163
+ autoload :UserPolicyCollection, 'user_policy_collection'
164
+ autoload :VirtualMfaDeviceCollection, 'virtual_mfa_device_collection'
165
+ autoload :VirtualMfaDevice, 'virtual_mfa_device'
166
+ end
167
+
168
+ include Core::ServiceInterface
169
+
170
+ # Returns a collection that represents all AWS users for this account:
171
+ #
172
+ # @example Getting a user by name
173
+ #
174
+ # user = iam.users['username']
175
+ #
176
+ # @example Enumerating users
177
+ #
178
+ # iam.users.each do |user|
179
+ # puts user.name
180
+ # end
181
+ #
182
+ # @return [UserCollection] Returns a collection that represents all of
183
+ # the IAM users for this AWS account.
184
+ def users
185
+ UserCollection.new(:config => config)
186
+ end
187
+
188
+ # Returns a collection that represents all AWS groups for this account:
189
+ #
190
+ # @example Getting a group by name
191
+ #
192
+ # group = iam.groups['groupname']
193
+ #
194
+ # @example Enumerating groups
195
+ #
196
+ # iam.groups.each do |group|
197
+ # puts group.name
198
+ # end
199
+ #
200
+ # @return [GroupCollection] Returns a collection that represents all of
201
+ # the IAM groups for this AWS account.
202
+ def groups
203
+ GroupCollection.new(:config => config)
204
+ end
205
+
206
+ # Returns a collection that represents the access keys for this
207
+ # AWS account.
208
+ #
209
+ # iam = AWS::IAM.new
210
+ # iam.access_keys.each do |access_key|
211
+ # puts access_key.id
212
+ # end
213
+ #
214
+ # @return [AccessKeyCollection] Returns a collection that represents all
215
+ # access keys for this AWS account.
216
+ def access_keys
217
+ AccessKeyCollection.new(:config => config)
218
+ end
219
+
220
+ # Returns a collection that represents the signing certificates
221
+ # for this AWS account.
222
+ #
223
+ # iam = AWS::IAM.new
224
+ # iam.signing_certificates.each do |cert|
225
+ # # ...
226
+ # end
227
+ #
228
+ # If you need to access the signing certificates of a specific user,
229
+ # see {User#signing_certificates}.
230
+ #
231
+ # @return [SigningCertificateCollection] Returns a collection that
232
+ # represents signing certificates for this AWS account.
233
+ def signing_certificates
234
+ SigningCertificateCollection.new(:config => config)
235
+ end
236
+
237
+ # @note Currently, Amazon Elastic Load Balancing is the only
238
+ # service to support the use of server certificates with
239
+ # IAM. Using server certificates with Amazon Elastic Load
240
+ # Balancing is described in the
241
+ # {http://docs.amazonwebservices.com/ElasticLoadBalancing/latest/DeveloperGuide/US_SettingUpLoadBalancerHTTPSIntegrated.html
242
+ # Amazon Elastic Load Balancing} Developer Guide.
243
+ #
244
+ # Returns a collection that represents the server certificates
245
+ # for this AWS account.
246
+ #
247
+ # iam = AWS::IAM.new
248
+ # iam.server_certificates.each do |cert|
249
+ # # ...
250
+ # end
251
+ #
252
+ # @return [ServerCertificateCollection] Returns a collection that
253
+ # represents server certificates for this AWS account.
254
+ def server_certificates
255
+ ServerCertificateCollection.new(:config => config)
256
+ end
257
+
258
+ # Returns a collection that represents the virtual MFA devices
259
+ # that are not assigned to an IAM user.
260
+ #
261
+ # iam = AWS::IAM.new
262
+ # iam.virtual_mfa_devices.each do |cert|
263
+ # # ...
264
+ # end
265
+ #
266
+ # @return [VirtualMfaDeviceCollection] Returns a collection that
267
+ # represents the virtual MFA devices that are not assigned to an
268
+ # IAM user.
269
+ def virtual_mfa_devices
270
+ VirtualMfaDeviceCollection.new(:config => config)
271
+ end
272
+
273
+ # Sets the account alias for this AWS account.
274
+ # @param [String] account_alias
275
+ # @return [String] Returns the account alias passed.
276
+ def account_alias= account_alias
277
+ account_alias.nil? ?
278
+ remove_account_alias :
279
+ account_aliases.create(account_alias)
280
+ end
281
+
282
+ # @return [String,nil] Returns the account alias. If this account has
283
+ # no alias, then +nil+ is returned.
284
+ def account_alias
285
+ account_aliases.first
286
+ end
287
+
288
+ # Deletes the account alias (if one exists).
289
+ # @return [nil]
290
+ def remove_account_alias
291
+ account_aliases.each do |account_alias|
292
+ account_aliases.delete(account_alias)
293
+ end
294
+ nil
295
+ end
296
+
297
+ # @private
298
+ def account_aliases
299
+ AccountAliasCollection.new(:config => config)
300
+ end
301
+
302
+ # Retrieves account level information about account entity usage
303
+ # and IAM quotas. The returned hash contains the following keys:
304
+ #
305
+ # [+:users+] Number of users for the AWS account
306
+ #
307
+ # [+:users_quota+] Maximum users allowed for the AWS account
308
+ #
309
+ # [+:groups+] Number of Groups for the AWS account
310
+ #
311
+ # [+:groups_quota+] Maximum Groups allowed for the AWS account
312
+ #
313
+ # [+:server_certificates+] Number of Server Certificates for the
314
+ # AWS account
315
+ #
316
+ # [+:server_certificates_quota+] Maximum Server Certificates
317
+ # allowed for the AWS account
318
+ #
319
+ # [+:user_policy_size_quota+] Maximum allowed size for user policy
320
+ # documents (in kilobytes)
321
+ #
322
+ # [+:group_policy_size_quota+] Maximum allowed size for Group
323
+ # policy documents (in kilobyes)
324
+ #
325
+ # [+:groups_per_user_quota+] Maximum number of groups a user can
326
+ # belong to
327
+ #
328
+ # [+:signing_certificates_per_user_quota+] Maximum number of X509
329
+ # certificates allowed
330
+ # for a user
331
+ #
332
+ # [+:access_keys_per_user_quota+] Maximum number of access keys
333
+ # that can be created per user
334
+ #
335
+ # @return [Hash]
336
+ def account_summary
337
+ client.get_account_summary.data[:summary_map].inject({}) do |h,(k,v)|
338
+ h.merge(Core::Inflection.ruby_name(k).to_sym => v)
339
+ end
340
+ end
341
+
342
+ # Changes the web password associated with the current IAM user.
343
+ # In order to change your password you must configure the sdk
344
+ # to use your IAM user credentials.
345
+ #
346
+ #
347
+ # To change a user password, you must be using credentials from the
348
+ # user you want to change:
349
+ #
350
+ # # pass in a key pair generated for the user you want to change
351
+ # # the password for
352
+ # iam = AWS::IAM.new(:access_key_id => '...', :secret_access_key => '...)
353
+ # iam.change_password('old-password', 'new-password')
354
+ #
355
+ # @param [String] old_password
356
+ #
357
+ # @param [String] new_password
358
+ #
359
+ # @return [nil]
360
+ #
361
+ def change_password old_password, new_password
362
+ client_opts = {}
363
+ client_opts[:old_password] = old_password
364
+ client_opts[:new_password] = new_password
365
+ client.change_password(client_opts)
366
+ nil
367
+ end
368
+
369
+ # Updates the account password policy for all IAM accounts.
370
+ # @param [Hash] options
371
+ # @option options [Integer] :minimum_password_length
372
+ # @option options [Boolean] :require_symbols
373
+ # @option options [Boolean] :require_numbers
374
+ # @option options [Boolean] :require_uppercase_characters
375
+ # @option options [Boolean] :require_lowercase_characters
376
+ # @return [nil]
377
+ def update_account_password_policy options = {}
378
+ client.update_account_password_policy(options)
379
+ nil
380
+ end
381
+
382
+ # Removes the account password policy.
383
+ # @return [nil]
384
+ def delete_account_password_policy
385
+ client.delete_account_password_policy
386
+ nil
387
+ end
388
+
389
+ # Returns the account password policy details as a hash. This method
390
+ # returns nil if no password policy has been set for this account.
391
+ #
392
+ # # set the policy
393
+ # iam.update_account_password_policy :minimum_password_length => 8
394
+ #
395
+ # iam.account_password_policy
396
+ # #=> {:require_symbols=>false, :require_numbers=>false, :require_uppercase_characters=>false, :require_lowercase_characters=>false, :minimum_password_length=>8}
397
+ #
398
+ # @return [Hash,nil]
399
+ def account_password_policy
400
+ begin
401
+ policy = client.get_account_password_policy.password_policy
402
+ [
403
+ :minimum_password_length,
404
+ :require_symbols?,
405
+ :require_numbers?,
406
+ :require_uppercase_characters?,
407
+ :require_lowercase_characters?,
408
+ ].inject({}) do |hash,method|
409
+ key = method.to_s.sub(/\?/, '').to_sym
410
+ hash.merge(key => policy.send(method))
411
+ end
412
+ rescue Errors::NoSuchEntity
413
+ nil
414
+ end
415
+ end
416
+
417
+ end
418
+ end