aws-sdk-s3 1.115.0 → 1.117.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 +4 -4
 - data/CHANGELOG.md +12 -0
 - data/VERSION +1 -1
 - data/lib/aws-sdk-s3/client.rb +142 -125
 - data/lib/aws-sdk-s3/client_api.rb +95 -95
 - data/lib/aws-sdk-s3/customizations/bucket.rb +20 -46
 - data/lib/aws-sdk-s3/endpoint_parameters.rb +142 -0
 - data/lib/aws-sdk-s3/endpoint_provider.rb +2020 -0
 - data/lib/aws-sdk-s3/endpoints.rb +2149 -0
 - data/lib/aws-sdk-s3/multipart_stream_uploader.rb +25 -6
 - data/lib/aws-sdk-s3/plugins/accelerate.rb +3 -50
 - data/lib/aws-sdk-s3/plugins/arn.rb +0 -184
 - data/lib/aws-sdk-s3/plugins/bucket_dns.rb +3 -39
 - data/lib/aws-sdk-s3/plugins/bucket_name_restrictions.rb +1 -6
 - data/lib/aws-sdk-s3/plugins/dualstack.rb +1 -49
 - data/lib/aws-sdk-s3/plugins/endpoints.rb +262 -0
 - data/lib/aws-sdk-s3/plugins/expect_100_continue.rb +2 -1
 - data/lib/aws-sdk-s3/plugins/iad_regional_endpoint.rb +0 -29
 - data/lib/aws-sdk-s3/plugins/s3_signer.rb +27 -123
 - data/lib/aws-sdk-s3/presigned_post.rb +9 -16
 - data/lib/aws-sdk-s3/presigner.rb +19 -34
 - data/lib/aws-sdk-s3.rb +5 -1
 - metadata +8 -9
 - data/lib/aws-sdk-s3/arn/access_point_arn.rb +0 -69
 - data/lib/aws-sdk-s3/arn/multi_region_access_point_arn.rb +0 -68
 - data/lib/aws-sdk-s3/arn/object_lambda_arn.rb +0 -69
 - data/lib/aws-sdk-s3/arn/outpost_access_point_arn.rb +0 -74
 - data/lib/aws-sdk-s3/plugins/object_lambda_endpoint.rb +0 -25
 
| 
         @@ -5,22 +5,6 @@ require 'uri' 
     | 
|
| 
       5 
5 
     | 
    
         
             
            module Aws
         
     | 
| 
       6 
6 
     | 
    
         
             
              module S3
         
     | 
| 
       7 
7 
     | 
    
         
             
                class Bucket
         
     | 
| 
       8 
     | 
    
         
            -
                  # Save the old initialize method so that we can call 'super'.
         
     | 
| 
       9 
     | 
    
         
            -
                  old_initialize = instance_method(:initialize)
         
     | 
| 
       10 
     | 
    
         
            -
                  # Make the method redefinable
         
     | 
| 
       11 
     | 
    
         
            -
                  alias_method :initialize, :initialize
         
     | 
| 
       12 
     | 
    
         
            -
                  # Define a new initialize method that extracts out a bucket ARN.
         
     | 
| 
       13 
     | 
    
         
            -
                  define_method(:initialize) do |*args|
         
     | 
| 
       14 
     | 
    
         
            -
                    old_initialize.bind(self).call(*args)
         
     | 
| 
       15 
     | 
    
         
            -
                    resolved_region, arn = Plugins::ARN.resolve_arn!(
         
     | 
| 
       16 
     | 
    
         
            -
                      name,
         
     | 
| 
       17 
     | 
    
         
            -
                      client.config.region,
         
     | 
| 
       18 
     | 
    
         
            -
                      client.config.s3_use_arn_region
         
     | 
| 
       19 
     | 
    
         
            -
                    )
         
     | 
| 
       20 
     | 
    
         
            -
                    @resolved_region = resolved_region
         
     | 
| 
       21 
     | 
    
         
            -
                    @arn = arn
         
     | 
