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,157 @@
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 EC2
16
+
17
+ # @attr_reader [String,nil] instance_id Returns the instance id if
18
+ # assigned to an EC2 instance, nil otherwise.
19
+ #
20
+ # @attr_reader [String,nil] allocation_id
21
+ # The ID representing the allocation of the address for use with Amazon
22
+ # VPC.
23
+ #
24
+ # @attr_reader [String] Indicates whether this elastic ip address is for
25
+ # EC2 instances ('standard') or VPC instances ('vpc').
26
+ #
27
+ # @attr_reader [String,nil] The ID of the association between this elastic
28
+ # ip address and an EC2 VPC instance (VPC only).
29
+ #
30
+ # @attr_reader [String,nil] The ID of the network interface (VPC only).
31
+ #
32
+ # @attr_reader [String,nil] network_interface_owner_id
33
+ # The ID of the AWS account that owns the network interface (VPC only).
34
+ #
35
+ class ElasticIp < Resource
36
+
37
+ def initialize public_ip, options = {}
38
+ @public_ip = public_ip
39
+ super
40
+ end
41
+
42
+ # @return [String] The public IP address.
43
+ attr_reader :public_ip
44
+
45
+ alias_method :ip_address, :public_ip
46
+
47
+ attribute :instance_id
48
+
49
+ ## vpc related attributes
50
+
51
+ attribute :allocation_id, :static => true
52
+
53
+ attribute :domain, :static => true
54
+
55
+ attribute :association_id
56
+
57
+ attribute :network_interface_id
58
+
59
+ attribute :network_interface_owner_id
60
+
61
+ populates_from(:describe_addresses) do |resp|
62
+ resp.address_index[public_ip]
63
+ end
64
+
65
+ # @return [Boolean] Returns true if this is an EC2 VPC Elastic IP.
66
+ def vpc?
67
+ domain == 'vpc'
68
+ end
69
+
70
+ # @return [Boolean] Returns true if this IP address is attached to
71
+ # an EC2 instance.
72
+ def associated?
73
+ !!instance_id
74
+ end
75
+
76
+ alias_method :attached?, :associated?
77
+
78
+ # @return [Instance,nil] If associated, returns the {Instance} this
79
+ # elastic IP address is associated to, nil otherwise.
80
+ def instance
81
+ if instance_id = self.instance_id
82
+ Instance.new(instance_id, :config => config)
83
+ end
84
+ end
85
+
86
+ # Releases the elastic IP address.
87
+ #
88
+ # (For non-VPC elastic ips) Releasing an IP address automatically
89
+ # disassociates it from any instance it's associated with.
90
+ #
91
+ # @return [nil]
92
+ def delete
93
+ if vpc?
94
+ client.release_address(:allocation_id => allocation_id)
95
+ else
96
+ client.release_address(:public_ip => public_ip)
97
+ end
98
+ nil
99
+ end
100
+ alias_method :release, :delete
101
+
102
+ # Disassociates this elastic IP address from an EC2 instance.
103
+ # Raises an exception if this elastic IP is not currently
104
+ # associated with an instance.
105
+ # @return [nil]
106
+ def disassociate
107
+ if vpc?
108
+ client.disassociate_address(:association_id => association_id)
109
+ else
110
+ client.disassociate_address(:public_ip => public_ip)
111
+ end
112
+ nil
113
+ end
114
+
115
+ # @return [Boolean] Returns true the elastic ip address exists in
116
+ # your account.
117
+ def exists?
118
+ begin
119
+ get_resource
120
+ true
121
+ rescue Errors::InvalidAddress::NotFound
122
+ false
123
+ end
124
+ end
125
+
126
+ # @return [String] Returns the public IP address
127
+ def to_s
128
+ public_ip.to_s
129
+ end
130
+
131
+ # @private
132
+ protected
133
+ def resource_id_method
134
+ :public_ip
135
+ end
136
+
137
+ # @private
138
+ protected
139
+ def response_id_method
140
+ :public_ip
141
+ end
142
+
143
+ # @private
144
+ protected
145
+ def describe_call_name
146
+ :describe_addresses
147
+ end
148
+
149
+ # @private
150
+ protected
151
+ def self.describe_call_name
152
+ :describe_addresses
153
+ end
154
+
155
+ end
156
+ end
157
+ end
@@ -0,0 +1,97 @@
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 EC2
16
+ class ElasticIpCollection < Collection
17
+
18
+ # @param [Hash] options
19
+ #
20
+ # @option options [Boolean] :vpc (false) When true, the elastic ip
21
+ # address will be allocated to your VPC.
22
+ #
23
+ # @return [ElasticIp]
24
+ #
25
+ def create options = {}
26
+
27
+ client_opts = {}
28
+ client_opts[:domain] = 'vpc' if options[:vpc]
29
+
30
+ response = client.allocate_address(client_opts)
31
+
32
+ ElasticIp.new(response.public_ip, :config => config)
33
+
34
+ end
35
+
36
+ alias_method :allocate, :create
37
+
38
+ # @param [String] public_ip The public IP address of an elastic ip.
39
+ # @return [ElasticIp] The elastic IP with the given address.
40
+ def [] public_ip
41
+ super
42
+ end
43
+
44
+ # Specify one or more criteria to filter elastic IP addresses by.
45
+ # A subsequent call to #each will limit the resutls returned
46
+ # by provided filters.
47
+ #
48
+ # * Chain multiple calls of #filter together to AND multiple conditions
49
+ # together.
50
+ #
51
+ # * Supply multiple values to a singler #filter call to OR those
52
+ # value conditions together.
53
+ #
54
+ # * '*' matches one or more characters and '?' matches any one
55
+ # character.
56
+ #
57
+ # === Valid Filters
58
+ #
59
+ # * domain - Whether the address is a EC2 address, or a VPC address.
60
+ # Valid values include 'standard' and 'vpc'
61
+ # * instance-id - Instance the address is associated with (if any).
62
+ # * public-ip - The Elastic IP address.
63
+ # * allocation-id - Allocation ID for the address. For VPC addresses
64
+ # only.
65
+ # * association-id - Association ID for the address. For VPC addresses
66
+ # only.
67
+ #
68
+ # @return [ElasticIpCollection] A new collection that represents
69
+ # a subset of the elastic IP addresses associated with this account.
70
+
71
+ # Yields once for each elastic IP address.
72
+ #
73
+ # @yield [elastic_ip]
74
+ # @yieldparam [ElasticIp] elastic_ip
75
+ def each &block
76
+ response = filtered_request(:describe_addresses)
77
+ response.addresses_set.each do |address|
78
+
79
+ elastic_ip = ElasticIp.new_from(
80
+ :describe_addresses,
81
+ address,
82
+ address.public_ip,
83
+ :config => config)
84
+
85
+ yield(elastic_ip)
86
+
87
+ end
88
+ end
89
+
90
+ protected
91
+ def member_class
92
+ ElasticIp
93
+ end
94
+
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,32 @@
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 EC2
16
+ module Errors
17
+
18
+ # @private
19
+ GRAMMAR = Core::XML::Grammar.customize do
20
+ element "Errors" do
21
+ ignore
22
+ element "Error" do
23
+ ignore
24
+ end
25
+ end
26
+ end
27
+
28
+ extend Core::LazyErrorClasses
29
+
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,90 @@
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 EC2
16
+
17
+ # @private
18
+ module FilteredCollection
19
+
20
+ def initialize options = {}
21
+ @filters = options[:filters] || []
22
+ super
23
+ end
24
+
25
+ # Specify one or more criteria to filter elastic IP addresses by.
26
+ # A subsequent call to #each will limit the results returned
27
+ # by provided filters.
28
+ #
29
+ # * Chain multiple calls of #filter together to AND multiple conditions
30
+ # together.
31
+ #
32
+ # * Supply multiple values to a singler #filter call to OR those
33
+ # value conditions together.
34
+ #
35
+ # * '*' matches one or more characters and '?' matches any one
36
+ # character.
37
+ #
38
+ def filter filter_name, *values
39
+ filters = @filters.dup
40
+ filters << { :name => filter_name, :values => values.flatten }
41
+ collection_with(:filters => filters)
42
+ end
43
+
44
+ # @private
45
+ def filtered_request client_method, options = {}, &block
46
+ options[:filters] = @filters unless @filters.empty?
47
+ client.send(client_method, options)
48
+ end
49
+
50
+ protected
51
+ def vpc_id_option options
52
+ vpc_id = options[:vpc]
53
+ vpc_id ||= options[:vpc_id]
54
+ vpc_id ||= filter_value_for('vpc-id')
55
+ vpc_id = vpc_id.id if vpc_id.is_a?(VPC)
56
+ vpc_id
57
+ end
58
+
59
+ protected
60
+ def subnet_id_option options
61
+ subnet_id = options.delete(:subnet)
62
+ subnet_id ||= options[:subnet_id]
63
+ subnet_id ||= filter_value_for('subnet-id')
64
+ subnet_id = subnet_id.id if subnet_id.is_a?(Subnet)
65
+ subnet_id
66
+ end
67
+
68
+ protected
69
+ def filter_value_for filter_name
70
+ @filters.each do |filter|
71
+ return filter[:values].first if filter[:name] == filter_name
72
+ end
73
+ nil
74
+ end
75
+
76
+ # @private
77
+ protected
78
+ def preserved_options
79
+ { :config => config, :filters => @filters }
80
+ end
81
+
82
+ # @private
83
+ protected
84
+ def collection_with(options = {})
85
+ self.class.new(preserved_options.merge(options))
86
+ end
87
+
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,44 @@
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 EC2
16
+
17
+ # Helper methods for managing EC2 resource permissions. See
18
+ # {Image} and {Snapshot} for usage examples.
19
+ module HasPermissions
20
+
21
+ # (see PermissionCollection#public?)
22
+ def public?
23
+ permissions.public?
24
+ end
25
+
26
+ # (see PermissionCollection#private?)
27
+ def private?
28
+ permissions.private?
29
+ end
30
+
31
+ # (see PermissionCollection#public=)
32
+ def public=(value)
33
+ permissions.public = value
34
+ end
35
+
36
+ # @return [PermissionCollection] An object to manage the
37
+ # collection of permissions for this resource.
38
+ def permissions
39
+ PermissionCollection.new(self, :config => config)
40
+ end
41
+
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,254 @@
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 EC2
16
+
17
+ # Represents an Amazon Machine Image (AMI).
18
+ #
19
+ # @attr_reader [String] name The name of the AMI that was provided
20
+ # during image creation.
21
+ #
22
+ # @attr [String] description A description of the image.
23
+ #
24
+ # @attr_reader [String] location The location of the AMI.
25
+ #
26
+ # @attr_reader [Symbol] state Current state of the AMI. If the
27
+ # state is +:available+, the image is successfully registered
28
+ # and available for launching. Valid values:
29
+ # * +:available+
30
+ # * +:pending+
31
+ # * +:failed+
32
+ #
33
+ # @attr_reader [String] owner_id The AWS account ID of the image owner.
34
+ #
35
+ # @attr_reader [String] owner_alias The AWS account alias (e.g.,
36
+ # +"amazon"+) or AWS account ID that owns the AMI.
37
+ #
38
+ # @attr_reader [Symbol] architecture The architecture of the
39
+ # image (e.g. +:i386+).
40
+ #
41
+ # @attr_reader [Symbol] type The type of image. Valid values are:
42
+ # * +:machine+
43
+ # * +:kernel+
44
+ # * +:ramdisk+
45
+ #
46
+ # @attr_reader [String] kernel_id The kernel ID associated with
47
+ # the image, if any. Only applicable for machine images.
48
+ #
49
+ # @attr_reader [String] ramdisk_id The RAM disk ID associated
50
+ # with the image, if any. Only applicable for machine images.
51
+ #
52
+ # @attr_reader [String] platform Value is +windows+ for Windows
53
+ # AMIs; otherwise blank.
54
+ #
55
+ # @attr_reader [Object] state_reason The reason for the image's
56
+ # most recent state change. The return value is an object with
57
+ # the following methods:
58
+ #
59
+ # [code] Reason code for the state change.
60
+ #
61
+ # [message] A textual description of the state change.
62
+ #
63
+ # @attr_reader [Symbol] root_device_type The root device type
64
+ # used by the AMI. Possible values:
65
+ # * +:ebs+
66
+ # * +:instance_store+
67
+ #
68
+ # @attr_reader [String] root_device_name The root device name
69
+ # (e.g., +"/dev/sda1"+, or +"xvda"+).
70
+ #
71
+ # @attr_reader [Symbol] virtualization_type The type of
72
+ # virtualization of the AMI. Possible values:
73
+ # * +:paravirtual+
74
+ # * +:hvm+
75
+ #
76
+ # @attr_reader [Symbol] hypervisor The image's hypervisor type.
77
+ # Possible values are:
78
+ # * +:ovm+
79
+ # * +:xen+
80
+ #
81
+ # @attr_reader [Array<String>] product_codes Returns an array of
82
+ # product codes attached to this instance.
83
+ #
84
+ class Image < Resource
85
+
86
+ include TaggedItem
87
+ include HasPermissions
88
+
89
+ # @private
90
+ def initialize id, options = {}
91
+ @id = id
92
+ super
93
+ end
94
+
95
+ # @return [String] The ID of the AMI.
96
+ attr_reader :id
97
+
98
+ attribute :name, :static => true
99
+
100
+ mutable_attribute :description
101
+
102
+ attribute :location, :as => :image_location, :static => true
103
+
104
+ attribute :state, :as => :image_state, :to_sym => true
105
+
106
+ attribute :owner_id, :as => :image_owner_id, :static => true
107
+
108
+ attribute :owner_alias, :as => :image_owner_alias, :static => true
109
+
110
+ attribute :architecture, :to_sym => true, :static => true
111
+
112
+ attribute :type, :as => :image_type, :to_sym => true, :static => true
113
+
114
+ attribute :kernel_id, :static => true
115
+
116
+ attribute :ramdisk_id, :static => true
117
+
118
+ attribute :platform, :static => true
119
+
120
+ attribute :state_reason
121
+
122
+ attribute :root_device_type, :to_sym => true, :static => true
123
+
124
+ attribute :root_device_name, :static => true
125
+
126
+ attribute :virtualization_type, :to_sym => true, :static => true
127
+
128
+ attribute :hypervisor, :to_sym => true, :static => true
129
+
130
+ attribute :block_device_mapping
131
+
132
+ protected :block_device_mapping
133
+
134
+ attribute :product_codes, :static => true do
135
+ translates_output do |list|
136
+ (list || []).collect{|item| item.product_code }
137
+ end
138
+ end
139
+
140
+ populates_from(:describe_images) do |resp|
141
+ resp.image_index[id]
142
+ end
143
+
144
+ alias_method :launch_permissions, :permissions
145
+
146
+ # @return [Hash] Returns a hash of block
147
+ # device mappings for the image. In each entry, the key is
148
+ # the device name (e.g. +"/dev/sda1"+) and the value is an
149
+ # object with the following methods that return information
150
+ # about the block device:
151
+ #
152
+ # [snapshot_id] The ID of the snapshot that will be used to
153
+ # create this device (may be nil).
154
+ #
155
+ # [volume_size] The size of the volume, in GiBs.
156
+ #
157
+ # [delete_on_termination] True if the Amazon EBS volume is
158
+ # deleted on instance termination.
159
+ def block_device_mappings
160
+ (block_device_mapping || []).inject({}) do |h,mapping|
161
+ h[mapping.device_name] = mapping.ebs
162
+ h
163
+ end
164
+ end
165
+
166
+ # Deregisters this AMI. Once deregistered, the AMI cannot be
167
+ # used to launch new instances.
168
+ # @return [nil]
169
+ def deregister
170
+ client.deregister_image(:image_id => id)
171
+ nil
172
+ end
173
+
174
+ alias_method :delete, :deregister
175
+
176
+ # Runs a single instance of this image.
177
+ #
178
+ # @param [Hash] options
179
+ # @option (see InstanceCollection#create)
180
+ # @return (see InstanceCollection#create)
181
+ def run_instance options = {}
182
+ instances = InstanceCollection.new(:config => config)
183
+ instances.create(options.merge(:image => self))
184
+ end
185
+
186
+ # Runs multiple instances of this image.
187
+ #
188
+ # @param [Integer] count How many instances to request. You can specify
189
+ # this either as an integer or as a Range, to indicate the
190
+ # minimum and maximum number of instances to run. Note that
191
+ # for a new account you can request at most 20 instances at
192
+ # a time.
193
+ # @param [Hash] options
194
+ # @option (see InstanceCollection#create)
195
+ # @return [Array<Instance>] An array containing an {Instance} object for
196
+ # each instance that was run.
197
+ def run_instances count, options = {}
198
+ run_instance(options.merge(:count => count))
199
+ end
200
+
201
+ # @return [Boolean] Returns +true+ if the AMI exists (is returned by
202
+ # the DescribeImages action).
203
+ def exists?
204
+ resp = client.describe_images(:filters => [
205
+ { :name => "image-id", :values => [id] }
206
+ ])
207
+ !resp.images_set.empty?
208
+ end
209
+
210
+ # @return [Image] The kernel associated with the image, if
211
+ # any. Only applicable for machine images.
212
+ def kernel
213
+ if id = kernel_id
214
+ Image.new(id, :config => config)
215
+ end
216
+ end
217
+
218
+ # @return [Image] The RAM disk associated with the image, if
219
+ # any. Only applicable for machine images.
220
+ def ramdisk
221
+ if id = ramdisk_id
222
+ Image.new(id, :config => config)
223
+ end
224
+ end
225
+
226
+ # Adds one or more product codes:
227
+ #
228
+ # image.add_product_codes 'ABCXYZ', 'MNOPQR'
229
+ #
230
+ # You can also pass an array of product codes:
231
+ #
232
+ # image.add_product_codes ['ABCXYZ', 'MNOPQR']
233
+ #
234
+ # @param [Array<String>] product_codes
235
+ #
236
+ # @return [nil]
237
+ #
238
+ def add_product_codes *product_codes
239
+ client_opts = {}
240
+ client_opts[:image_id] = self.id
241
+ client_opts[:product_codes] = product_codes.flatten
242
+ client.modify_image_attribute(client_opts)
243
+ nil
244
+ end
245
+
246
+ # @private
247
+ def __permissions_attribute__
248
+ "launchPermission"
249
+ end
250
+
251
+ end
252
+
253
+ end
254
+ end