aws-sdk 1.8.5 → 1.9.0
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.
- checksums.yaml +7 -0
- data/.yardopts +1 -0
- data/README.rdoc +8 -0
- data/lib/aws-sdk.rb +39 -35
- data/lib/aws/api_config/CloudFront-2012-07-01.yml +2398 -0
- data/lib/aws/api_config/DirectConnect-2012-10-25.yml +475 -0
- data/lib/aws/api_config/DynamoDB-2011-12-05.yml +8 -0
- data/lib/aws/api_config/DynamoDB-2012-08-10.yml +1516 -0
- data/lib/aws/api_config/OpsWorks-2013-02-18.yml +2 -2
- data/lib/aws/auto_scaling.rb +44 -44
- data/lib/aws/auto_scaling/activity.rb +1 -1
- data/lib/aws/auto_scaling/activity_collection.rb +14 -15
- data/lib/aws/auto_scaling/client.rb +277 -277
- data/lib/aws/auto_scaling/config.rb +1 -1
- data/lib/aws/auto_scaling/group.rb +35 -36
- data/lib/aws/auto_scaling/group_collection.rb +10 -10
- data/lib/aws/auto_scaling/group_options.rb +19 -19
- data/lib/aws/auto_scaling/instance.rb +27 -27
- data/lib/aws/auto_scaling/instance_collection.rb +10 -10
- data/lib/aws/auto_scaling/launch_configuration.rb +3 -3
- data/lib/aws/auto_scaling/launch_configuration_collection.rb +1 -1
- data/lib/aws/auto_scaling/notification_configuration.rb +2 -2
- data/lib/aws/auto_scaling/notification_configuration_collection.rb +37 -38
- data/lib/aws/auto_scaling/scaling_policy.rb +3 -3
- data/lib/aws/auto_scaling/scaling_policy_collection.rb +6 -6
- data/lib/aws/auto_scaling/scaling_policy_options.rb +8 -7
- data/lib/aws/auto_scaling/scheduled_action.rb +3 -3
- data/lib/aws/auto_scaling/scheduled_action_collection.rb +28 -28
- data/lib/aws/auto_scaling/tag_collection.rb +30 -28
- data/lib/aws/cloud_formation.rb +95 -94
- data/lib/aws/cloud_formation/client.rb +136 -133
- data/lib/aws/cloud_formation/config.rb +1 -1
- data/lib/aws/cloud_formation/stack.rb +37 -37
- data/lib/aws/cloud_formation/stack_collection.rb +28 -27
- data/lib/aws/cloud_formation/stack_event.rb +9 -11
- data/lib/aws/cloud_formation/stack_output.rb +1 -1
- data/lib/aws/cloud_formation/stack_resource.rb +6 -6
- data/lib/aws/cloud_formation/stack_resource_collection.rb +11 -12
- data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +11 -11
- data/lib/aws/cloud_formation/stack_summary_collection.rb +39 -39
- data/lib/aws/cloud_front.rb +21 -21
- data/lib/aws/cloud_front/client.rb +853 -652
- data/lib/aws/cloud_front/request.rb +3 -0
- data/lib/aws/cloud_search.rb +22 -22
- data/lib/aws/cloud_search/client.rb +322 -315
- data/lib/aws/cloud_search/config.rb +1 -1
- data/lib/aws/cloud_watch.rb +39 -39
- data/lib/aws/cloud_watch/alarm.rb +55 -37
- data/lib/aws/cloud_watch/alarm_collection.rb +18 -18
- data/lib/aws/cloud_watch/alarm_history_item_collection.rb +2 -2
- data/lib/aws/cloud_watch/client.rb +360 -146
- data/lib/aws/cloud_watch/config.rb +1 -1
- data/lib/aws/cloud_watch/metric.rb +15 -15
- data/lib/aws/cloud_watch/metric_alarm_collection.rb +17 -17
- data/lib/aws/cloud_watch/metric_collection.rb +16 -16
- data/lib/aws/cloud_watch/metric_statistics.rb +11 -11
- data/lib/aws/core.rb +243 -225
- data/lib/aws/core/async_handle.rb +13 -13
- data/lib/aws/core/cacheable.rb +14 -15
- data/lib/aws/core/client.rb +40 -15
- data/lib/aws/core/collection.rb +42 -46
- data/lib/aws/core/collection/with_limit_and_next_token.rb +1 -1
- data/lib/aws/core/collection/with_next_token.rb +1 -1
- data/lib/aws/core/configuration.rb +97 -133
- data/lib/aws/core/credential_providers.rb +16 -16
- data/lib/aws/core/data.rb +23 -23
- data/lib/aws/core/http/connection_pool.rb +348 -0
- data/lib/aws/core/http/net_http_handler.rb +17 -26
- data/lib/aws/core/http/patch.rb +102 -0
- data/lib/aws/core/http/request.rb +13 -19
- data/lib/aws/core/http/response.rb +2 -2
- data/lib/aws/core/lazy_error_classes.rb +17 -17
- data/lib/aws/core/log_formatter.rb +70 -104
- data/lib/aws/core/options/json_serializer.rb +1 -1
- data/lib/aws/core/options/validator.rb +4 -4
- data/lib/aws/core/page_result.rb +8 -8
- data/lib/aws/core/policy.rb +49 -49
- data/lib/aws/core/region.rb +72 -0
- data/lib/aws/core/region_collection.rb +106 -0
- data/lib/aws/core/resource.rb +5 -5
- data/lib/aws/core/response.rb +20 -17
- data/lib/aws/core/rest_request_builder.rb +4 -4
- data/lib/aws/core/service_interface.rb +24 -2
- data/lib/aws/core/signature/version_3.rb +2 -2
- data/lib/aws/core/uri_escape.rb +1 -1
- data/lib/aws/core/xml/frame_stack.rb +1 -1
- data/lib/aws/core/xml/grammar.rb +3 -4
- data/lib/aws/core/xml/sax_handlers/libxml.rb +2 -2
- data/lib/aws/core/xml/sax_handlers/nokogiri.rb +3 -3
- data/lib/aws/core/xml/sax_handlers/rexml.rb +5 -5
- data/lib/aws/core/xml/stub.rb +9 -9
- data/lib/aws/data_pipeline.rb +21 -21
- data/lib/aws/data_pipeline/client.rb +189 -133
- data/lib/aws/data_pipeline/config.rb +1 -1
- data/lib/aws/direct_connect.rb +74 -0
- data/lib/aws/direct_connect/client.rb +253 -0
- data/lib/aws/direct_connect/config.rb +18 -0
- data/lib/aws/direct_connect/errors.rb +22 -0
- data/lib/aws/direct_connect/request.rb +27 -0
- data/lib/aws/dynamo_db.rb +71 -69
- data/lib/aws/dynamo_db/attribute_collection.rb +53 -58
- data/lib/aws/dynamo_db/batch_get.rb +23 -23
- data/lib/aws/dynamo_db/batch_write.rb +43 -43
- data/lib/aws/dynamo_db/binary.rb +9 -9
- data/lib/aws/dynamo_db/client.rb +494 -509
- data/lib/aws/dynamo_db/client_base.rb +91 -0
- data/lib/aws/dynamo_db/client_v2.rb +825 -0
- data/lib/aws/dynamo_db/config.rb +1 -1
- data/lib/aws/dynamo_db/item.rb +10 -10
- data/lib/aws/dynamo_db/item_collection.rb +75 -75
- data/lib/aws/dynamo_db/table.rb +85 -85
- data/lib/aws/dynamo_db/table_collection.rb +13 -13
- data/lib/aws/ec2.rb +132 -142
- data/lib/aws/ec2/attachment.rb +31 -36
- data/lib/aws/ec2/attachment_collection.rb +1 -1
- data/lib/aws/ec2/availability_zone.rb +4 -4
- data/lib/aws/ec2/client.rb +2272 -2125
- data/lib/aws/ec2/config.rb +1 -1
- data/lib/aws/ec2/customer_gateway.rb +6 -6
- data/lib/aws/ec2/customer_gateway_collection.rb +6 -6
- data/lib/aws/ec2/dhcp_options.rb +3 -3
- data/lib/aws/ec2/dhcp_options_collection.rb +10 -10
- data/lib/aws/ec2/elastic_ip.rb +15 -15
- data/lib/aws/ec2/elastic_ip_collection.rb +11 -15
- data/lib/aws/ec2/export_task.rb +4 -4
- data/lib/aws/ec2/export_task_collection.rb +11 -11
- data/lib/aws/ec2/filtered_collection.rb +6 -8
- data/lib/aws/ec2/image.rb +46 -40
- data/lib/aws/ec2/image_collection.rb +44 -52
- data/lib/aws/ec2/instance.rb +64 -62
- data/lib/aws/ec2/instance_collection.rb +47 -50
- data/lib/aws/ec2/internet_gateway.rb +6 -6
- data/lib/aws/ec2/internet_gateway/attachment.rb +13 -13
- data/lib/aws/ec2/internet_gateway_collection.rb +3 -3
- data/lib/aws/ec2/key_pair.rb +3 -3
- data/lib/aws/ec2/key_pair_collection.rb +12 -12
- data/lib/aws/ec2/network_acl.rb +39 -39
- data/lib/aws/ec2/network_acl/association.rb +2 -2
- data/lib/aws/ec2/network_acl/entry.rb +22 -22
- data/lib/aws/ec2/network_acl_collection.rb +2 -2
- data/lib/aws/ec2/network_interface.rb +13 -4
- data/lib/aws/ec2/network_interface/attachment.rb +3 -3
- data/lib/aws/ec2/network_interface_collection.rb +5 -5
- data/lib/aws/ec2/permission_collection.rb +1 -1
- data/lib/aws/ec2/region.rb +6 -6
- data/lib/aws/ec2/region_collection.rb +1 -1
- data/lib/aws/ec2/reserved_instances_collection.rb +2 -2
- data/lib/aws/ec2/reserved_instances_offering_collection.rb +2 -2
- data/lib/aws/ec2/resource_tag_collection.rb +5 -5
- data/lib/aws/ec2/route_table.rb +14 -14
- data/lib/aws/ec2/route_table/association.rb +22 -22
- data/lib/aws/ec2/route_table/route.rb +8 -8
- data/lib/aws/ec2/route_table_collection.rb +3 -3
- data/lib/aws/ec2/security_group.rb +39 -41
- data/lib/aws/ec2/security_group_collection.rb +19 -21
- data/lib/aws/ec2/snapshot.rb +3 -3
- data/lib/aws/ec2/snapshot_collection.rb +11 -12
- data/lib/aws/ec2/subnet.rb +2 -2
- data/lib/aws/ec2/subnet_collection.rb +17 -17
- data/lib/aws/ec2/tag_collection.rb +1 -1
- data/lib/aws/ec2/tagged_collection.rb +7 -7
- data/lib/aws/ec2/tagged_item.rb +10 -10
- data/lib/aws/ec2/volume.rb +16 -16
- data/lib/aws/ec2/volume_collection.rb +9 -12
- data/lib/aws/ec2/vpc.rb +6 -6
- data/lib/aws/ec2/vpc_collection.rb +10 -10
- data/lib/aws/ec2/vpn_connection.rb +4 -4
- data/lib/aws/ec2/vpn_connection/telemetry.rb +1 -1
- data/lib/aws/ec2/vpn_connection_collection.rb +6 -6
- data/lib/aws/ec2/vpn_gateway.rb +2 -2
- data/lib/aws/ec2/vpn_gateway_collection.rb +5 -5
- data/lib/aws/elastic_beanstalk.rb +12 -12
- data/lib/aws/elastic_beanstalk/client.rb +376 -368
- data/lib/aws/elastic_beanstalk/config.rb +1 -1
- data/lib/aws/elastic_transcoder.rb +5 -5
- data/lib/aws/elastic_transcoder/client.rb +283 -283
- data/lib/aws/elastic_transcoder/config.rb +1 -1
- data/lib/aws/elasticache.rb +12 -12
- data/lib/aws/elasticache/client.rb +484 -479
- data/lib/aws/elasticache/config.rb +1 -1
- data/lib/aws/elb.rb +23 -23
- data/lib/aws/elb/availability_zone_collection.rb +34 -34
- data/lib/aws/elb/backend_server_policy_collection.rb +24 -24
- data/lib/aws/elb/client.rb +153 -153
- data/lib/aws/elb/config.rb +1 -1
- data/lib/aws/elb/errors.rb +1 -1
- data/lib/aws/elb/instance_collection.rb +20 -25
- data/lib/aws/elb/listener.rb +3 -3
- data/lib/aws/elb/listener_collection.rb +8 -8
- data/lib/aws/elb/load_balancer.rb +15 -16
- data/lib/aws/elb/load_balancer_collection.rb +36 -24
- data/lib/aws/elb/load_balancer_policy.rb +1 -1
- data/lib/aws/elb/load_balancer_policy_collection.rb +5 -5
- data/lib/aws/emr.rb +28 -26
- data/lib/aws/emr/client.rb +165 -149
- data/lib/aws/emr/config.rb +1 -1
- data/lib/aws/emr/instance_group.rb +1 -1
- data/lib/aws/emr/instance_group_collection.rb +1 -1
- data/lib/aws/emr/job_flow.rb +27 -26
- data/lib/aws/emr/job_flow_collection.rb +34 -34
- data/lib/aws/errors.rb +7 -7
- data/lib/aws/glacier.rb +21 -21
- data/lib/aws/glacier/archive_collection.rb +2 -2
- data/lib/aws/glacier/client.rb +139 -140
- data/lib/aws/glacier/config.rb +1 -1
- data/lib/aws/glacier/vault.rb +2 -2
- data/lib/aws/glacier/vault_collection.rb +1 -1
- data/lib/aws/iam.rb +133 -144
- data/lib/aws/iam/access_key.rb +17 -17
- data/lib/aws/iam/access_key_collection.rb +22 -22
- data/lib/aws/iam/account_alias_collection.rb +2 -2
- data/lib/aws/iam/client.rb +429 -420
- data/lib/aws/iam/collection.rb +1 -1
- data/lib/aws/iam/config.rb +2 -2
- data/lib/aws/iam/group.rb +8 -8
- data/lib/aws/iam/group_collection.rb +16 -16
- data/lib/aws/iam/group_policy_collection.rb +6 -6
- data/lib/aws/iam/group_user_collection.rb +3 -3
- data/lib/aws/iam/mfa_device.rb +1 -1
- data/lib/aws/iam/mfa_device_collection.rb +9 -9
- data/lib/aws/iam/policy_collection.rb +4 -4
- data/lib/aws/iam/resource.rb +2 -2
- data/lib/aws/iam/server_certificate.rb +1 -1
- data/lib/aws/iam/server_certificate_collection.rb +15 -15
- data/lib/aws/iam/signing_certificate.rb +29 -29
- data/lib/aws/iam/signing_certificate_collection.rb +23 -23
- data/lib/aws/iam/user.rb +33 -38
- data/lib/aws/iam/user_collection.rb +27 -27
- data/lib/aws/iam/user_group_collection.rb +3 -3
- data/lib/aws/iam/user_policy_collection.rb +6 -6
- data/lib/aws/iam/virtual_mfa_device.rb +12 -12
- data/lib/aws/iam/virtual_mfa_device_collection.rb +4 -4
- data/lib/aws/import_export.rb +22 -21
- data/lib/aws/import_export/client.rb +47 -43
- data/lib/aws/ops_works.rb +5 -5
- data/lib/aws/ops_works/client.rb +484 -438
- data/lib/aws/ops_works/config.rb +1 -1
- data/lib/aws/rails.rb +34 -34
- data/lib/aws/rds.rb +18 -18
- data/lib/aws/rds/client.rb +1286 -1277
- data/lib/aws/rds/config.rb +1 -1
- data/lib/aws/rds/db_instance.rb +15 -4
- data/lib/aws/rds/db_snapshot.rb +1 -1
- data/lib/aws/record.rb +50 -24
- data/lib/aws/record/abstract_base.rb +52 -60
- data/lib/aws/record/attributes.rb +79 -79
- data/lib/aws/record/conversion.rb +1 -1
- data/lib/aws/record/dirty_tracking.rb +69 -67
- data/lib/aws/record/errors.rb +21 -21
- data/lib/aws/record/exceptions.rb +2 -2
- data/lib/aws/record/hash_model.rb +20 -21
- data/lib/aws/record/hash_model/attributes.rb +13 -15
- data/lib/aws/record/hash_model/finder_methods.rb +46 -46
- data/lib/aws/record/hash_model/scope.rb +31 -31
- data/lib/aws/record/model.rb +136 -136
- data/lib/aws/record/model/attributes.rb +57 -59
- data/lib/aws/record/model/finder_methods.rb +67 -67
- data/lib/aws/record/model/scope.rb +48 -49
- data/lib/aws/record/naming.rb +1 -1
- data/lib/aws/record/scope.rb +23 -19
- data/lib/aws/record/validations.rb +253 -271
- data/lib/aws/record/validator.rb +3 -3
- data/lib/aws/record/validators/acceptance.rb +1 -3
- data/lib/aws/record/validators/block.rb +1 -3
- data/lib/aws/record/validators/confirmation.rb +1 -3
- data/lib/aws/record/validators/count.rb +2 -4
- data/lib/aws/record/validators/exclusion.rb +2 -4
- data/lib/aws/record/validators/format.rb +2 -4
- data/lib/aws/record/validators/inclusion.rb +1 -3
- data/lib/aws/record/validators/length.rb +5 -7
- data/lib/aws/record/validators/method.rb +1 -3
- data/lib/aws/record/validators/numericality.rb +6 -8
- data/lib/aws/record/validators/presence.rb +1 -3
- data/lib/aws/redshift.rb +14 -14
- data/lib/aws/redshift/client.rb +596 -592
- data/lib/aws/redshift/config.rb +1 -1
- data/lib/aws/route_53.rb +30 -30
- data/lib/aws/route_53/change_batch.rb +7 -7
- data/lib/aws/route_53/client.rb +188 -152
- data/lib/aws/route_53/hosted_zone.rb +4 -4
- data/lib/aws/route_53/hosted_zone_collection.rb +7 -7
- data/lib/aws/route_53/resource_record_set.rb +10 -10
- data/lib/aws/route_53/resource_record_set_collection.rb +6 -6
- data/lib/aws/s3.rb +79 -79
- data/lib/aws/s3/access_control_list.rb +44 -36
- data/lib/aws/s3/acl_options.rb +51 -51
- data/lib/aws/s3/bucket.rb +146 -146
- data/lib/aws/s3/bucket_collection.rb +21 -21
- data/lib/aws/s3/bucket_lifecycle_configuration.rb +81 -82
- data/lib/aws/s3/bucket_tag_collection.rb +4 -2
- data/lib/aws/s3/cipher_io.rb +5 -4
- data/lib/aws/s3/client.rb +89 -84
- data/lib/aws/s3/client/xml.rb +1 -1
- data/lib/aws/s3/config.rb +7 -1
- data/lib/aws/s3/cors_rule.rb +2 -0
- data/lib/aws/s3/cors_rule_collection.rb +42 -40
- data/lib/aws/s3/data_options.rb +16 -11
- data/lib/aws/s3/encryption_utils.rb +2 -2
- data/lib/aws/s3/errors.rb +7 -7
- data/lib/aws/s3/multipart_upload.rb +30 -33
- data/lib/aws/s3/multipart_upload_collection.rb +8 -6
- data/lib/aws/s3/object_collection.rb +35 -35
- data/lib/aws/s3/object_metadata.rb +6 -6
- data/lib/aws/s3/object_version.rb +4 -4
- data/lib/aws/s3/object_version_collection.rb +15 -15
- data/lib/aws/s3/policy.rb +2 -2
- data/lib/aws/s3/prefixed_collection.rb +9 -5
- data/lib/aws/s3/presigned_post.rb +39 -37
- data/lib/aws/s3/request.rb +11 -11
- data/lib/aws/s3/s3_object.rb +210 -200
- data/lib/aws/s3/tree.rb +25 -27
- data/lib/aws/s3/tree/child_collection.rb +3 -3
- data/lib/aws/s3/tree/leaf_node.rb +2 -2
- data/lib/aws/s3/tree/parent.rb +1 -1
- data/lib/aws/s3/website_configuration.rb +13 -13
- data/lib/aws/simple_db.rb +83 -83
- data/lib/aws/simple_db/attribute.rb +9 -7
- data/lib/aws/simple_db/attribute_collection.rb +22 -13
- data/lib/aws/simple_db/client.rb +107 -107
- data/lib/aws/simple_db/config.rb +7 -1
- data/lib/aws/simple_db/consistent_read_option.rb +5 -5
- data/lib/aws/simple_db/domain.rb +4 -2
- data/lib/aws/simple_db/domain_collection.rb +4 -4
- data/lib/aws/simple_db/domain_metadata.rb +5 -5
- data/lib/aws/simple_db/errors.rb +9 -9
- data/lib/aws/simple_db/item.rb +5 -5
- data/lib/aws/simple_db/item_collection.rb +83 -81
- data/lib/aws/simple_db/item_data.rb +4 -4
- data/lib/aws/simple_db/put_attributes.rb +3 -3
- data/lib/aws/simple_email_service.rb +140 -140
- data/lib/aws/simple_email_service/client.rb +82 -76
- data/lib/aws/simple_email_service/config.rb +1 -2
- data/lib/aws/simple_email_service/email_address_collection.rb +3 -3
- data/lib/aws/simple_email_service/identity.rb +8 -8
- data/lib/aws/simple_email_service/quotas.rb +8 -6
- data/lib/aws/simple_workflow.rb +106 -106
- data/lib/aws/simple_workflow/activity_task.rb +15 -22
- data/lib/aws/simple_workflow/activity_task_collection.rb +15 -15
- data/lib/aws/simple_workflow/activity_type.rb +23 -23
- data/lib/aws/simple_workflow/activity_type_collection.rb +23 -23
- data/lib/aws/simple_workflow/client.rb +1004 -956
- data/lib/aws/simple_workflow/config.rb +1 -1
- data/lib/aws/simple_workflow/count.rb +5 -5
- data/lib/aws/simple_workflow/decision_task.rb +129 -129
- data/lib/aws/simple_workflow/decision_task_collection.rb +59 -59
- data/lib/aws/simple_workflow/domain.rb +11 -11
- data/lib/aws/simple_workflow/domain_collection.rb +26 -26
- data/lib/aws/simple_workflow/history_event.rb +32 -32
- data/lib/aws/simple_workflow/history_event_collection.rb +3 -3
- data/lib/aws/simple_workflow/option_formatters.rb +5 -5
- data/lib/aws/simple_workflow/request.rb +1 -1
- data/lib/aws/simple_workflow/resource.rb +1 -1
- data/lib/aws/simple_workflow/type.rb +8 -8
- data/lib/aws/simple_workflow/type_collection.rb +15 -15
- data/lib/aws/simple_workflow/workflow_execution.rb +70 -72
- data/lib/aws/simple_workflow/workflow_execution_collection.rb +130 -130
- data/lib/aws/simple_workflow/workflow_type.rb +27 -25
- data/lib/aws/simple_workflow/workflow_type_collection.rb +20 -20
- data/lib/aws/sns.rb +25 -25
- data/lib/aws/sns/client.rb +55 -55
- data/lib/aws/sns/config.rb +1 -1
- data/lib/aws/sns/policy.rb +1 -1
- data/lib/aws/sns/subscription.rb +7 -7
- data/lib/aws/sns/subscription_collection.rb +5 -5
- data/lib/aws/sns/topic.rb +49 -49
- data/lib/aws/sns/topic_collection.rb +2 -2
- data/lib/aws/sns/topic_subscription_collection.rb +5 -5
- data/lib/aws/sqs.rb +20 -20
- data/lib/aws/sqs/client.rb +78 -78
- data/lib/aws/sqs/config.rb +1 -1
- data/lib/aws/sqs/errors.rb +12 -12
- data/lib/aws/sqs/queue.rb +66 -67
- data/lib/aws/sqs/queue_collection.rb +16 -8
- data/lib/aws/sqs/received_message.rb +7 -6
- data/lib/aws/storage_gateway.rb +21 -21
- data/lib/aws/storage_gateway/client.rb +269 -202
- data/lib/aws/storage_gateway/config.rb +1 -1
- data/lib/aws/sts.rb +10 -8
- data/lib/aws/sts/client.rb +35 -35
- data/lib/aws/sts/session.rb +3 -3
- data/lib/aws/version.rb +1 -2
- metadata +23 -21
- data/lib/aws/core/autoloader.rb +0 -64
- data/lib/net/http/connection_pool.rb +0 -226
- data/lib/net/http/connection_pool/connection.rb +0 -189
- data/lib/net/http/connection_pool/session.rb +0 -126
|
@@ -14,22 +14,22 @@
|
|
|
14
14
|
module AWS
|
|
15
15
|
class S3
|
|
16
16
|
|
|
17
|
-
# Represents a collection of buckets.
|
|
17
|
+
# Represents a collection of buckets.
|
|
18
18
|
#
|
|
19
19
|
# You can use this to create a bucket:
|
|
20
20
|
#
|
|
21
|
-
#
|
|
21
|
+
# s3.buckets.create(:name => "mybucket")
|
|
22
22
|
#
|
|
23
23
|
# You can get a handle for a specific bucket with indifferent
|
|
24
24
|
# access:
|
|
25
25
|
#
|
|
26
|
-
#
|
|
27
|
-
#
|
|
26
|
+
# bucket = s3.buckets[:mybucket]
|
|
27
|
+
# bucket = s3.buckets['mybucket']
|
|
28
28
|
#
|
|
29
29
|
# You can also use it to find out which buckets are in your account:
|
|
30
30
|
#
|
|
31
|
-
#
|
|
32
|
-
#
|
|
31
|
+
# s3.buckets.collect(&:name)
|
|
32
|
+
# #=> ['bucket1', 'bucket2', ...]
|
|
33
33
|
#
|
|
34
34
|
class BucketCollection
|
|
35
35
|
|
|
@@ -43,8 +43,8 @@ module AWS
|
|
|
43
43
|
# against the bucket using the S3 endpoint specific to the
|
|
44
44
|
# region in which your bucket resides. For example:
|
|
45
45
|
#
|
|
46
|
-
#
|
|
47
|
-
#
|
|
46
|
+
# s3 = AWS::S3.new(:region => "eu-west-1")
|
|
47
|
+
# bucket = s3.buckets.create("my.eu.bucket")
|
|
48
48
|
#
|
|
49
49
|
# For a full list of endpoints and regions, see
|
|
50
50
|
# {http://docs.amazonwebservices.com/general/latest/gr/index.html?rande.html
|
|
@@ -68,17 +68,17 @@ module AWS
|
|
|
68
68
|
# appropriate location constraint for the endpoint. For
|
|
69
69
|
# example:
|
|
70
70
|
#
|
|
71
|
-
#
|
|
72
|
-
#
|
|
73
|
-
#
|
|
71
|
+
# s3 = AWS::S3.new(:region => "us-west-1")
|
|
72
|
+
# bucket = s3.buckets.create("my-us-west-bucket")
|
|
73
|
+
# bucket.location_constraint # => "us-west-1"
|
|
74
74
|
#
|
|
75
|
-
# @option options [Symbol,String] :acl (:private) Sets the ACL of the
|
|
75
|
+
# @option options [Symbol,String] :acl (:private) Sets the ACL of the
|
|
76
76
|
# bucket you are creating. Valid Values include:
|
|
77
|
-
# *
|
|
78
|
-
# *
|
|
79
|
-
# *
|
|
80
|
-
# *
|
|
81
|
-
# *
|
|
77
|
+
# * `:private`
|
|
78
|
+
# * `:public_read`
|
|
79
|
+
# * `:public_read_write`
|
|
80
|
+
# * `:authenticated_read`
|
|
81
|
+
# * `:log_delivery_write`
|
|
82
82
|
#
|
|
83
83
|
# @option options [String] :grant_read
|
|
84
84
|
# @option options [String] :grant_write
|
|
@@ -95,10 +95,10 @@ module AWS
|
|
|
95
95
|
options[:acl] = acl.to_s.tr('_', '-')
|
|
96
96
|
end
|
|
97
97
|
|
|
98
|
-
# auto set the location constraint for the user if it is not
|
|
99
|
-
# passed in and the endpoint is not the us-standard region. don't
|
|
100
|
-
# override the location constraint though, even it is wrong,
|
|
101
|
-
unless
|
|
98
|
+
# auto set the location constraint for the user if it is not
|
|
99
|
+
# passed in and the endpoint is not the us-standard region. don't
|
|
100
|
+
# override the location constraint though, even it is wrong,
|
|
101
|
+
unless
|
|
102
102
|
config.s3_endpoint == 's3.amazonaws.com' or
|
|
103
103
|
options[:location_constraint]
|
|
104
104
|
then
|
|
@@ -21,7 +21,7 @@ module AWS
|
|
|
21
21
|
# Amazon S3 stores objects. The rules apply to objects whose keys match
|
|
22
22
|
# the rule's prefix.
|
|
23
23
|
#
|
|
24
|
-
#
|
|
24
|
+
# ## Rules
|
|
25
25
|
#
|
|
26
26
|
# A rule is comprised primarily of an id, prefix and set of
|
|
27
27
|
# configuration options. Configuration options on the rules can specify:
|
|
@@ -33,84 +33,84 @@ module AWS
|
|
|
33
33
|
# See {Rule} for more information on all of the attributes and methods
|
|
34
34
|
# available for rules.
|
|
35
35
|
#
|
|
36
|
-
#
|
|
36
|
+
# ## Expiring Objects
|
|
37
37
|
#
|
|
38
38
|
# You can add a rule to a bucket lifecycle configuration using {#add_rule}
|
|
39
39
|
# inside of an {#update} block that will expire an object after a given
|
|
40
40
|
# number of days:
|
|
41
41
|
#
|
|
42
|
-
#
|
|
43
|
-
#
|
|
44
|
-
#
|
|
45
|
-
#
|
|
42
|
+
# # delete backups after they are 1 year old
|
|
43
|
+
# bucket.lifecycle_configuration.update do
|
|
44
|
+
# add_rule('backups/', :expiration_time => 365)
|
|
45
|
+
# end
|
|
46
46
|
#
|
|
47
47
|
# You can also define the rule to expire objects at a specific date:
|
|
48
48
|
#
|
|
49
|
-
#
|
|
50
|
-
#
|
|
51
|
-
#
|
|
52
|
-
#
|
|
53
|
-
#
|
|
49
|
+
# # delete backups on January 1st of next year
|
|
50
|
+
# bucket.lifecycle_configuration.update do
|
|
51
|
+
# date = Date.new(Time.now.year + 1, 01, 01)
|
|
52
|
+
# add_rule('backups/', :expiration_time => date)
|
|
53
|
+
# end
|
|
54
54
|
#
|
|
55
|
-
#
|
|
55
|
+
# ## Transitioning Objects to Glacier
|
|
56
56
|
#
|
|
57
57
|
# You can add a rule to a bucket lifecycle configuration using {#add_rule}
|
|
58
58
|
# inside of an {#update} block that will transition objects to Glacier
|
|
59
59
|
# after a given number of days:
|
|
60
60
|
#
|
|
61
|
-
#
|
|
62
|
-
#
|
|
63
|
-
#
|
|
64
|
-
#
|
|
61
|
+
# # move backups to Glacier after 3 days
|
|
62
|
+
# bucket.lifecycle_configuration.update do
|
|
63
|
+
# add_rule('backups/', :glacier_transition_time => 3)
|
|
64
|
+
# end
|
|
65
65
|
#
|
|
66
66
|
# You can also define the rule to transition objects at a specific date:
|
|
67
67
|
#
|
|
68
|
-
#
|
|
69
|
-
#
|
|
70
|
-
#
|
|
71
|
-
#
|
|
72
|
-
#
|
|
68
|
+
# # transition all backups on January 1st of next year
|
|
69
|
+
# bucket.lifecycle_configuration.update do
|
|
70
|
+
# date = Date.new(Time.now.year + 1, 01, 01)
|
|
71
|
+
# add_rule('backups/', :glacier_transition_time => date)
|
|
72
|
+
# end
|
|
73
73
|
#
|
|
74
|
-
#
|
|
74
|
+
# ## Replacing Rules
|
|
75
75
|
#
|
|
76
76
|
# If you prefer to completely replace a lifecycle configuration, call
|
|
77
|
-
# {#add_rule} inside a {#replace} block instead of an
|
|
77
|
+
# {#add_rule} inside a {#replace} block instead of an `#update` block:
|
|
78
78
|
#
|
|
79
|
-
#
|
|
80
|
-
#
|
|
81
|
-
#
|
|
82
|
-
#
|
|
83
|
-
#
|
|
79
|
+
# # replace all existing rules with the following
|
|
80
|
+
# bucket.lifecycle_configuration.replace do
|
|
81
|
+
# add_rule('backups/', :glacier_transition_time => 10)
|
|
82
|
+
# add_rule('temp/', :expiration_time => 30)
|
|
83
|
+
# end
|
|
84
84
|
#
|
|
85
|
-
#
|
|
85
|
+
# ## Removing Rules
|
|
86
86
|
#
|
|
87
87
|
# You can delete specific rules with {#remove_rule}.
|
|
88
88
|
#
|
|
89
|
-
#
|
|
90
|
-
#
|
|
91
|
-
#
|
|
92
|
-
#
|
|
89
|
+
# # delete all disabled rules
|
|
90
|
+
# bucket.lifecycle_configuration.update do
|
|
91
|
+
# rules.each do |rule|
|
|
92
|
+
# remove_rule(rule) if rule.disabled?
|
|
93
|
+
# end
|
|
93
94
|
# end
|
|
94
|
-
# end
|
|
95
95
|
#
|
|
96
96
|
# You can also remove all rules in a single call with {#clear}:
|
|
97
97
|
#
|
|
98
|
-
#
|
|
99
|
-
#
|
|
98
|
+
# # remove all rules from this lifecycle configuration
|
|
99
|
+
# bucket.lifecycle_configuration.clear
|
|
100
100
|
#
|
|
101
|
-
#
|
|
101
|
+
# ## Editing Existing Rules
|
|
102
102
|
#
|
|
103
103
|
# You can also make changes to existing rules.
|
|
104
104
|
#
|
|
105
|
-
#
|
|
106
|
-
#
|
|
107
|
-
#
|
|
108
|
-
#
|
|
105
|
+
# # change the expiration days to 10 for EVERY rule
|
|
106
|
+
# bucket.lifecycle_configuration.update do
|
|
107
|
+
# rules.each do |rule|
|
|
108
|
+
# rule.expiration_time = 10
|
|
109
|
+
# end
|
|
109
110
|
# end
|
|
110
|
-
# end
|
|
111
111
|
#
|
|
112
112
|
# Please be aware, if you add, remove or edit rules outside of an
|
|
113
|
-
# {#update} or {#replace} block, then you must call
|
|
113
|
+
# {#update} or {#replace} block, then you must call `#update` yourself
|
|
114
114
|
# or the changes will not be persisted.
|
|
115
115
|
#
|
|
116
116
|
class BucketLifecycleConfiguration
|
|
@@ -148,7 +148,7 @@ module AWS
|
|
|
148
148
|
#
|
|
149
149
|
# @option options [Boolean] :disabled (false) By default, all rules
|
|
150
150
|
# will have the status of enabled. You can override this default
|
|
151
|
-
# by passing
|
|
151
|
+
# by passing `:disabled` => true.
|
|
152
152
|
#
|
|
153
153
|
# @option options [Date, Integer] :expiration_time (nil) Indicates
|
|
154
154
|
# the lifetime for objects matching the given prefix.
|
|
@@ -179,17 +179,17 @@ module AWS
|
|
|
179
179
|
# Removes a single rule. You can pass a rule id or a {Rule}
|
|
180
180
|
# object.
|
|
181
181
|
#
|
|
182
|
-
#
|
|
183
|
-
#
|
|
184
|
-
#
|
|
185
|
-
#
|
|
182
|
+
# # remove a single rule by its ID
|
|
183
|
+
# bucket.lifecycle_configuration.update do
|
|
184
|
+
# remove_rule('rule-id')
|
|
185
|
+
# end
|
|
186
186
|
#
|
|
187
|
-
#
|
|
188
|
-
#
|
|
189
|
-
#
|
|
190
|
-
#
|
|
187
|
+
# # remove all disabled rules
|
|
188
|
+
# bucket.lifecycle_configuration.update do
|
|
189
|
+
# rules.each do |rule|
|
|
190
|
+
# remove_rule(rule) if rule.disabled?
|
|
191
|
+
# end
|
|
191
192
|
# end
|
|
192
|
-
# end
|
|
193
193
|
#
|
|
194
194
|
# If you call #remove_rule outside an update block
|
|
195
195
|
# you need to call #update to save the changes.
|
|
@@ -210,34 +210,34 @@ module AWS
|
|
|
210
210
|
|
|
211
211
|
# Saves changes made to this lifecycle configuration.
|
|
212
212
|
#
|
|
213
|
-
#
|
|
214
|
-
#
|
|
215
|
-
#
|
|
216
|
-
#
|
|
217
|
-
#
|
|
218
|
-
#
|
|
213
|
+
# # set the number of days before expiration for all rules to 10
|
|
214
|
+
# config = bucket.lifecycle_configuration
|
|
215
|
+
# config.rules.each do |rule|
|
|
216
|
+
# rule.expiration_time = 10
|
|
217
|
+
# end
|
|
218
|
+
# config.update
|
|
219
219
|
#
|
|
220
220
|
# You can call #update with a block. Changes are persisted at the
|
|
221
221
|
# end of the block.
|
|
222
222
|
#
|
|
223
|
-
#
|
|
224
|
-
#
|
|
225
|
-
#
|
|
226
|
-
#
|
|
223
|
+
# # shorter version of the example above
|
|
224
|
+
# bucket.lifecycle_configuration.update do
|
|
225
|
+
# rules.each {|rule| rule.expiration_time = 10 }
|
|
226
|
+
# end
|
|
227
227
|
#
|
|
228
228
|
# A block method for updating a BucketLifecycleConfiguration.
|
|
229
229
|
# All modifications made inside the block are persisted at the end of
|
|
230
230
|
# the block.
|
|
231
231
|
#
|
|
232
|
-
#
|
|
233
|
-
#
|
|
234
|
-
#
|
|
235
|
-
#
|
|
236
|
-
#
|
|
232
|
+
# # 1 request
|
|
233
|
+
# bucket.lifecycle_configuration.update do
|
|
234
|
+
# add_rule 'prefix/a', 10
|
|
235
|
+
# add_rule 'prefix/b', 5
|
|
236
|
+
# end
|
|
237
237
|
#
|
|
238
|
-
#
|
|
239
|
-
#
|
|
240
|
-
#
|
|
238
|
+
# # 2 requests
|
|
239
|
+
# bucket.lifecycle_configuration.add_rule 'prefix/a', 10
|
|
240
|
+
# bucket.lifecycle_configuration.add_rule 'prefix/b', 5
|
|
241
241
|
#
|
|
242
242
|
# @return [nil]
|
|
243
243
|
#
|
|
@@ -259,15 +259,14 @@ module AWS
|
|
|
259
259
|
# When the block is complete, a single call will be made to save
|
|
260
260
|
# the new rules.
|
|
261
261
|
#
|
|
262
|
-
#
|
|
262
|
+
# bucket.lifecycle_configuration.rules.size #=> 3
|
|
263
263
|
#
|
|
264
|
-
#
|
|
265
|
-
#
|
|
266
|
-
#
|
|
267
|
-
#
|
|
268
|
-
#
|
|
269
|
-
# bucket.lifecycle_configuration.rules.size #=> 1
|
|
264
|
+
# # replace the existing 3 rules with a single rule
|
|
265
|
+
# bucket.lifecycle_configuration.replace
|
|
266
|
+
# add_rule 'temp/', 10
|
|
267
|
+
# end
|
|
270
268
|
#
|
|
269
|
+
# bucket.lifecycle_configuration.rules.size #=> 1
|
|
271
270
|
def replace &block
|
|
272
271
|
@rules = []
|
|
273
272
|
update(&block)
|
|
@@ -326,11 +325,11 @@ module AWS
|
|
|
326
325
|
# Represents a single rule from an Amazon S3 bucket lifecycle
|
|
327
326
|
# configuration.
|
|
328
327
|
#
|
|
329
|
-
#
|
|
330
|
-
#
|
|
328
|
+
# # delete all objects with the prefix 'temporary/' after 10 days
|
|
329
|
+
# bucket.lifecycle_configuration.add_rule 'temporary/', 10
|
|
331
330
|
#
|
|
332
|
-
#
|
|
333
|
-
#
|
|
331
|
+
# # remove the rule created above
|
|
332
|
+
# bucket.lifecycle_configuration.remove_rule 'temporary/'
|
|
334
333
|
#
|
|
335
334
|
#
|
|
336
335
|
class Rule
|
|
@@ -50,7 +50,7 @@ module AWS
|
|
|
50
50
|
|
|
51
51
|
# @param [String] key
|
|
52
52
|
# @return [String,nil] Returns the tag for the given key. If there
|
|
53
|
-
# Returns
|
|
53
|
+
# Returns `nil` if the key does not exist.
|
|
54
54
|
def [] key
|
|
55
55
|
self.to_h[key]
|
|
56
56
|
end
|
|
@@ -74,6 +74,8 @@ module AWS
|
|
|
74
74
|
|
|
75
75
|
# Removes all tags from the bucket.
|
|
76
76
|
#
|
|
77
|
+
# @example
|
|
78
|
+
#
|
|
77
79
|
# bucket.tags.clear
|
|
78
80
|
# bucket.tags.to_h #=> {}
|
|
79
81
|
#
|
|
@@ -92,7 +94,7 @@ module AWS
|
|
|
92
94
|
alias_method :to_hash, :to_h
|
|
93
95
|
|
|
94
96
|
# @param [Hash] other
|
|
95
|
-
# @return [Boolean] Returns
|
|
97
|
+
# @return [Boolean] Returns `true` if the tags for this bucket match
|
|
96
98
|
# the passed hash.
|
|
97
99
|
def eql? other
|
|
98
100
|
self.to_h == other
|
data/lib/aws/s3/cipher_io.rb
CHANGED
|
@@ -44,15 +44,16 @@ module AWS
|
|
|
44
44
|
|
|
45
45
|
# @return [String] Returns the requested number of bytes. If no byte
|
|
46
46
|
# amount is given, it will return the entire body of encrypted data
|
|
47
|
-
def read bytes = nil
|
|
48
|
-
if bytes
|
|
47
|
+
def read bytes = nil, output_buffer = nil
|
|
48
|
+
data = if bytes
|
|
49
49
|
(@eof) ? nil : read_chunk(bytes)
|
|
50
50
|
else
|
|
51
|
-
(@eof) ? "" : read_all
|
|
51
|
+
(@eof) ? "" : read_all
|
|
52
52
|
end
|
|
53
|
+
output_buffer ? output_buffer.replace(data || '') : data
|
|
53
54
|
end
|
|
54
55
|
|
|
55
|
-
# @return [Boolean] Returns
|
|
56
|
+
# @return [Boolean] Returns `true` when the entire stream has been read.
|
|
56
57
|
def eof?
|
|
57
58
|
@eof
|
|
58
59
|
end
|
data/lib/aws/s3/client.rb
CHANGED
|
@@ -29,9 +29,7 @@ module AWS
|
|
|
29
29
|
|
|
30
30
|
XMLNS = "http://s3.amazonaws.com/doc/#{API_VERSION}/"
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
autoload :XML, 'xml'
|
|
34
|
-
end
|
|
32
|
+
autoload :XML, 'aws/s3/client/xml'
|
|
35
33
|
|
|
36
34
|
# @private
|
|
37
35
|
EMPTY_BODY_ERRORS = {
|
|
@@ -161,7 +159,6 @@ module AWS
|
|
|
161
159
|
bucket_method(:put_bucket_website, :put, 'website') do
|
|
162
160
|
|
|
163
161
|
configure_request do |req, options|
|
|
164
|
-
validate_bucket_name!(options[:bucket_name])
|
|
165
162
|
req.body = Nokogiri::XML::Builder.new do |xml|
|
|
166
163
|
xml.WebsiteConfiguration(:xmlns => XMLNS) do
|
|
167
164
|
|
|
@@ -221,10 +218,10 @@ module AWS
|
|
|
221
218
|
# @param [Hash] options
|
|
222
219
|
# @option options [required,String] :bucket_name
|
|
223
220
|
# @return [Core::Response]
|
|
224
|
-
# *
|
|
225
|
-
# *
|
|
226
|
-
# *
|
|
227
|
-
# *
|
|
221
|
+
# * `:index_document` - (Hash)
|
|
222
|
+
# * `:suffix` - (String)
|
|
223
|
+
# * `:error_document` - (Hash)
|
|
224
|
+
# * `:key` - (String)
|
|
228
225
|
bucket_method(:get_bucket_website, :get, 'website', XML::GetBucketWebsite)
|
|
229
226
|
|
|
230
227
|
# @overload delete_bucket_website(options = {})
|
|
@@ -292,16 +289,16 @@ module AWS
|
|
|
292
289
|
# @param [Hash] options
|
|
293
290
|
# @option options [required,String] :bucket_name
|
|
294
291
|
# @option options [required,Array<Hash>] :rules An array of rule hashes.
|
|
295
|
-
# *
|
|
292
|
+
# * `:id` - (String) A unique identifier for the rule. The ID
|
|
296
293
|
# value can be up to 255 characters long. The IDs help you find
|
|
297
294
|
# a rule in the configuration.
|
|
298
|
-
# *
|
|
295
|
+
# * `:allowed_methods` - (required,Array<String>) A list of HTTP
|
|
299
296
|
# methods that you want to allow the origin to execute.
|
|
300
297
|
# Each rule must identify at least one method.
|
|
301
|
-
# *
|
|
298
|
+
# * `:allowed_origins` - (required,Array<String>) A list of origins
|
|
302
299
|
# you want to allow cross-domain requests from. This can
|
|
303
300
|
# contain at most one * wild character.
|
|
304
|
-
# *
|
|
301
|
+
# * `:allowed_headers` - (Array<String>) A list of headers allowed
|
|
305
302
|
# in a pre-flight OPTIONS request via the
|
|
306
303
|
# Access-Control-Request-Headers header. Each header name
|
|
307
304
|
# specified in the Access-Control-Request-Headers header must
|
|
@@ -309,10 +306,10 @@ module AWS
|
|
|
309
306
|
# Amazon S3 will send only the allowed headers in a response
|
|
310
307
|
# that were requested. This can contain at most one * wild
|
|
311
308
|
# character.
|
|
312
|
-
# *
|
|
309
|
+
# * `:max_age_seconds` - (Integer) The time in seconds that your
|
|
313
310
|
# browser is to cache the preflight response for the specified
|
|
314
311
|
# resource.
|
|
315
|
-
# *
|
|
312
|
+
# * `:expose_headers` - (Array<String>) One or more headers in
|
|
316
313
|
# the response that you want customers to be able to access
|
|
317
314
|
# from their applications (for example, from a JavaScript
|
|
318
315
|
# XMLHttpRequest object).
|
|
@@ -472,7 +469,7 @@ module AWS
|
|
|
472
469
|
# @param [Hash] options
|
|
473
470
|
# @option options [required,String] :bucket_name
|
|
474
471
|
# @option options [required,String] :policy This can be a String
|
|
475
|
-
# or any object that responds to
|
|
472
|
+
# or any object that responds to `#to_json`.
|
|
476
473
|
# @return [Core::Response]
|
|
477
474
|
bucket_method(:set_bucket_policy, :put, 'policy') do
|
|
478
475
|
|
|
@@ -586,9 +583,9 @@ module AWS
|
|
|
586
583
|
# Sets the access control list for a bucket. You must specify an ACL
|
|
587
584
|
# via one of the following methods:
|
|
588
585
|
#
|
|
589
|
-
# * as a canned ACL (via
|
|
590
|
-
# * as a list of grants (via the
|
|
591
|
-
# * as an access control policy document (via
|
|
586
|
+
# * as a canned ACL (via `:acl`)
|
|
587
|
+
# * as a list of grants (via the `:grant_*` options)
|
|
588
|
+
# * as an access control policy document (via `:access_control_policy`)
|
|
592
589
|
#
|
|
593
590
|
# @example Using a canned acl
|
|
594
591
|
# s3_client.put_bucket_acl(
|
|
@@ -675,9 +672,9 @@ module AWS
|
|
|
675
672
|
# Sets the access control list for an object. You must specify an ACL
|
|
676
673
|
# via one of the following methods:
|
|
677
674
|
#
|
|
678
|
-
# * as a canned ACL (via
|
|
679
|
-
# * as a list of grants (via the
|
|
680
|
-
# * as an access control policy document (via
|
|
675
|
+
# * as a canned ACL (via `:acl`)
|
|
676
|
+
# * as a list of grants (via the `:grant_*` options)
|
|
677
|
+
# * as an access control policy document (via `:access_control_policy`)
|
|
681
678
|
#
|
|
682
679
|
# @example Using a canned acl
|
|
683
680
|
# s3_client.put_object_acl(
|
|
@@ -774,7 +771,7 @@ module AWS
|
|
|
774
771
|
# :data => 'This is the readme for ...',
|
|
775
772
|
# })
|
|
776
773
|
#
|
|
777
|
-
#
|
|
774
|
+
# ## Block Form
|
|
778
775
|
#
|
|
779
776
|
# In block form, this method yields a stream to the block that
|
|
780
777
|
# accepts data chunks. For example:
|
|
@@ -808,24 +805,24 @@ module AWS
|
|
|
808
805
|
# @option options [required,String,Pathname,File,IO] :data
|
|
809
806
|
# The data to upload. This can be provided as a string,
|
|
810
807
|
# a Pathname object, or any object that responds to
|
|
811
|
-
#
|
|
808
|
+
# `#read` and `#eof?` (e.g. IO, File, Tempfile, StringIO, etc).
|
|
812
809
|
# @option options [Integer] :content_length
|
|
813
810
|
# Required if you are using block form to write data or if it is
|
|
814
|
-
# not possible to determine the size of
|
|
811
|
+
# not possible to determine the size of `:data`. A best effort
|
|
815
812
|
# is made to determine the content length of strings, files,
|
|
816
813
|
# tempfiles, io objects, and any object that responds
|
|
817
|
-
# to
|
|
814
|
+
# to `#length` or `#size`.
|
|
818
815
|
# @option options [String] :website_redirect_location If the bucket is
|
|
819
816
|
# configured as a website, redirects requests for this object to
|
|
820
817
|
# another object in the same bucket or to an external URL.
|
|
821
818
|
# @option options [Hash] :metadata
|
|
822
819
|
# A hash of metadata to be included with the
|
|
823
820
|
# object. These will be sent to S3 as headers prefixed with
|
|
824
|
-
#
|
|
821
|
+
# `x-amz-meta`.
|
|
825
822
|
# @option options [Symbol] :acl (:private) A canned access
|
|
826
823
|
# control policy. Accepted values include:
|
|
827
|
-
# *
|
|
828
|
-
# *
|
|
824
|
+
# * `:private`
|
|
825
|
+
# * `:public_read`
|
|
829
826
|
# * ...
|
|
830
827
|
# @option options [String] :storage_class+ ('STANDARD')
|
|
831
828
|
# Controls whether Reduced Redundancy Storage is enabled for
|
|
@@ -834,7 +831,7 @@ module AWS
|
|
|
834
831
|
# @option options [Symbol,String] :server_side_encryption (nil) The
|
|
835
832
|
# algorithm used to encrypt the object on the server side
|
|
836
833
|
# (e.g. :aes256).
|
|
837
|
-
# object on the server side, e.g.
|
|
834
|
+
# object on the server side, e.g. `:aes256`)
|
|
838
835
|
# @option options [String] :cache_control
|
|
839
836
|
# Can be used to specify caching behavior.
|
|
840
837
|
# @option options [String] :content_disposition
|
|
@@ -842,7 +839,7 @@ module AWS
|
|
|
842
839
|
# @option options [String] :content_encoding
|
|
843
840
|
# Specifies the content encoding.
|
|
844
841
|
# @option options [String] :content_md5
|
|
845
|
-
# The base64 encoded content md5 of the
|
|
842
|
+
# The base64 encoded content md5 of the `:data`.
|
|
846
843
|
# @option options [String] :content_type
|
|
847
844
|
# Specifies the content type.
|
|
848
845
|
# @option options [String] :expires The date and time at which the
|
|
@@ -903,25 +900,25 @@ module AWS
|
|
|
903
900
|
# @option options [required,String] :bucket_name
|
|
904
901
|
# @option options [required,String] :key
|
|
905
902
|
# @option options [Time] :if_modified_since If specified, the
|
|
906
|
-
# response will contain an additional
|
|
903
|
+
# response will contain an additional `:modified` value that
|
|
907
904
|
# returns true if the object was modified after the given
|
|
908
|
-
# time. If
|
|
909
|
-
#
|
|
905
|
+
# time. If `:modified` is false, then the response
|
|
906
|
+
# `:data` value will be `nil`.
|
|
910
907
|
# @option options [Time] :if_unmodified_since If specified, the
|
|
911
|
-
# response will contain an additional
|
|
908
|
+
# response will contain an additional `:unmodified` value
|
|
912
909
|
# that is true if the object was not modified after the
|
|
913
|
-
# given time. If
|
|
914
|
-
# value will be
|
|
910
|
+
# given time. If `:unmodified` returns false, the `:data`
|
|
911
|
+
# value will be `nil`.
|
|
915
912
|
# @option options [String] :if_match If specified, the response
|
|
916
|
-
# will contain an additional
|
|
913
|
+
# will contain an additional `:matches` value that is true
|
|
917
914
|
# if the object ETag matches the value for this option. If
|
|
918
|
-
#
|
|
919
|
-
# response will be
|
|
915
|
+
# `:matches` is false, the `:data` value of the
|
|
916
|
+
# response will be `nil`.
|
|
920
917
|
# @option options [String] :if_none_match If specified, the
|
|
921
|
-
# response will contain an additional
|
|
918
|
+
# response will contain an additional `:matches` value that
|
|
922
919
|
# is true if and only if the object ETag matches the value for
|
|
923
|
-
# this option. If
|
|
924
|
-
# of the response will be
|
|
920
|
+
# this option. If `:matches` is true, the `:data` value
|
|
921
|
+
# of the response will be `nil`.
|
|
925
922
|
# @option options [Range<Integer>] :range A byte range of data to request.
|
|
926
923
|
# @return [Core::Response]
|
|
927
924
|
#
|
|
@@ -1150,31 +1147,34 @@ module AWS
|
|
|
1150
1147
|
# @overload delete_objects(options = {})
|
|
1151
1148
|
# @param [Hash] options
|
|
1152
1149
|
# @option options [required,String] :bucket_name
|
|
1153
|
-
# @option options [required,Array<
|
|
1150
|
+
# @option options [required,Array<Hash>] :objects Each entry should be
|
|
1151
|
+
# a hash with the following keys:
|
|
1152
|
+
# * `:key` - *required*
|
|
1153
|
+
# * `:version_id`
|
|
1154
1154
|
# @option options [Boolean] :quiet (true)
|
|
1155
1155
|
# @option options [String] :mfa
|
|
1156
1156
|
# @return [Core::Response]
|
|
1157
|
-
bucket_method(:delete_objects, :post, 'delete', XML::DeleteObjects,
|
|
1157
|
+
bucket_method(:delete_objects, :post, 'delete', XML::DeleteObjects,
|
|
1158
|
+
:header_options => { :mfa => "x-amz-mfa" }
|
|
1159
|
+
) do
|
|
1160
|
+
|
|
1158
1161
|
configure_request do |req, options|
|
|
1159
1162
|
|
|
1160
1163
|
super(req, options)
|
|
1161
1164
|
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1165
|
+
req.body = Nokogiri::XML::Builder.new do |xml|
|
|
1166
|
+
xml.Delete do
|
|
1167
|
+
xml.Quiet(options.key?(:quiet) ? options[:quiet] : true)
|
|
1168
|
+
(options[:objects] || options[:keys]).each do |obj|
|
|
1169
|
+
xml.Object do
|
|
1170
|
+
xml.Key(obj[:key])
|
|
1171
|
+
xml.VersionId(obj[:version_id]) if obj[:version_id]
|
|
1172
|
+
end
|
|
1173
|
+
end
|
|
1174
|
+
end
|
|
1175
|
+
end.doc.root.to_xml
|
|
1172
1176
|
|
|
1173
|
-
|
|
1174
|
-
xml << "<Delete><Quiet>#{quiet}</Quiet>#{objects}</Delete>"
|
|
1175
|
-
|
|
1176
|
-
req.body = xml
|
|
1177
|
-
req.headers['content-md5'] = md5(xml)
|
|
1177
|
+
req.headers['content-md5'] = md5(req.body)
|
|
1178
1178
|
|
|
1179
1179
|
end
|
|
1180
1180
|
end
|
|
@@ -1188,7 +1188,7 @@ module AWS
|
|
|
1188
1188
|
# @option options [required,String,Pathname,File,IO] :data
|
|
1189
1189
|
# The data to upload. This can be provided as a string,
|
|
1190
1190
|
# a Pathname object, or any object that responds to
|
|
1191
|
-
#
|
|
1191
|
+
# `#read` and `#eof?` (e.g. IO, File, Tempfile, StringIO, etc).
|
|
1192
1192
|
# @return [Core::Response]
|
|
1193
1193
|
object_method(:upload_part, :put,
|
|
1194
1194
|
:header_options => {
|
|
@@ -1223,7 +1223,10 @@ module AWS
|
|
|
1223
1223
|
# @option options [required,String] :bucket_name
|
|
1224
1224
|
# @option options [required,String] :key
|
|
1225
1225
|
# @option options [required,String] :upload_id
|
|
1226
|
-
# @option options [required,Array<
|
|
1226
|
+
# @option options [required,Array<Hash>] :parts An array of hashes
|
|
1227
|
+
# with the following keys:
|
|
1228
|
+
# * `:part_number` [Integer] - *required*
|
|
1229
|
+
# * `:etag` [String] - *required*
|
|
1227
1230
|
# @return [Core::Response]
|
|
1228
1231
|
object_method(:complete_multipart_upload, :post,
|
|
1229
1232
|
XML::CompleteMultipartUpload) do
|
|
@@ -1232,14 +1235,18 @@ module AWS
|
|
|
1232
1235
|
validate_parts!(options[:parts])
|
|
1233
1236
|
super(req, options)
|
|
1234
1237
|
req.add_param('uploadId', options[:upload_id])
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1238
|
+
|
|
1239
|
+
req.body = Nokogiri::XML::Builder.new do |xml|
|
|
1240
|
+
xml.CompleteMultipartUpload do
|
|
1241
|
+
options[:parts].each do |part|
|
|
1242
|
+
xml.Part do
|
|
1243
|
+
xml.PartNumber(part[:part_number])
|
|
1244
|
+
xml.ETag(part[:etag])
|
|
1245
|
+
end
|
|
1246
|
+
end
|
|
1247
|
+
end
|
|
1248
|
+
end.doc.root.to_xml
|
|
1249
|
+
|
|
1243
1250
|
end
|
|
1244
1251
|
|
|
1245
1252
|
process_response do |resp|
|
|
@@ -1413,7 +1420,7 @@ module AWS
|
|
|
1413
1420
|
end
|
|
1414
1421
|
|
|
1415
1422
|
# @param [String] possible_xml
|
|
1416
|
-
# @return [Boolean] Returns
|
|
1423
|
+
# @return [Boolean] Returns `true` if the given string is a valid xml
|
|
1417
1424
|
# document.
|
|
1418
1425
|
def is_xml? possible_xml
|
|
1419
1426
|
begin
|
|
@@ -1466,6 +1473,7 @@ module AWS
|
|
|
1466
1473
|
'content-type' => :content_type,
|
|
1467
1474
|
'content-encoding' => :content_encoding,
|
|
1468
1475
|
'cache-control' => :cache_control,
|
|
1476
|
+
'expires' => :expires,
|
|
1469
1477
|
'etag' => :etag,
|
|
1470
1478
|
'x-amz-website-redirect-location' => :website_redirect_location,
|
|
1471
1479
|
'accept-ranges' => :accept_ranges,
|
|
@@ -1496,16 +1504,16 @@ module AWS
|
|
|
1496
1504
|
validate_bucket_name!(bucket_name) rescue false
|
|
1497
1505
|
end
|
|
1498
1506
|
|
|
1499
|
-
# Returns true if the given
|
|
1507
|
+
# Returns true if the given `bucket_name` is DNS compatible.
|
|
1500
1508
|
#
|
|
1501
1509
|
# DNS compatible bucket names may be accessed like:
|
|
1502
1510
|
#
|
|
1503
|
-
#
|
|
1511
|
+
# http://dns.compat.bucket.name.s3.amazonaws.com/
|
|
1504
1512
|
#
|
|
1505
1513
|
# Whereas non-dns compatible bucket names must place the bucket
|
|
1506
1514
|
# name in the url path, like:
|
|
1507
1515
|
#
|
|
1508
|
-
#
|
|
1516
|
+
# http://s3.amazonaws.com/dns_incompat_bucket_name/
|
|
1509
1517
|
#
|
|
1510
1518
|
# @return [Boolean] Returns true if the given bucket name may be
|
|
1511
1519
|
# is dns compatible.
|
|
@@ -1515,14 +1523,15 @@ module AWS
|
|
|
1515
1523
|
return false if
|
|
1516
1524
|
!valid_bucket_name?(bucket_name) or
|
|
1517
1525
|
|
|
1518
|
-
# Bucket names should not contain underscores (_)
|
|
1519
|
-
bucket_name["_"] or
|
|
1520
|
-
|
|
1521
1526
|
# Bucket names should be between 3 and 63 characters long
|
|
1522
1527
|
bucket_name.size > 63 or
|
|
1523
1528
|
|
|
1524
|
-
# Bucket names
|
|
1525
|
-
|
|
1529
|
+
# Bucket names must only contain lowercase letters, numbers, dots, and dashes
|
|
1530
|
+
# and must start and end with a lowercase letter or a number
|
|
1531
|
+
bucket_name !~ /^[a-z0-9][a-z0-9.-]+[a-z0-9]$/ or
|
|
1532
|
+
|
|
1533
|
+
# Bucket names should not be formatted like an IP address (e.g., 192.168.5.4)
|
|
1534
|
+
bucket_name =~ /(\d+\.){3}\d+/ or
|
|
1526
1535
|
|
|
1527
1536
|
# Bucket names cannot contain two, adjacent periods
|
|
1528
1537
|
bucket_name['..'] or
|
|
@@ -1585,15 +1594,11 @@ module AWS
|
|
|
1585
1594
|
case
|
|
1586
1595
|
when bucket_name.nil? || bucket_name == ''
|
|
1587
1596
|
'may not be blank'
|
|
1588
|
-
when bucket_name !~ /^[
|
|
1589
|
-
'may only contain lowercase letters, numbers, periods (.), ' +
|
|
1597
|
+
when bucket_name !~ /^[A-Za-z0-9._\-]+$/
|
|
1598
|
+
'may only contain uppercase letters, lowercase letters, numbers, periods (.), ' +
|
|
1590
1599
|
'underscores (_), and dashes (-)'
|
|
1591
|
-
when bucket_name !~ /^[a-z0-9]/
|
|
1592
|
-
'must start with a letter or a number'
|
|
1593
1600
|
when !(3..255).include?(bucket_name.size)
|
|
1594
1601
|
'must be between 3 and 255 characters long'
|
|
1595
|
-
when bucket_name =~ /(\d+\.){3}\d+/
|
|
1596
|
-
'must not be formatted like an IP address (e.g., 192.168.5.4)'
|
|
1597
1602
|
when bucket_name =~ /\n/
|
|
1598
1603
|
'must not contain a newline character'
|
|
1599
1604
|
end
|