| 
       22 
     | 
    
         
            -
                  end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
8 
     | 
    
         
             
                  # Deletes all objects and versioned objects from this bucket
         
     | 
| 
       25 
9 
     | 
    
         
             
                  #
         
     | 
| 
       26 
10 
     | 
    
         
             
                  # @example
         
     | 
| 
         @@ -105,14 +89,27 @@ module Aws 
     | 
|
| 
       105 
89 
     | 
    
         
             
                    if options[:virtual_host]
         
     | 
| 
       106 
90 
     | 
    
         
             
                      scheme = options.fetch(:secure, true) ? 'https' : 'http'
         
     | 
| 
       107 
91 
     | 
    
         
             
                      "#{scheme}://#{name}"
         
     | 
| 
       108 
     | 
    
         
            -
                    elsif @arn
         
     | 
| 
       109 
     | 
    
         
            -
                      Plugins::ARN.resolve_url!(
         
     | 
| 
       110 
     | 
    
         
            -
                        client.config.endpoint.dup,
         
     | 
| 
       111 
     | 
    
         
            -
                        @arn,
         
     | 
| 
       112 
     | 
    
         
            -
                        @resolved_region
         
     | 
| 
       113 
     | 
    
         
            -
                      ).to_s
         
     | 
| 
       114 
92 
     | 
    
         
             
                    else
         
     | 
| 
       115 
     | 
    
         
            -
                       
     | 
| 
      
 93 
     | 
    
         
            +
                      # Taken from Aws::S3::Endpoints module
         
     | 
| 
      
 94 
     | 
    
         
            +
                      unless client.config.regional_endpoint
         
     | 
| 
      
 95 
     | 
    
         
            +
                        endpoint = client.config.endpoint.to_s
         
     | 
| 
      
 96 
     | 
    
         
            +
                      end
         
     | 
| 
      
 97 
     | 
    
         
            +
                      params = Aws::S3::EndpointParameters.new(
         
     | 
| 
      
 98 
     | 
    
         
            +
                        bucket: name,
         
     | 
| 
      
 99 
     | 
    
         
            +
                        region: client.config.region,
         
     | 
| 
      
 100 
     | 
    
         
            +
                        use_fips: client.config.use_fips_endpoint,
         
     | 
| 
      
 101 
     | 
    
         
            +
                        use_dual_stack: client.config.use_dualstack_endpoint,
         
     | 
| 
      
 102 
     | 
    
         
            +
                        endpoint: endpoint,
         
     | 
| 
      
 103 
     | 
    
         
            +
                        force_path_style: client.config.force_path_style,
         
     | 
| 
      
 104 
     | 
    
         
            +
                        accelerate: client.config.use_accelerate_endpoint,
         
     | 
| 
      
 105 
     | 
    
         
            +
                        use_global_endpoint: client.config.s3_us_east_1_regional_endpoint == 'legacy',
         
     | 
| 
      
 106 
     | 
    
         
            +
                        use_object_lambda_endpoint: nil,
         
     | 
| 
      
 107 
     | 
    
         
            +
                        disable_access_points: nil,
         
     | 
| 
      
 108 
     | 
    
         
            +
                        disable_multi_region_access_points: client.config.s3_disable_multiregion_access_points,
         
     | 
| 
      
 109 
     | 
    
         
            +
                        use_arn_region: client.config.s3_use_arn_region,
         
     | 
| 
      
 110 
     | 
    
         
            +
                      )
         
     | 
| 
      
 111 
     | 
    
         
            +
                      endpoint = Aws::S3::EndpointProvider.new.resolve_endpoint(params)
         
     | 
| 
      
 112 
     | 
    
         
            +
                      endpoint.url
         
     | 
| 
       116 
113 
     | 
    
         
             
                    end
         
     | 
| 
       117 
114 
     | 
    
         
             
                  end
         
     | 
| 
       118 
115 
     | 
    
         | 
| 
         @@ -142,29 +139,6 @@ module Aws 
     | 
