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