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.
- data/lib/aws-sdk.rb +14 -0
- data/lib/aws.rb +49 -0
- data/lib/aws/api_config/AutoScaling-2011-01-01.yml +791 -0
- data/lib/aws/api_config/CloudFormation-2010-05-15.yml +303 -0
- data/lib/aws/api_config/DynamoDB-2011-12-05.yml +540 -0
- data/lib/aws/api_config/EC2-2011-12-15.yml +3638 -0
- data/lib/aws/api_config/EC2-2012-04-01.yml +3739 -0
- data/lib/aws/api_config/ELB-2011-08-15.yml +512 -0
- data/lib/aws/api_config/IAM-2010-05-08.yml +1221 -0
- data/lib/aws/api_config/SNS-2010-03-31.yml +248 -0
- data/lib/aws/api_config/SQS-2011-10-01.yml +314 -0
- data/lib/aws/api_config/STS-2011-06-15.yml +54 -0
- data/lib/aws/api_config/SimpleDB-2009-04-15.yml +305 -0
- data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +231 -0
- data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +721 -0
- data/lib/aws/auto_scaling.rb +162 -0
- data/lib/aws/auto_scaling/activity.rb +102 -0
- data/lib/aws/auto_scaling/activity_collection.rb +82 -0
- data/lib/aws/auto_scaling/client.rb +765 -0
- data/lib/aws/auto_scaling/config.rb +18 -0
- data/lib/aws/auto_scaling/errors.rb +22 -0
- data/lib/aws/auto_scaling/group.rb +420 -0
- data/lib/aws/auto_scaling/group_collection.rb +96 -0
- data/lib/aws/auto_scaling/group_options.rb +146 -0
- data/lib/aws/auto_scaling/instance.rb +192 -0
- data/lib/aws/auto_scaling/instance_collection.rb +63 -0
- data/lib/aws/auto_scaling/launch_configuration.rb +150 -0
- data/lib/aws/auto_scaling/launch_configuration_collection.rb +144 -0
- data/lib/aws/auto_scaling/notification_configuration.rb +89 -0
- data/lib/aws/auto_scaling/notification_configuration_collection.rb +184 -0
- data/lib/aws/auto_scaling/request.rb +23 -0
- data/lib/aws/auto_scaling/scaling_policy.rb +125 -0
- data/lib/aws/auto_scaling/scaling_policy_collection.rb +72 -0
- data/lib/aws/auto_scaling/scaling_policy_options.rb +61 -0
- data/lib/aws/auto_scaling/scheduled_action.rb +145 -0
- data/lib/aws/auto_scaling/scheduled_action_collection.rb +195 -0
- data/lib/aws/auto_scaling/tag.rb +59 -0
- data/lib/aws/auto_scaling/tag_collection.rb +112 -0
- data/lib/aws/cloud_formation.rb +270 -0
- data/lib/aws/cloud_formation/client.rb +339 -0
- data/lib/aws/cloud_formation/config.rb +18 -0
- data/lib/aws/cloud_formation/errors.rb +22 -0
- data/lib/aws/cloud_formation/request.rb +29 -0
- data/lib/aws/cloud_formation/stack.rb +256 -0
- data/lib/aws/cloud_formation/stack_collection.rb +206 -0
- data/lib/aws/cloud_formation/stack_event.rb +75 -0
- data/lib/aws/cloud_formation/stack_event_collection.rb +47 -0
- data/lib/aws/cloud_formation/stack_options.rb +72 -0
- data/lib/aws/cloud_formation/stack_output.rb +53 -0
- data/lib/aws/cloud_formation/stack_resource.rb +117 -0
- data/lib/aws/cloud_formation/stack_resource_collection.rb +84 -0
- data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +72 -0
- data/lib/aws/cloud_formation/stack_summary.rb +71 -0
- data/lib/aws/cloud_formation/stack_summary_collection.rb +127 -0
- data/lib/aws/core.rb +474 -0
- data/lib/aws/core/async_handle.rb +90 -0
- data/lib/aws/core/autoloader.rb +64 -0
- data/lib/aws/core/cacheable.rb +78 -0
- data/lib/aws/core/client.rb +541 -0
- data/lib/aws/core/client/query_json.rb +110 -0
- data/lib/aws/core/client/query_xml.rb +122 -0
- data/lib/aws/core/collection.rb +234 -0
- data/lib/aws/core/collection/limitable.rb +99 -0
- data/lib/aws/core/collection/simple.rb +90 -0
- data/lib/aws/core/configuration.rb +445 -0
- data/lib/aws/core/data.rb +242 -0
- data/lib/aws/core/default_signer.rb +67 -0
- data/lib/aws/core/http/curb_handler.rb +136 -0
- data/lib/aws/core/http/handler.rb +77 -0
- data/lib/aws/core/http/httparty_handler.rb +114 -0
- data/lib/aws/core/http/net_http_handler.rb +85 -0
- data/lib/aws/core/http/request.rb +250 -0
- data/lib/aws/core/http/response.rb +74 -0
- data/lib/aws/core/indifferent_hash.rb +88 -0
- data/lib/aws/core/inflection.rb +47 -0
- data/lib/aws/core/lazy_error_classes.rb +90 -0
- data/lib/aws/core/log_formatter.rb +454 -0
- data/lib/aws/core/meta_utils.rb +45 -0
- data/lib/aws/core/model.rb +57 -0
- data/lib/aws/core/naming.rb +30 -0
- data/lib/aws/core/option_grammar.rb +700 -0
- data/lib/aws/core/page_result.rb +73 -0
- data/lib/aws/core/policy.rb +916 -0
- data/lib/aws/core/resource.rb +408 -0
- data/lib/aws/core/resource_cache.rb +40 -0
- data/lib/aws/core/response.rb +202 -0
- data/lib/aws/core/response_cache.rb +50 -0
- data/lib/aws/core/service_interface.rb +61 -0
- data/lib/aws/core/session_signer.rb +90 -0
- data/lib/aws/core/signature/version_2.rb +42 -0
- data/lib/aws/core/signature/version_3.rb +73 -0
- data/lib/aws/core/signature/version_3_http.rb +72 -0
- data/lib/aws/core/signature/version_4.rb +138 -0
- data/lib/aws/core/uri_escape.rb +42 -0
- data/lib/aws/core/xml/frame.rb +242 -0
- data/lib/aws/core/xml/frame_stack.rb +85 -0
- data/lib/aws/core/xml/grammar.rb +299 -0
- data/lib/aws/core/xml/parser.rb +70 -0
- data/lib/aws/core/xml/root_frame.rb +65 -0
- data/lib/aws/core/xml/sax_handlers/libxml.rb +47 -0
- data/lib/aws/core/xml/sax_handlers/nokogiri.rb +55 -0
- data/lib/aws/core/xml/sax_handlers/ox.rb +41 -0
- data/lib/aws/core/xml/sax_handlers/rexml.rb +43 -0
- data/lib/aws/core/xml/stub.rb +123 -0
- data/lib/aws/dynamo_db.rb +213 -0
- data/lib/aws/dynamo_db/attribute_collection.rb +460 -0
- data/lib/aws/dynamo_db/batch_get.rb +206 -0
- data/lib/aws/dynamo_db/batch_write.rb +251 -0
- data/lib/aws/dynamo_db/client.rb +888 -0
- data/lib/aws/dynamo_db/config.rb +20 -0
- data/lib/aws/dynamo_db/errors.rb +20 -0
- data/lib/aws/dynamo_db/expectations.rb +40 -0
- data/lib/aws/dynamo_db/item.rb +130 -0
- data/lib/aws/dynamo_db/item_collection.rb +852 -0
- data/lib/aws/dynamo_db/item_data.rb +31 -0
- data/lib/aws/dynamo_db/keys.rb +41 -0
- data/lib/aws/dynamo_db/primary_key_element.rb +47 -0
- data/lib/aws/dynamo_db/request.rb +28 -0
- data/lib/aws/dynamo_db/resource.rb +33 -0
- data/lib/aws/dynamo_db/table.rb +489 -0
- data/lib/aws/dynamo_db/table_collection.rb +165 -0
- data/lib/aws/dynamo_db/types.rb +86 -0
- data/lib/aws/ec2.rb +431 -0
- data/lib/aws/ec2/attachment.rb +140 -0
- data/lib/aws/ec2/attachment_collection.rb +54 -0
- data/lib/aws/ec2/availability_zone.rb +87 -0
- data/lib/aws/ec2/availability_zone_collection.rb +43 -0
- data/lib/aws/ec2/block_device_mappings.rb +53 -0
- data/lib/aws/ec2/client.rb +4121 -0
- data/lib/aws/ec2/collection.rb +36 -0
- data/lib/aws/ec2/config.rb +18 -0
- data/lib/aws/ec2/config_transform.rb +63 -0
- data/lib/aws/ec2/customer_gateway.rb +90 -0
- data/lib/aws/ec2/customer_gateway_collection.rb +73 -0
- data/lib/aws/ec2/dhcp_options.rb +106 -0
- data/lib/aws/ec2/dhcp_options_collection.rb +87 -0
- data/lib/aws/ec2/elastic_ip.rb +157 -0
- data/lib/aws/ec2/elastic_ip_collection.rb +97 -0
- data/lib/aws/ec2/errors.rb +32 -0
- data/lib/aws/ec2/filtered_collection.rb +90 -0
- data/lib/aws/ec2/has_permissions.rb +44 -0
- data/lib/aws/ec2/image.rb +254 -0
- data/lib/aws/ec2/image_collection.rb +228 -0
- data/lib/aws/ec2/instance.rb +669 -0
- data/lib/aws/ec2/instance_collection.rb +346 -0
- data/lib/aws/ec2/internet_gateway.rb +122 -0
- data/lib/aws/ec2/internet_gateway/attachment.rb +78 -0
- data/lib/aws/ec2/internet_gateway_collection.rb +54 -0
- data/lib/aws/ec2/key_pair.rb +82 -0
- data/lib/aws/ec2/key_pair_collection.rb +99 -0
- data/lib/aws/ec2/network_acl.rb +256 -0
- data/lib/aws/ec2/network_acl/association.rb +56 -0
- data/lib/aws/ec2/network_acl/entry.rb +147 -0
- data/lib/aws/ec2/network_acl_collection.rb +64 -0
- data/lib/aws/ec2/network_interface.rb +228 -0
- data/lib/aws/ec2/network_interface/attachment.rb +100 -0
- data/lib/aws/ec2/network_interface_collection.rb +103 -0
- data/lib/aws/ec2/permission_collection.rb +174 -0
- data/lib/aws/ec2/region.rb +97 -0
- data/lib/aws/ec2/region_collection.rb +51 -0
- data/lib/aws/ec2/request.rb +22 -0
- data/lib/aws/ec2/reserved_instances.rb +53 -0
- data/lib/aws/ec2/reserved_instances_collection.rb +40 -0
- data/lib/aws/ec2/reserved_instances_offering.rb +58 -0
- data/lib/aws/ec2/reserved_instances_offering_collection.rb +39 -0
- data/lib/aws/ec2/resource.rb +161 -0
- data/lib/aws/ec2/resource_tag_collection.rb +211 -0
- data/lib/aws/ec2/route_table.rb +205 -0
- data/lib/aws/ec2/route_table/association.rb +119 -0
- data/lib/aws/ec2/route_table/route.rb +113 -0
- data/lib/aws/ec2/route_table_collection.rb +72 -0
- data/lib/aws/ec2/security_group.rb +458 -0
- data/lib/aws/ec2/security_group/egress_ip_permission_collection.rb +63 -0
- data/lib/aws/ec2/security_group/ingress_ip_permission_collection.rb +61 -0
- data/lib/aws/ec2/security_group/ip_permission.rb +128 -0
- data/lib/aws/ec2/security_group_collection.rb +135 -0
- data/lib/aws/ec2/snapshot.rb +143 -0
- data/lib/aws/ec2/snapshot_collection.rb +131 -0
- data/lib/aws/ec2/subnet.rb +161 -0
- data/lib/aws/ec2/subnet_collection.rb +115 -0
- data/lib/aws/ec2/tag.rb +81 -0
- data/lib/aws/ec2/tag_collection.rb +107 -0
- data/lib/aws/ec2/tagged_collection.rb +53 -0
- data/lib/aws/ec2/tagged_item.rb +85 -0
- data/lib/aws/ec2/volume.rb +170 -0
- data/lib/aws/ec2/volume_collection.rb +97 -0
- data/lib/aws/ec2/vpc.rb +166 -0
- data/lib/aws/ec2/vpc_collection.rb +70 -0
- data/lib/aws/ec2/vpn_connection.rb +99 -0
- data/lib/aws/ec2/vpn_connection/telemetry.rb +49 -0
- data/lib/aws/ec2/vpn_connection_collection.rb +96 -0
- data/lib/aws/ec2/vpn_gateway.rb +123 -0
- data/lib/aws/ec2/vpn_gateway/attachment.rb +45 -0
- data/lib/aws/ec2/vpn_gateway_collection.rb +77 -0
- data/lib/aws/elb.rb +65 -0
- data/lib/aws/elb/availability_zone_collection.rb +138 -0
- data/lib/aws/elb/backend_server_policy_collection.rb +140 -0
- data/lib/aws/elb/client.rb +539 -0
- data/lib/aws/elb/config.rb +18 -0
- data/lib/aws/elb/errors.rb +26 -0
- data/lib/aws/elb/instance_collection.rb +174 -0
- data/lib/aws/elb/listener.rb +189 -0
- data/lib/aws/elb/listener_collection.rb +119 -0
- data/lib/aws/elb/listener_opts.rb +45 -0
- data/lib/aws/elb/load_balancer.rb +253 -0
- data/lib/aws/elb/load_balancer_collection.rb +113 -0
- data/lib/aws/elb/load_balancer_policy.rb +93 -0
- data/lib/aws/elb/load_balancer_policy_collection.rb +208 -0
- data/lib/aws/elb/request.rb +23 -0
- data/lib/aws/errors.rb +122 -0
- data/lib/aws/iam.rb +418 -0
- data/lib/aws/iam/access_key.rb +180 -0
- data/lib/aws/iam/access_key_collection.rb +128 -0
- data/lib/aws/iam/account_alias_collection.rb +79 -0
- data/lib/aws/iam/client.rb +1609 -0
- data/lib/aws/iam/collection.rb +83 -0
- data/lib/aws/iam/config.rb +18 -0
- data/lib/aws/iam/errors.rb +22 -0
- data/lib/aws/iam/group.rb +111 -0
- data/lib/aws/iam/group_collection.rb +132 -0
- data/lib/aws/iam/group_policy_collection.rb +47 -0
- data/lib/aws/iam/group_user_collection.rb +84 -0
- data/lib/aws/iam/login_profile.rb +99 -0
- data/lib/aws/iam/mfa_device.rb +52 -0
- data/lib/aws/iam/mfa_device_collection.rb +127 -0
- data/lib/aws/iam/policy.rb +46 -0
- data/lib/aws/iam/policy_collection.rb +188 -0
- data/lib/aws/iam/request.rb +29 -0
- data/lib/aws/iam/resource.rb +71 -0
- data/lib/aws/iam/server_certificate.rb +141 -0
- data/lib/aws/iam/server_certificate_collection.rb +138 -0
- data/lib/aws/iam/signing_certificate.rb +169 -0
- data/lib/aws/iam/signing_certificate_collection.rb +131 -0
- data/lib/aws/iam/user.rb +205 -0
- data/lib/aws/iam/user_collection.rb +133 -0
- data/lib/aws/iam/user_group_collection.rb +98 -0
- data/lib/aws/iam/user_policy.rb +90 -0
- data/lib/aws/iam/user_policy_collection.rb +45 -0
- data/lib/aws/iam/virtual_mfa_device.rb +139 -0
- data/lib/aws/iam/virtual_mfa_device_collection.rb +73 -0
- data/lib/aws/rails.rb +195 -0
- data/lib/aws/record.rb +116 -0
- data/lib/aws/record/abstract_base.rb +645 -0
- data/lib/aws/record/attributes.rb +384 -0
- data/lib/aws/record/conversion.rb +38 -0
- data/lib/aws/record/dirty_tracking.rb +285 -0
- data/lib/aws/record/errors.rb +143 -0
- data/lib/aws/record/exceptions.rb +48 -0
- data/lib/aws/record/hash_model.rb +161 -0
- data/lib/aws/record/hash_model/attributes.rb +182 -0
- data/lib/aws/record/hash_model/finder_methods.rb +172 -0
- data/lib/aws/record/hash_model/scope.rb +108 -0
- data/lib/aws/record/model.rb +427 -0
- data/lib/aws/record/model/attributes.rb +379 -0
- data/lib/aws/record/model/finder_methods.rb +232 -0
- data/lib/aws/record/model/scope.rb +213 -0
- data/lib/aws/record/naming.rb +31 -0
- data/lib/aws/record/scope.rb +199 -0
- data/lib/aws/record/validations.rb +694 -0
- data/lib/aws/record/validator.rb +237 -0
- data/lib/aws/record/validators/acceptance.rb +51 -0
- data/lib/aws/record/validators/block.rb +38 -0
- data/lib/aws/record/validators/confirmation.rb +43 -0
- data/lib/aws/record/validators/count.rb +108 -0
- data/lib/aws/record/validators/exclusion.rb +43 -0
- data/lib/aws/record/validators/format.rb +57 -0
- data/lib/aws/record/validators/inclusion.rb +56 -0
- data/lib/aws/record/validators/length.rb +107 -0
- data/lib/aws/record/validators/method.rb +33 -0
- data/lib/aws/record/validators/numericality.rb +138 -0
- data/lib/aws/record/validators/presence.rb +45 -0
- data/lib/aws/s3.rb +135 -0
- data/lib/aws/s3/access_control_list.rb +250 -0
- data/lib/aws/s3/acl_object.rb +264 -0
- data/lib/aws/s3/bucket.rb +393 -0
- data/lib/aws/s3/bucket_collection.rb +143 -0
- data/lib/aws/s3/bucket_lifecycle_configuration.rb +360 -0
- data/lib/aws/s3/bucket_version_collection.rb +77 -0
- data/lib/aws/s3/client.rb +1184 -0
- data/lib/aws/s3/client/xml.rb +177 -0
- data/lib/aws/s3/config.rb +26 -0
- data/lib/aws/s3/data_options.rb +100 -0
- data/lib/aws/s3/errors.rb +81 -0
- data/lib/aws/s3/multipart_upload.rb +317 -0
- data/lib/aws/s3/multipart_upload_collection.rb +68 -0
- data/lib/aws/s3/object_collection.rb +337 -0
- data/lib/aws/s3/object_metadata.rb +96 -0
- data/lib/aws/s3/object_upload_collection.rb +77 -0
- data/lib/aws/s3/object_version.rb +143 -0
- data/lib/aws/s3/object_version_collection.rb +89 -0
- data/lib/aws/s3/paginated_collection.rb +75 -0
- data/lib/aws/s3/policy.rb +74 -0
- data/lib/aws/s3/prefix_and_delimiter_collection.rb +47 -0
- data/lib/aws/s3/prefixed_collection.rb +81 -0
- data/lib/aws/s3/presigned_post.rb +553 -0
- data/lib/aws/s3/request.rb +201 -0
- data/lib/aws/s3/s3_object.rb +1037 -0
- data/lib/aws/s3/tree.rb +118 -0
- data/lib/aws/s3/tree/branch_node.rb +68 -0
- data/lib/aws/s3/tree/child_collection.rb +104 -0
- data/lib/aws/s3/tree/leaf_node.rb +94 -0
- data/lib/aws/s3/tree/node.rb +22 -0
- data/lib/aws/s3/tree/parent.rb +87 -0
- data/lib/aws/s3/uploaded_part.rb +80 -0
- data/lib/aws/s3/uploaded_part_collection.rb +84 -0
- data/lib/aws/simple_db.rb +217 -0
- data/lib/aws/simple_db/attribute.rb +154 -0
- data/lib/aws/simple_db/attribute_collection.rb +231 -0
- data/lib/aws/simple_db/client.rb +349 -0
- data/lib/aws/simple_db/config.rb +20 -0
- data/lib/aws/simple_db/consistent_read_option.rb +42 -0
- data/lib/aws/simple_db/delete_attributes.rb +62 -0
- data/lib/aws/simple_db/domain.rb +121 -0
- data/lib/aws/simple_db/domain_collection.rb +113 -0
- data/lib/aws/simple_db/domain_metadata.rb +110 -0
- data/lib/aws/simple_db/errors.rb +55 -0
- data/lib/aws/simple_db/expect_condition_option.rb +45 -0
- data/lib/aws/simple_db/item.rb +93 -0
- data/lib/aws/simple_db/item_collection.rb +649 -0
- data/lib/aws/simple_db/item_data.rb +73 -0
- data/lib/aws/simple_db/put_attributes.rb +60 -0
- data/lib/aws/simple_db/request.rb +23 -0
- data/lib/aws/simple_email_service.rb +426 -0
- data/lib/aws/simple_email_service/client.rb +286 -0
- data/lib/aws/simple_email_service/config.rb +19 -0
- data/lib/aws/simple_email_service/email_address_collection.rb +69 -0
- data/lib/aws/simple_email_service/errors.rb +22 -0
- data/lib/aws/simple_email_service/identity.rb +91 -0
- data/lib/aws/simple_email_service/identity_collection.rb +81 -0
- data/lib/aws/simple_email_service/quotas.rb +64 -0
- data/lib/aws/simple_email_service/request.rb +29 -0
- data/lib/aws/simple_workflow.rb +226 -0
- data/lib/aws/simple_workflow/activity_task.rb +173 -0
- data/lib/aws/simple_workflow/activity_task_collection.rb +123 -0
- data/lib/aws/simple_workflow/activity_type.rb +131 -0
- data/lib/aws/simple_workflow/activity_type_collection.rb +93 -0
- data/lib/aws/simple_workflow/client.rb +1434 -0
- data/lib/aws/simple_workflow/config.rb +18 -0
- data/lib/aws/simple_workflow/count.rb +49 -0
- data/lib/aws/simple_workflow/decision_task.rb +601 -0
- data/lib/aws/simple_workflow/decision_task_collection.rb +225 -0
- data/lib/aws/simple_workflow/domain.rb +122 -0
- data/lib/aws/simple_workflow/domain_collection.rb +169 -0
- data/lib/aws/simple_workflow/errors.rb +20 -0
- data/lib/aws/simple_workflow/history_event.rb +276 -0
- data/lib/aws/simple_workflow/history_event_collection.rb +76 -0
- data/lib/aws/simple_workflow/option_formatters.rb +82 -0
- data/lib/aws/simple_workflow/request.rb +36 -0
- data/lib/aws/simple_workflow/resource.rb +94 -0
- data/lib/aws/simple_workflow/type.rb +89 -0
- data/lib/aws/simple_workflow/type_collection.rb +140 -0
- data/lib/aws/simple_workflow/workflow_execution.rb +386 -0
- data/lib/aws/simple_workflow/workflow_execution_collection.rb +617 -0
- data/lib/aws/simple_workflow/workflow_type.rb +177 -0
- data/lib/aws/simple_workflow/workflow_type_collection.rb +91 -0
- data/lib/aws/sns.rb +74 -0
- data/lib/aws/sns/client.rb +371 -0
- data/lib/aws/sns/config.rb +18 -0
- data/lib/aws/sns/errors.rb +22 -0
- data/lib/aws/sns/has_delivery_policy.rb +68 -0
- data/lib/aws/sns/policy.rb +47 -0
- data/lib/aws/sns/request.rb +23 -0
- data/lib/aws/sns/subscription.rb +144 -0
- data/lib/aws/sns/subscription_collection.rb +80 -0
- data/lib/aws/sns/topic.rb +403 -0
- data/lib/aws/sns/topic_collection.rb +67 -0
- data/lib/aws/sns/topic_subscription_collection.rb +55 -0
- data/lib/aws/sqs.rb +79 -0
- data/lib/aws/sqs/client.rb +360 -0
- data/lib/aws/sqs/config.rb +18 -0
- data/lib/aws/sqs/errors.rb +101 -0
- data/lib/aws/sqs/policy.rb +48 -0
- data/lib/aws/sqs/queue.rb +725 -0
- data/lib/aws/sqs/queue_collection.rb +170 -0
- data/lib/aws/sqs/received_message.rb +181 -0
- data/lib/aws/sqs/received_sns_message.rb +112 -0
- data/lib/aws/sqs/request.rb +43 -0
- data/lib/aws/sts.rb +152 -0
- data/lib/aws/sts/client.rb +105 -0
- data/lib/aws/sts/config.rb +18 -0
- data/lib/aws/sts/errors.rb +22 -0
- data/lib/aws/sts/federated_session.rb +56 -0
- data/lib/aws/sts/policy.rb +30 -0
- data/lib/aws/sts/request.rb +29 -0
- data/lib/aws/sts/session.rb +48 -0
- data/lib/net/http/connection_pool.rb +210 -0
- data/lib/net/http/connection_pool/connection.rb +132 -0
- data/lib/net/http/connection_pool/session.rb +93 -0
- data/lib/user.rb +49 -0
- 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
|