|
| 
       142 
139 
     | 
    
         | 
| 
       143 
140 
     | 
    
         
             
                    self
         
     | 
| 
       144 
141 
     | 
    
         
             
                  end
         
     | 
| 
       145 
     | 
    
         
            -
             
     | 
| 
       146 
     | 
    
         
            -
                  private
         
     | 
| 
       147 
     | 
    
         
            -
             
     | 
| 
       148 
     | 
    
         
            -
                  def s3_bucket_url
         
     | 
| 
       149 
     | 
    
         
            -
                    url = client.config.endpoint.dup
         
     | 
| 
       150 
     | 
    
         
            -
                    if bucket_as_hostname?(url.scheme == 'https')
         
     | 
| 
       151 
     | 
    
         
            -
                      url.host = "#{name}.#{url.host}"
         
     | 
| 
       152 
     | 
    
         
            -
                    else
         
     | 
| 
       153 
     | 
    
         
            -
                      url.path += '/' unless url.path[-1] == '/'
         
     | 
| 
       154 
     | 
    
         
            -
                      url.path += Seahorse::Util.uri_escape(name)
         
     | 
| 
       155 
     | 
    
         
            -
                    end
         
     | 
| 
       156 
     | 
    
         
            -
                    if (client.config.region == 'us-east-1') &&
         
     | 
| 
       157 
     | 
    
         
            -
                       (client.config.s3_us_east_1_regional_endpoint == 'legacy')
         
     | 
| 
       158 
     | 
    
         
            -
                      url.host = Plugins::IADRegionalEndpoint.legacy_host(url.host)
         
     | 
| 
       159 
     | 
    
         
            -
                    end
         
     | 
| 
       160 
     | 
    
         
            -
                    url.to_s
         
     | 
| 
       161 
     | 
    
         
            -
                  end
         
     | 
| 
       162 
     | 
    
         
            -
             
     | 
| 
       163 
     | 
    
         
            -
                  def bucket_as_hostname?(https)
         
     | 
| 
       164 
     | 
    
         
            -
                    Plugins::BucketDns.dns_compatible?(name, https) &&
         
     | 
| 
       165 
     | 
    
         
            -
                      !client.config.force_path_style
         
     | 
| 
       166 
     | 
    
         
            -
                  end
         
     | 
| 
       167 
     | 
    
         
            -
             
     | 
| 
       168 
142 
     | 
    
         
             
                end
         
     | 
| 
       169 
143 
     | 
    
         
             
              end
         
     | 
| 
       170 
144 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,142 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # WARNING ABOUT GENERATED CODE
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # This file is generated. See the contributing guide for more information:
         
     | 
| 
      
 6 
     | 
    
         
            +
            # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            # WARNING ABOUT GENERATED CODE
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            module Aws::S3
         
     | 
| 
      
 11 
     | 
    
         
            +
              # Endpoint parameters used to influence endpoints per request.
         
     | 
| 
      
 12 
     | 
    
         
            +
              #
         
     | 
| 
      
 13 
     | 
    
         
            +
              # @!attribute bucket
         
     | 
| 
      
 14 
     | 
    
         
            +
              #   The S3 bucket used to send the request. This is an optional parameter that will be set automatically for operations that are scoped to an S3 bucket.
         
     | 
| 
      
 15 
     | 
    
         
            +
              #
         
     | 
| 
      
 16 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
      
 17 
     | 
    
         
            +
              #
         
     | 
| 
      
 18 
     | 
    
         
            +
              # @!attribute region
         
     | 
| 
      
 19 
     | 
    
         
            +
              #   The AWS region used to dispatch the request.
         
     | 
| 
      
 20 
     | 
    
         
            +
              #
         
     | 
| 
      
 21 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
      
 22 
     | 
    
         
            +
              #
         
     | 
| 
      
 23 
     | 
    
         
            +
              # @!attribute use_fips
         
     | 
| 
      
 24 
     | 
    
         
            +
              #   When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.
         
     | 
| 
      
 25 
     | 
    
         
            +
              #
         
     | 
| 
      
 26 
     | 
    
         
            +
              #   @return [Boolean]
         
     | 
| 
      
 27 
     | 
    
         
            +
              #
         
     | 
| 
      
 28 
     | 
    
         
            +
              # @!attribute use_dual_stack
         
     | 
| 
      
 29 
     | 
    
         
            +
              #   When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.
         
     | 
| 
      
 30 
     | 
    
         
            +
              #
         
     | 
| 
      
 31 
     | 
    
         
            +
              #   @return [Boolean]
         
     | 
| 
      
 32 
     | 
    
         
            +
              #
         
     | 
| 
      
 33 
     | 
    
         
            +
              # @!attribute endpoint
         
     | 
| 
      
 34 
     | 
    
         
            +
              #   Override the endpoint used to send this request
         
     | 
| 
      
 35 
     | 
    
         
            +
              #
         
     | 
| 
      
 36 
     | 
    
         
            +
              #   @return [String]
         
     | 
| 
      
 37 
     | 
    
         
            +
              #
         
     | 
| 
      
 38 
     | 
    
         
            +
              # @!attribute force_path_style
         
     | 
| 
      
 39 
     | 
    
         
            +
              #   When true, force a path-style endpoint to be used where the bucket name is part of the path.
         
     | 
| 
      
 40 
     | 
    
         
            +
              #
         
     | 
| 
      
 41 
     | 
    
         
            +
              #   @return [Boolean]
         
     | 
| 
      
 42 
     | 
    
         
            +
              #
         
     | 
| 
      
 43 
     | 
    
         
            +
              # @!attribute accelerate
         
     | 
| 
      
 44 
     | 
    
         
            +
              #   When true, use S3 Accelerate. NOTE: Not all regions support S3 accelerate.
         
     | 
| 
      
 45 
     | 
    
         
            +
              #
         
     | 
| 
      
 46 
     | 
    
         
            +
              #   @return [Boolean]
         
     | 
| 
      
 47 
     | 
    
         
            +
              #
         
     | 
| 
      
 48 
     | 
    
         
            +
              # @!attribute use_global_endpoint
         
     | 
| 
      
 49 
     | 
    
         
            +
              #   Whether the global endpoint should be used, rather then the regional endpoint for us-east-1.
         
     | 
| 
      
 50 
     | 
    
         
            +
              #
         
     | 
| 
      
 51 
     | 
    
         
            +
              #   @return [Boolean]
         
     | 
| 
      
 52 
     | 
    
         
            +
              #
         
     | 
| 
      
 53 
     | 
    
         
            +
              # @!attribute use_object_lambda_endpoint
         
     | 
| 
      
 54 
     | 
    
         
            +
              #   Internal parameter to use object lambda endpoint for an operation (eg: WriteGetObjectResponse)
         
     | 
| 
      
 55 
     | 
    
         
            +
              #
         
     | 
| 
      
 56 
     | 
    
         
            +
              #   @return [Boolean]
         
     | 
| 
      
 57 
     | 
    
         
            +
              #
         
     | 
| 
      
 58 
     | 
    
         
            +
              # @!attribute disable_access_points
         
     | 
| 
      
 59 
     | 
    
         
            +
              #   Internal parameter to disable Access Point Buckets
         
     | 
| 
      
 60 
     | 
    
         
            +
              #
         
     | 
| 
      
 61 
     | 
    
         
            +
              #   @return [Boolean]
         
     | 
| 
      
 62 
     | 
    
         
            +
              #
         
     | 
| 
      
 63 
     | 
    
         
            +
              # @!attribute disable_multi_region_access_points
         
     | 
| 
      
 64 
     | 
    
         
            +
              #   Whether multi-region access points (MRAP) should be disabled.
         
     | 
| 
      
 65 
     | 
    
         
            +
              #
         
     | 
| 
      
 66 
     | 
    
         
            +
              #   @return [Boolean]
         
     | 
| 
      
 67 
     | 
    
         
            +
              #
         
     | 
| 
      
 68 
     | 
    
         
            +
              # @!attribute use_arn_region
         
     | 
| 
      
 69 
     | 
    
         
            +
              #   When an Access Point ARN is provided and this flag is enabled, the SDK MUST use the ARN's region when constructing the endpoint instead of the client's configured region.
         
     | 
| 
      
 70 
     | 
    
         
            +
              #
         
     | 
| 
      
 71 
     | 
    
         
            +
              #   @return [Boolean]
         
     | 
| 
      
 72 
     | 
    
         
            +
              #
         
     | 
| 
      
 73 
     | 
    
         
            +
              EndpointParameters = Struct.new(
         
     | 
| 
      
 74 
     | 
    
         
            +
                :bucket,
         
     | 
| 
      
 75 
     | 
    
         
            +
                :region,
         
     | 
| 
      
 76 
     | 
    
         
            +
                :use_fips,
         
     | 
| 
      
 77 
     | 
    
         
            +
                :use_dual_stack,
         
     | 
| 
      
 78 
     | 
    
         
            +
                :endpoint,
         
     | 
| 
      
 79 
     | 
    
         
            +
                :force_path_style,
         
     | 
| 
      
 80 
     | 
    
         
            +
                :accelerate,
         
     | 
| 
      
 81 
     | 
    
         
            +
                :use_global_endpoint,
         
     | 
| 
      
 82 
     | 
    
         
            +
                :use_object_lambda_endpoint,
         
     | 
| 
      
 83 
     | 
    
         
            +
                :disable_access_points,
         
     | 
| 
      
 84 
     | 
    
         
            +
                :disable_multi_region_access_points,
         
     | 
| 
      
 85 
     | 
    
         
            +
                :use_arn_region,
         
     | 
| 
      
 86 
     | 
    
         
            +
              ) do
         
     | 
| 
      
 87 
     | 
    
         
            +
                include Aws::Structure
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
                # @api private
         
     | 
| 
      
 90 
     | 
    
         
            +
                class << self
         
     | 
| 
      
 91 
     | 
    
         
            +
                  PARAM_MAP = {
         
     | 
| 
      
 92 
     | 
    
         
            +
                    'Bucket' => :bucket,
         
     | 
| 
      
 93 
     | 
    
         
            +
                    'Region' => :region,
         
     | 
| 
      
 94 
     | 
    
         
            +
                    'UseFIPS' => :use_fips,
         
     | 
| 
      
 95 
     | 
    
         
            +
                    'UseDualStack' => :use_dual_stack,
         
     | 
| 
      
 96 
     | 
    
         
            +
                    'Endpoint' => :endpoint,
         
     | 
| 
      
 97 
     | 
    
         
            +
                    'ForcePathStyle' => :force_path_style,
         
     | 
| 
      
 98 
     | 
    
         
            +
                    'Accelerate' => :accelerate,
         
     | 
| 
      
 99 
     | 
    
         
            +
                    'UseGlobalEndpoint' => :use_global_endpoint,
         
     | 
| 
      
 100 
     | 
    
         
            +
                    'UseObjectLambdaEndpoint' => :use_object_lambda_endpoint,
         
     | 
| 
      
 101 
     | 
    
         
            +
                    'DisableAccessPoints' => :disable_access_points,
         
     | 
| 
      
 102 
     | 
    
         
            +
                    'DisableMultiRegionAccessPoints' => :disable_multi_region_access_points,
         
     | 
| 
      
 103 
     | 
    
         
            +
                    'UseArnRegion' => :use_arn_region,
         
     | 
| 
      
 104 
     | 
    
         
            +
                  }.freeze
         
     | 
| 
      
 105 
     | 
    
         
            +
                end
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
                def initialize(options = {})
         
     | 
| 
      
 108 
     | 
    
         
            +
                  self[:bucket] = options[:bucket]
         
     | 
| 
      
 109 
     | 
    
         
            +
                  self[:region] = options[:region]
         
     | 
| 
      
 110 
     | 
    
         
            +
                  self[:use_fips] = options[:use_fips]
         
     | 
| 
      
 111 
     | 
    
         
            +
                  self[:use_fips] = false if self[:use_fips].nil?
         
     | 
| 
      
 112 
     | 
    
         
            +
                  if self[:use_fips].nil?
         
     | 
| 
      
 113 
     | 
    
         
            +
                    raise ArgumentError, "Missing required EndpointParameter: :use_fips"
         
     | 
| 
      
 114 
     | 
    
         
            +
                  end
         
     | 
| 
      
 115 
     | 
    
         
            +
                  self[:use_dual_stack] = options[:use_dual_stack]
         
     | 
| 
      
 116 
     | 
    
         
            +
                  self[:use_dual_stack] = false if self[:use_dual_stack].nil?
         
     | 
| 
      
 117 
     | 
    
         
            +
                  if self[:use_dual_stack].nil?
         
     | 
| 
      
 118 
     | 
    
         
            +
                    raise ArgumentError, "Missing required EndpointParameter: :use_dual_stack"
         
     | 
| 
      
 119 
     | 
    
         
            +
                  end
         
     | 
| 
      
 120 
     | 
    
         
            +
                  self[:endpoint] = options[:endpoint]
         
     | 
| 
      
 121 
     | 
    
         
            +
                  self[:force_path_style] = options[:force_path_style]
         
     | 
| 
      
 122 
     | 
    
         
            +
                  self[:accelerate] = options[:accelerate]
         
     | 
| 
      
 123 
     | 
    
         
            +
                  self[:accelerate] = false if self[:accelerate].nil?
         
     | 
| 
      
 124 
     | 
    
         
            +
                  if self[:accelerate].nil?
         
     | 
| 
      
 125 
     | 
    
         
            +
                    raise ArgumentError, "Missing required EndpointParameter: :accelerate"
         
     | 
| 
      
 126 
     | 
    
         
            +
                  end
         
     | 
| 
      
 127 
     | 
    
         
            +
                  self[:use_global_endpoint] = options[:use_global_endpoint]
         
     | 
| 
      
 128 
     | 
    
         
            +
                  self[:use_global_endpoint] = false if self[:use_global_endpoint].nil?
         
     | 
| 
      
 129 
     | 
    
         
            +
                  if self[:use_global_endpoint].nil?
         
     | 
| 
      
 130 
     | 
    
         
            +
                    raise ArgumentError, "Missing required EndpointParameter: :use_global_endpoint"
         
     | 
| 
      
 131 
     | 
    
         
            +
                  end
         
     | 
| 
      
 132 
     | 
    
         
            +
                  self[:use_object_lambda_endpoint] = options[:use_object_lambda_endpoint]
         
     | 
| 
      
 133 
     | 
    
         
            +
                  self[:disable_access_points] = options[:disable_access_points]
         
     | 
| 
      
 134 
     | 
    
         
            +
                  self[:disable_multi_region_access_points] = options[:disable_multi_region_access_points]
         
     | 
| 
      
 135 
     | 
    
         
            +
                  self[:disable_multi_region_access_points] = false if self[:disable_multi_region_access_points].nil?
         
     | 
| 
      
 136 
     | 
    
         
            +
                  if self[:disable_multi_region_access_points].nil?
         
     | 
| 
      
 137 
     | 
    
         
            +
                    raise ArgumentError, "Missing required EndpointParameter: :disable_multi_region_access_points"
         
     | 
| 
      
 138 
     | 
    
         
            +
                  end
         
     | 
| 
      
 139 
     | 
    
         
            +
                  self[:use_arn_region] = options[:use_arn_region]
         
     | 
| 
      
 140 
     | 
    
         
            +
                end
         
     | 
| 
      
 141 
     | 
    
         
            +
              end
         
     | 
| 
      
 142 
     | 
    
         
            +
            end
         
     |