aws-sdk-s3 1.104.0 → 1.107.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 +20 -0
- data/VERSION +1 -1
- data/lib/aws-sdk-s3/arn/access_point_arn.rb +6 -6
- data/lib/aws-sdk-s3/arn/multi_region_access_point_arn.rb +2 -3
- data/lib/aws-sdk-s3/arn/object_lambda_arn.rb +6 -6
- data/lib/aws-sdk-s3/arn/outpost_access_point_arn.rb +7 -6
- data/lib/aws-sdk-s3/bucket_lifecycle.rb +2 -0
- data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +6 -0
- data/lib/aws-sdk-s3/client.rb +105 -77
- data/lib/aws-sdk-s3/client_api.rb +9 -0
- data/lib/aws-sdk-s3/customizations/object.rb +74 -1
- data/lib/aws-sdk-s3/plugins/accelerate.rb +7 -1
- data/lib/aws-sdk-s3/plugins/arn.rb +11 -24
- data/lib/aws-sdk-s3/plugins/bucket_dns.rb +1 -1
- data/lib/aws-sdk-s3/plugins/dualstack.rb +25 -31
- data/lib/aws-sdk-s3/plugins/s3_signer.rb +19 -4
- data/lib/aws-sdk-s3/types.rb +84 -3
- data/lib/aws-sdk-s3.rb +1 -1
- metadata +4 -4
| @@ -386,6 +386,8 @@ module Aws::S3 | |
| 386 386 | 
             
                ObjectLockToken = Shapes::StringShape.new(name: 'ObjectLockToken')
         | 
| 387 387 | 
             
                ObjectNotInActiveTierError = Shapes::StructureShape.new(name: 'ObjectNotInActiveTierError')
         | 
| 388 388 | 
             
                ObjectOwnership = Shapes::StringShape.new(name: 'ObjectOwnership')
         | 
| 389 | 
            +
                ObjectSizeGreaterThanBytes = Shapes::IntegerShape.new(name: 'ObjectSizeGreaterThanBytes')
         | 
| 390 | 
            +
                ObjectSizeLessThanBytes = Shapes::IntegerShape.new(name: 'ObjectSizeLessThanBytes')
         | 
| 389 391 | 
             
                ObjectStorageClass = Shapes::StringShape.new(name: 'ObjectStorageClass')
         | 
| 390 392 | 
             
                ObjectVersion = Shapes::StructureShape.new(name: 'ObjectVersion')
         | 
| 391 393 | 
             
                ObjectVersionId = Shapes::StringShape.new(name: 'ObjectVersionId')
         | 
| @@ -561,6 +563,7 @@ module Aws::S3 | |
| 561 563 | 
             
                UploadPartRequest = Shapes::StructureShape.new(name: 'UploadPartRequest')
         | 
| 562 564 | 
             
                UserMetadata = Shapes::ListShape.new(name: 'UserMetadata')
         | 
| 563 565 | 
             
                Value = Shapes::StringShape.new(name: 'Value')
         | 
| 566 | 
            +
                VersionCount = Shapes::IntegerShape.new(name: 'VersionCount')
         | 
| 564 567 | 
             
                VersionIdMarker = Shapes::StringShape.new(name: 'VersionIdMarker')
         | 
| 565 568 | 
             
                VersioningConfiguration = Shapes::StructureShape.new(name: 'VersioningConfiguration')
         | 
| 566 569 | 
             
                WebsiteConfiguration = Shapes::StructureShape.new(name: 'WebsiteConfiguration')
         | 
| @@ -1491,10 +1494,14 @@ module Aws::S3 | |
| 1491 1494 |  | 
| 1492 1495 | 
             
                LifecycleRuleAndOperator.add_member(:prefix, Shapes::ShapeRef.new(shape: Prefix, location_name: "Prefix"))
         | 
| 1493 1496 | 
             
                LifecycleRuleAndOperator.add_member(:tags, Shapes::ShapeRef.new(shape: TagSet, location_name: "Tag", metadata: {"flattened"=>true}))
         | 
| 1497 | 
            +
                LifecycleRuleAndOperator.add_member(:object_size_greater_than, Shapes::ShapeRef.new(shape: ObjectSizeGreaterThanBytes, location_name: "ObjectSizeGreaterThan"))
         | 
| 1498 | 
            +
                LifecycleRuleAndOperator.add_member(:object_size_less_than, Shapes::ShapeRef.new(shape: ObjectSizeLessThanBytes, location_name: "ObjectSizeLessThan"))
         | 
| 1494 1499 | 
             
                LifecycleRuleAndOperator.struct_class = Types::LifecycleRuleAndOperator
         | 
| 1495 1500 |  | 
| 1496 1501 | 
             
                LifecycleRuleFilter.add_member(:prefix, Shapes::ShapeRef.new(shape: Prefix, location_name: "Prefix"))
         | 
| 1497 1502 | 
             
                LifecycleRuleFilter.add_member(:tag, Shapes::ShapeRef.new(shape: Tag, location_name: "Tag"))
         | 
| 1503 | 
            +
                LifecycleRuleFilter.add_member(:object_size_greater_than, Shapes::ShapeRef.new(shape: ObjectSizeGreaterThanBytes, location_name: "ObjectSizeGreaterThan"))
         | 
| 1504 | 
            +
                LifecycleRuleFilter.add_member(:object_size_less_than, Shapes::ShapeRef.new(shape: ObjectSizeLessThanBytes, location_name: "ObjectSizeLessThan"))
         | 
| 1498 1505 | 
             
                LifecycleRuleFilter.add_member(:and, Shapes::ShapeRef.new(shape: LifecycleRuleAndOperator, location_name: "And"))
         | 
| 1499 1506 | 
             
                LifecycleRuleFilter.struct_class = Types::LifecycleRuleFilter
         | 
| 1500 1507 |  | 
| @@ -1719,10 +1726,12 @@ module Aws::S3 | |
| 1719 1726 | 
             
                NoSuchUpload.struct_class = Types::NoSuchUpload
         | 
| 1720 1727 |  | 
| 1721 1728 | 
             
                NoncurrentVersionExpiration.add_member(:noncurrent_days, Shapes::ShapeRef.new(shape: Days, location_name: "NoncurrentDays"))
         | 
| 1729 | 
            +
                NoncurrentVersionExpiration.add_member(:newer_noncurrent_versions, Shapes::ShapeRef.new(shape: VersionCount, location_name: "NewerNoncurrentVersions"))
         | 
| 1722 1730 | 
             
                NoncurrentVersionExpiration.struct_class = Types::NoncurrentVersionExpiration
         | 
| 1723 1731 |  | 
| 1724 1732 | 
             
                NoncurrentVersionTransition.add_member(:noncurrent_days, Shapes::ShapeRef.new(shape: Days, location_name: "NoncurrentDays"))
         | 
| 1725 1733 | 
             
                NoncurrentVersionTransition.add_member(:storage_class, Shapes::ShapeRef.new(shape: TransitionStorageClass, location_name: "StorageClass"))
         | 
| 1734 | 
            +
                NoncurrentVersionTransition.add_member(:newer_noncurrent_versions, Shapes::ShapeRef.new(shape: VersionCount, location_name: "NewerNoncurrentVersions"))
         | 
| 1726 1735 | 
             
                NoncurrentVersionTransition.struct_class = Types::NoncurrentVersionTransition
         | 
| 1727 1736 |  | 
| 1728 1737 | 
             
                NoncurrentVersionTransitionList.member = Shapes::ShapeRef.new(shape: NoncurrentVersionTransition)
         | 
| @@ -161,7 +161,7 @@ module Aws | |
| 161 161 | 
             
                  #
         | 
| 162 162 | 
             
                  # @param [Symbol] method
         | 
| 163 163 | 
             
                  #   The S3 operation to generate a presigned URL for. Valid values
         | 
| 164 | 
            -
                  #   are `:get`, `:put`, `:head`, `:delete`, `:create_multipart_upload`, | 
| 164 | 
            +
                  #   are `:get`, `:put`, `:head`, `:delete`, `:create_multipart_upload`,
         | 
| 165 165 | 
             
                  #   `:list_multipart_uploads`, `:complete_multipart_upload`,
         | 
| 166 166 | 
             
                  #   `:abort_multipart_upload`, `:list_parts`, and `:upload_part`.
         | 
| 167 167 | 
             
                  #
         | 
| @@ -215,6 +215,79 @@ module Aws | |
| 215 215 | 
             
                    )
         | 
| 216 216 | 
             
                  end
         | 
| 217 217 |  | 
| 218 | 
            +
                  # Allows you to create presigned URL requests for S3 operations. This
         | 
| 219 | 
            +
                  # method returns a tuple containing the URL and the signed X-amz-* headers
         | 
| 220 | 
            +
                  # to be used with the presigned url.
         | 
| 221 | 
            +
                  #
         | 
| 222 | 
            +
                  # @example Pre-signed GET URL, valid for one hour
         | 
| 223 | 
            +
                  #
         | 
| 224 | 
            +
                  #     obj.presigned_request(:get, expires_in: 3600)
         | 
| 225 | 
            +
                  #     #=> ["https://bucket-name.s3.amazonaws.com/object-key?...", {}]
         | 
| 226 | 
            +
                  #
         | 
| 227 | 
            +
                  # @example Pre-signed PUT with a canned ACL
         | 
| 228 | 
            +
                  #
         | 
| 229 | 
            +
                  #     # the object uploaded using this URL will be publicly accessible
         | 
| 230 | 
            +
                  #     obj.presigned_request(:put, acl: 'public-read')
         | 
| 231 | 
            +
                  #     #=> ["https://bucket-name.s3.amazonaws.com/object-key?...",
         | 
| 232 | 
            +
                  #      {"x-amz-acl"=>"public-read"}]
         | 
| 233 | 
            +
                  #
         | 
| 234 | 
            +
                  # @param [Symbol] method
         | 
| 235 | 
            +
                  #   The S3 operation to generate a presigned request for. Valid values
         | 
| 236 | 
            +
                  #   are `:get`, `:put`, `:head`, `:delete`, `:create_multipart_upload`,
         | 
| 237 | 
            +
                  #   `:list_multipart_uploads`, `:complete_multipart_upload`,
         | 
| 238 | 
            +
                  #   `:abort_multipart_upload`, `:list_parts`, and `:upload_part`.
         | 
| 239 | 
            +
                  #
         | 
| 240 | 
            +
                  # @param [Hash] params
         | 
| 241 | 
            +
                  #   Additional request parameters to use when generating the pre-signed
         | 
| 242 | 
            +
                  #   request. See the related documentation in {Client} for accepted
         | 
| 243 | 
            +
                  #   params.
         | 
| 244 | 
            +
                  #
         | 
| 245 | 
            +
                  #   | Method                       | Client Method                      |
         | 
| 246 | 
            +
                  #   |------------------------------|------------------------------------|
         | 
| 247 | 
            +
                  #   | `:get`                       | {Client#get_object}                |
         | 
| 248 | 
            +
                  #   | `:put`                       | {Client#put_object}                |
         | 
| 249 | 
            +
                  #   | `:head`                      | {Client#head_object}               |
         | 
| 250 | 
            +
                  #   | `:delete`                    | {Client#delete_object}             |
         | 
| 251 | 
            +
                  #   | `:create_multipart_upload`   | {Client#create_multipart_upload}   |
         | 
| 252 | 
            +
                  #   | `:list_multipart_uploads`    | {Client#list_multipart_uploads}    |
         | 
| 253 | 
            +
                  #   | `:complete_multipart_upload` | {Client#complete_multipart_upload} |
         | 
| 254 | 
            +
                  #   | `:abort_multipart_upload`    | {Client#abort_multipart_upload}    |
         | 
| 255 | 
            +
                  #   | `:list_parts`                | {Client#list_parts}                |
         | 
| 256 | 
            +
                  #   | `:upload_part`               | {Client#upload_part}               |
         | 
| 257 | 
            +
                  #
         | 
| 258 | 
            +
                  # @option params [Boolean] :virtual_host (false) When `true` the
         | 
| 259 | 
            +
                  #   presigned URL will use the bucket name as a virtual host.
         | 
| 260 | 
            +
                  #
         | 
| 261 | 
            +
                  #     bucket = Aws::S3::Bucket.new('my.bucket.com')
         | 
| 262 | 
            +
                  #     bucket.object('key').presigned_request(virtual_host: true)
         | 
| 263 | 
            +
                  #     #=> ["http://my.bucket.com/key?...", {}]
         | 
| 264 | 
            +
                  #
         | 
| 265 | 
            +
                  # @option params [Integer] :expires_in (900) Number of seconds before
         | 
| 266 | 
            +
                  #   the pre-signed URL expires. This may not exceed one week (604800
         | 
| 267 | 
            +
                  #   seconds). Note that the pre-signed URL is also only valid as long as
         | 
| 268 | 
            +
                  #   credentials used to sign it are. For example, when using IAM roles,
         | 
| 269 | 
            +
                  #   temporary tokens generated for signing also have a default expiration
         | 
| 270 | 
            +
                  #   which will affect the effective expiration of the pre-signed URL.
         | 
| 271 | 
            +
                  #
         | 
| 272 | 
            +
                  # @raise [ArgumentError] Raised if `:expires_in` exceeds one week
         | 
| 273 | 
            +
                  #   (604800 seconds).
         | 
| 274 | 
            +
                  #
         | 
| 275 | 
            +
                  # @return [String, Hash] A tuple with a presigned URL and headers that
         | 
| 276 | 
            +
                  #   should be included with the request.
         | 
| 277 | 
            +
                  #
         | 
| 278 | 
            +
                  def presigned_request(method, params = {})
         | 
| 279 | 
            +
                    presigner = Presigner.new(client: client)
         | 
| 280 | 
            +
             | 
| 281 | 
            +
                    if %w(delete head get put).include?(method.to_s)
         | 
| 282 | 
            +
                      method = "#{method}_object".to_sym
         | 
| 283 | 
            +
                    end
         | 
| 284 | 
            +
             | 
| 285 | 
            +
                    presigner.presigned_request(
         | 
| 286 | 
            +
                      method.downcase,
         | 
| 287 | 
            +
                      params.merge(bucket: bucket_name, key: key)
         | 
| 288 | 
            +
                    )
         | 
| 289 | 
            +
                  end
         | 
| 290 | 
            +
             | 
| 218 291 | 
             
                  # Returns the public (un-signed) URL for this object.
         | 
| 219 292 | 
             
                  #
         | 
| 220 293 | 
             
                  #     s3.bucket('bucket-name').object('obj-key').public_url
         | 
| @@ -41,11 +41,17 @@ each bucket. [Go here for more information](http://docs.aws.amazon.com/AmazonS3/ | |
| 41 41 | 
             
                          accelerate = context.params.delete(:use_accelerate_endpoint)
         | 
| 42 42 | 
             
                        end
         | 
| 43 43 | 
             
                        accelerate = context.config.use_accelerate_endpoint if accelerate.nil?
         | 
| 44 | 
            -
                        # Raise if :endpoint and  | 
| 44 | 
            +
                        # Raise if :endpoint and accelerate are both provided
         | 
| 45 45 | 
             
                        if accelerate && !context.config.regional_endpoint
         | 
| 46 46 | 
             
                          raise ArgumentError,
         | 
| 47 47 | 
             
                                'Cannot use both :use_accelerate_endpoint and :endpoint'
         | 
| 48 48 | 
             
                        end
         | 
| 49 | 
            +
                        # Raise if :use_fips_endpoint and accelerate are both provided
         | 
| 50 | 
            +
                        if accelerate && context.config.use_fips_endpoint
         | 
| 51 | 
            +
                          raise ArgumentError,
         | 
| 52 | 
            +
                                'Cannot use both :use_accelerate_endpoint and '\
         | 
| 53 | 
            +
                                ':use_fips_endpoint'
         | 
| 54 | 
            +
                        end
         | 
| 49 55 | 
             
                        context[:use_accelerate_endpoint] = accelerate
         | 
| 50 56 | 
             
                        @handler.call(context)
         | 
| 51 57 | 
             
                      end
         | 
| @@ -77,17 +77,10 @@ result in cross region requests. | |
| 77 77 | 
             
                          if arn
         | 
| 78 78 | 
             
                            validate_config!(context, arn)
         | 
| 79 79 |  | 
| 80 | 
            -
                            fips = false
         | 
| 81 | 
            -
                            if resolved_region.include?('fips')
         | 
| 82 | 
            -
                              fips = true
         | 
| 83 | 
            -
                              resolved_region = resolved_region.gsub('fips-', '')
         | 
| 84 | 
            -
                                                               .gsub('-fips', '')
         | 
| 85 | 
            -
                            end
         | 
| 86 | 
            -
             | 
| 87 80 | 
             
                            context.metadata[:s3_arn] = {
         | 
| 88 81 | 
             
                              arn: arn,
         | 
| 89 82 | 
             
                              resolved_region: resolved_region,
         | 
| 90 | 
            -
                              fips:  | 
| 83 | 
            +
                              fips: context.config.use_fips_endpoint,
         | 
| 91 84 | 
             
                              dualstack: extract_dualstack_config!(context)
         | 
| 92 85 | 
             
                            }
         | 
| 93 86 | 
             
                          end
         | 
| @@ -126,7 +119,8 @@ result in cross region requests. | |
| 126 119 |  | 
| 127 120 | 
             
                        if !arn.support_dualstack? && context[:use_dualstack_endpoint]
         | 
| 128 121 | 
             
                          raise ArgumentError,
         | 
| 129 | 
            -
                                'Cannot provide an Outpost Access Point  | 
| 122 | 
            +
                                'Cannot provide an Outpost Access Point, Object Lambda, '\
         | 
| 123 | 
            +
                                'or Multi-region Access Point ARN'\
         | 
| 130 124 | 
             
                                ' when `:use_dualstack_endpoint` is set to true.'
         | 
| 131 125 | 
             
                        end
         | 
| 132 126 |  | 
| @@ -135,6 +129,12 @@ result in cross region requests. | |
| 135 129 | 
             
                                'Cannot provide a Multi-region Access Point ARN with '\
         | 
| 136 130 | 
             
                                '`:s3_disable_multiregion_access_points` set to true'
         | 
| 137 131 | 
             
                        end
         | 
| 132 | 
            +
             | 
| 133 | 
            +
                        if context.config.use_fips_endpoint && !arn.support_fips?
         | 
| 134 | 
            +
                          raise ArgumentError,
         | 
| 135 | 
            +
                                'FIPS client regions are not supported for this type '\
         | 
| 136 | 
            +
                                'of ARN.'
         | 
| 137 | 
            +
                        end
         | 
| 138 138 | 
             
                      end
         | 
| 139 139 | 
             
                    end
         | 
| 140 140 |  | 
| @@ -146,7 +146,7 @@ result in cross region requests. | |
| 146 146 | 
             
                          s3_arn = resolve_arn_type!(arn)
         | 
| 147 147 | 
             
                          s3_arn.validate_arn!
         | 
| 148 148 | 
             
                          validate_region_config!(s3_arn, region, use_arn_region)
         | 
| 149 | 
            -
                          region = s3_arn.region if use_arn_region | 
| 149 | 
            +
                          region = s3_arn.region if use_arn_region
         | 
| 150 150 | 
             
                          [region, s3_arn]
         | 
| 151 151 | 
             
                        else
         | 
| 152 152 | 
             
                          [region]
         | 
| @@ -231,19 +231,6 @@ result in cross region requests. | |
| 231 231 | 
             
                            raise Aws::Errors::InvalidARNPartitionError
         | 
| 232 232 | 
             
                          end
         | 
| 233 233 | 
             
                        else
         | 
| 234 | 
            -
                          if region.include?('fips')
         | 
| 235 | 
            -
                            # If ARN type doesn't support FIPS but the client region is FIPS
         | 
| 236 | 
            -
                            unless arn.support_fips?
         | 
| 237 | 
            -
                              raise ArgumentError,
         | 
| 238 | 
            -
                                    'FIPS client regions are not supported for this type '\
         | 
| 239 | 
            -
                                    'of ARN.'
         | 
| 240 | 
            -
                            end
         | 
| 241 | 
            -
             | 
| 242 | 
            -
                            fips = true
         | 
| 243 | 
            -
                            # Normalize the region so we can compare partition and regions
         | 
| 244 | 
            -
                            region = region.gsub('fips-', '').gsub('-fips', '')
         | 
| 245 | 
            -
                          end
         | 
| 246 | 
            -
             | 
| 247 234 | 
             
                          # use_arn_region does not apply to MRAP (global) arns
         | 
| 248 235 | 
             
                          unless arn.region.empty?
         | 
| 249 236 | 
             
                            # Raise if the ARN and client regions are in different partitions
         | 
| @@ -254,7 +241,7 @@ result in cross region requests. | |
| 254 241 |  | 
| 255 242 | 
             
                            # Raise if regions mismatch
         | 
| 256 243 | 
             
                            # Either when it's a fips client or not using the ARN region
         | 
| 257 | 
            -
                            if  | 
| 244 | 
            +
                            if !use_arn_region && region != arn.region
         | 
| 258 245 | 
             
                              raise Aws::Errors::InvalidARNRegionError
         | 
| 259 246 | 
             
                            end
         | 
| 260 247 | 
             
                          end
         | 
| @@ -5,18 +5,9 @@ module Aws | |
| 5 5 | 
             
                module Plugins
         | 
| 6 6 | 
             
                  # @api private
         | 
| 7 7 | 
             
                  class Dualstack < Seahorse::Client::Plugin
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                    option(:use_dualstack_endpoint,
         | 
| 10 | 
            -
                      default: false,
         | 
| 11 | 
            -
                      doc_type: 'Boolean',
         | 
| 12 | 
            -
                      docstring: <<-DOCS)
         | 
| 13 | 
            -
            When set to `true`, IPv6-compatible bucket endpoints will be used
         | 
| 14 | 
            -
            for all operations.
         | 
| 15 | 
            -
                      DOCS
         | 
| 16 | 
            -
             | 
| 17 8 | 
             
                    def add_handlers(handlers, config)
         | 
| 18 9 | 
             
                      handlers.add(OptionHandler, step: :initialize)
         | 
| 19 | 
            -
                      handlers.add(DualstackHandler, step: :build, priority:  | 
| 10 | 
            +
                      handlers.add(DualstackHandler, step: :build, priority: 49)
         | 
| 20 11 | 
             
                    end
         | 
| 21 12 |  | 
| 22 13 | 
             
                    # @api private
         | 
| @@ -40,38 +31,41 @@ for all operations. | |
| 40 31 | 
             
                    # @api private
         | 
| 41 32 | 
             
                    class DualstackHandler < Seahorse::Client::Handler
         | 
| 42 33 | 
             
                      def call(context)
         | 
| 43 | 
            -
                        if  | 
| 34 | 
            +
                        # only rewrite the endpoint if it's not a custom endpoint
         | 
| 35 | 
            +
                        # accelerate/ARN already handle dualstack cases, so ignore these
         | 
| 36 | 
            +
                        # check to see if dualstack is on but configured off via operation
         | 
| 37 | 
            +
                        if context.config.regional_endpoint &&
         | 
| 38 | 
            +
                           use_dualstack_endpoint?(context)
         | 
| 44 39 | 
             
                          apply_dualstack_endpoint(context)
         | 
| 45 40 | 
             
                        end
         | 
| 46 41 | 
             
                        @handler.call(context)
         | 
| 47 42 | 
             
                      end
         | 
| 48 43 |  | 
| 49 44 | 
             
                      private
         | 
| 50 | 
            -
                      def apply_dualstack_endpoint(context)
         | 
| 51 | 
            -
                        bucket_name = context.params[:bucket]
         | 
| 52 | 
            -
                        region = context.config.region
         | 
| 53 | 
            -
                        dns_suffix = Aws::Partitions::EndpointProvider.dns_suffix_for(region)
         | 
| 54 45 |  | 
| 55 | 
            -
             | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
                           | 
| 59 | 
            -
             | 
| 46 | 
            +
                      def apply_dualstack_endpoint(context)
         | 
| 47 | 
            +
                        new_endpoint = Aws::Partitions::EndpointProvider.resolve(
         | 
| 48 | 
            +
                          context.config.region,
         | 
| 49 | 
            +
                          's3',
         | 
| 50 | 
            +
                          'regional',
         | 
| 51 | 
            +
                          {
         | 
| 52 | 
            +
                            dualstack: context[:use_dualstack_endpoint],
         | 
| 53 | 
            +
                            fips: context.config.use_fips_endpoint
         | 
| 54 | 
            +
                          }
         | 
| 55 | 
            +
                        )
         | 
| 60 56 | 
             
                        endpoint = URI.parse(context.http_request.endpoint.to_s)
         | 
| 61 | 
            -
                        endpoint. | 
| 62 | 
            -
                         | 
| 63 | 
            -
                        endpoint.host = host
         | 
| 64 | 
            -
                        context.http_request.endpoint = endpoint.to_s
         | 
| 65 | 
            -
                      end
         | 
| 66 | 
            -
             | 
| 67 | 
            -
                      def use_bucket_dns?(bucket_name, context)
         | 
| 68 | 
            -
                        ssl = context.http_request.endpoint.scheme == "https"
         | 
| 69 | 
            -
                        bucket_name && BucketDns.dns_compatible?(bucket_name, ssl) &&
         | 
| 70 | 
            -
                          !context.config.force_path_style
         | 
| 57 | 
            +
                        endpoint.host = URI.parse(new_endpoint).host
         | 
| 58 | 
            +
                        context.http_request.endpoint = endpoint
         | 
| 71 59 | 
             
                      end
         | 
| 72 60 |  | 
| 73 61 | 
             
                      def use_dualstack_endpoint?(context)
         | 
| 74 | 
            -
                         | 
| 62 | 
            +
                        # case when dualstack is turned off via operation
         | 
| 63 | 
            +
                        (context[:use_dualstack_endpoint] ||
         | 
| 64 | 
            +
                          context.config.use_dualstack_endpoint) &&
         | 
| 65 | 
            +
                          # accelerate plugin already applies dualstack
         | 
| 66 | 
            +
                          !context[:use_accelerate_endpoint] &&
         | 
| 67 | 
            +
                          # arns handle dualstack
         | 
| 68 | 
            +
                          !context.metadata[:s3_arn]
         | 
| 75 69 | 
             
                      end
         | 
| 76 70 | 
             
                    end
         | 
| 77 71 |  | 
| @@ -22,7 +22,9 @@ module Aws | |
| 22 22 | 
             
                      # S3 removes core's signature_v4 plugin that checks for this
         | 
| 23 23 | 
             
                      raise Aws::Errors::MissingRegionError if cfg.region.nil?
         | 
| 24 24 |  | 
| 25 | 
            -
                      Aws::Partitions::EndpointProvider.signing_region( | 
| 25 | 
            +
                      Aws::Partitions::EndpointProvider.signing_region(
         | 
| 26 | 
            +
                        cfg.region, 's3'
         | 
| 27 | 
            +
                      )
         | 
| 26 28 | 
             
                    end
         | 
| 27 29 |  | 
| 28 30 | 
             
                    def add_handlers(handlers, cfg)
         | 
| @@ -162,7 +164,12 @@ module Aws | |
| 162 164 |  | 
| 163 165 | 
             
                      def custom_endpoint?(resp)
         | 
| 164 166 | 
             
                        resolved_suffix = Aws::Partitions::EndpointProvider.dns_suffix_for(
         | 
| 165 | 
            -
                          resp.context.config.region
         | 
| 167 | 
            +
                          resp.context.config.region,
         | 
| 168 | 
            +
                          's3',
         | 
| 169 | 
            +
                          {
         | 
| 170 | 
            +
                            dualstack: resp.context[:use_dualstack_endpoint],
         | 
| 171 | 
            +
                            fips: resp.context.config.use_fips_endpoint
         | 
| 172 | 
            +
                          }
         | 
| 166 173 | 
             
                        )
         | 
| 167 174 | 
             
                        !resp.context.http_request.endpoint.hostname.include?(resolved_suffix)
         | 
| 168 175 | 
             
                      end
         | 
| @@ -234,12 +241,20 @@ module Aws | |
| 234 241 | 
             
                      # Otherwise it will retry with the ARN as the bucket name.
         | 
| 235 242 | 
             
                      def new_hostname(context, region)
         | 
| 236 243 | 
             
                        uri = URI.parse(
         | 
| 237 | 
            -
                          Aws::Partitions::EndpointProvider.resolve( | 
| 244 | 
            +
                          Aws::Partitions::EndpointProvider.resolve(
         | 
| 245 | 
            +
                            region, 's3', 'regional',
         | 
| 246 | 
            +
                            {
         | 
| 247 | 
            +
                              dualstack: context[:use_dualstack_endpoint],
         | 
| 248 | 
            +
                              fips: context.config.use_fips_endpoint
         | 
| 249 | 
            +
                            }
         | 
| 250 | 
            +
                          )
         | 
| 238 251 | 
             
                        )
         | 
| 239 252 |  | 
| 240 253 | 
             
                        if (arn = context.metadata[:s3_arn])
         | 
| 241 254 | 
             
                          # Retry with the response region and not the ARN resolved one
         | 
| 242 | 
            -
                          ARN.resolve_url!( | 
| 255 | 
            +
                          ARN.resolve_url!(
         | 
| 256 | 
            +
                            uri, arn[:arn], region, arn[:fips], arn[:dualstack]
         | 
| 257 | 
            +
                          ).host
         | 
| 243 258 | 
             
                        else
         | 
| 244 259 | 
             
                          "#{context.params[:bucket]}.#{uri.host}"
         | 
| 245 260 | 
             
                        end
         | 
    
        data/lib/aws-sdk-s3/types.rb
    CHANGED
    
    | @@ -517,6 +517,8 @@ module Aws::S3 | |
| 517 517 | 
             
                #                 key: "ObjectKey", # required
         | 
| 518 518 | 
             
                #                 value: "Value", # required
         | 
| 519 519 | 
             
                #               },
         | 
| 520 | 
            +
                #               object_size_greater_than: 1,
         | 
| 521 | 
            +
                #               object_size_less_than: 1,
         | 
| 520 522 | 
             
                #               and: {
         | 
| 521 523 | 
             
                #                 prefix: "Prefix",
         | 
| 522 524 | 
             
                #                 tags: [
         | 
| @@ -525,6 +527,8 @@ module Aws::S3 | |
| 525 527 | 
             
                #                     value: "Value", # required
         | 
| 526 528 | 
             
                #                   },
         | 
| 527 529 | 
             
                #                 ],
         | 
| 530 | 
            +
                #                 object_size_greater_than: 1,
         | 
| 531 | 
            +
                #                 object_size_less_than: 1,
         | 
| 528 532 | 
             
                #               },
         | 
| 529 533 | 
             
                #             },
         | 
| 530 534 | 
             
                #             status: "Enabled", # required, accepts Enabled, Disabled
         | 
| @@ -539,10 +543,12 @@ module Aws::S3 | |
| 539 543 | 
             
                #               {
         | 
| 540 544 | 
             
                #                 noncurrent_days: 1,
         | 
| 541 545 | 
             
                #                 storage_class: "GLACIER", # accepts GLACIER, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, DEEP_ARCHIVE
         | 
| 546 | 
            +
                #                 newer_noncurrent_versions: 1,
         | 
| 542 547 | 
             
                #               },
         | 
| 543 548 | 
             
                #             ],
         | 
| 544 549 | 
             
                #             noncurrent_version_expiration: {
         | 
| 545 550 | 
             
                #               noncurrent_days: 1,
         | 
| 551 | 
            +
                #               newer_noncurrent_versions: 1,
         | 
| 546 552 | 
             
                #             },
         | 
| 547 553 | 
             
                #             abort_incomplete_multipart_upload: {
         | 
| 548 554 | 
             
                #               days_after_initiation: 1,
         | 
| @@ -1113,6 +1119,9 @@ module Aws::S3 | |
| 1113 1119 | 
             
                #
         | 
| 1114 1120 | 
             
                # @!attribute [rw] parts
         | 
| 1115 1121 | 
             
                #   Array of CompletedPart data types.
         | 
| 1122 | 
            +
                #
         | 
| 1123 | 
            +
                #   If you do not supply a valid `Part` with your request, the service
         | 
| 1124 | 
            +
                #   sends back an HTTP 400 response.
         | 
| 1116 1125 | 
             
                #   @return [Array<Types::CompletedPart>]
         | 
| 1117 1126 | 
             
                #
         | 
| 1118 1127 | 
             
                # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompletedMultipartUpload AWS API Documentation
         | 
| @@ -7325,9 +7334,11 @@ module Aws::S3 | |
| 7325 7334 | 
             
                #             noncurrent_version_transition: {
         | 
| 7326 7335 | 
             
                #               noncurrent_days: 1,
         | 
| 7327 7336 | 
             
                #               storage_class: "GLACIER", # accepts GLACIER, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, DEEP_ARCHIVE
         | 
| 7337 | 
            +
                #               newer_noncurrent_versions: 1,
         | 
| 7328 7338 | 
             
                #             },
         | 
| 7329 7339 | 
             
                #             noncurrent_version_expiration: {
         | 
| 7330 7340 | 
             
                #               noncurrent_days: 1,
         | 
| 7341 | 
            +
                #               newer_noncurrent_versions: 1,
         | 
| 7331 7342 | 
             
                #             },
         | 
| 7332 7343 | 
             
                #             abort_incomplete_multipart_upload: {
         | 
| 7333 7344 | 
             
                #               days_after_initiation: 1,
         | 
| @@ -7405,6 +7416,8 @@ module Aws::S3 | |
| 7405 7416 | 
             
                #             key: "ObjectKey", # required
         | 
| 7406 7417 | 
             
                #             value: "Value", # required
         | 
| 7407 7418 | 
             
                #           },
         | 
| 7419 | 
            +
                #           object_size_greater_than: 1,
         | 
| 7420 | 
            +
                #           object_size_less_than: 1,
         | 
| 7408 7421 | 
             
                #           and: {
         | 
| 7409 7422 | 
             
                #             prefix: "Prefix",
         | 
| 7410 7423 | 
             
                #             tags: [
         | 
| @@ -7413,6 +7426,8 @@ module Aws::S3 | |
| 7413 7426 | 
             
                #                 value: "Value", # required
         | 
| 7414 7427 | 
             
                #               },
         | 
| 7415 7428 | 
             
                #             ],
         | 
| 7429 | 
            +
                #             object_size_greater_than: 1,
         | 
| 7430 | 
            +
                #             object_size_less_than: 1,
         | 
| 7416 7431 | 
             
                #           },
         | 
| 7417 7432 | 
             
                #         },
         | 
| 7418 7433 | 
             
                #         status: "Enabled", # required, accepts Enabled, Disabled
         | 
| @@ -7427,10 +7442,12 @@ module Aws::S3 | |
| 7427 7442 | 
             
                #           {
         | 
| 7428 7443 | 
             
                #             noncurrent_days: 1,
         | 
| 7429 7444 | 
             
                #             storage_class: "GLACIER", # accepts GLACIER, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, DEEP_ARCHIVE
         | 
| 7445 | 
            +
                #             newer_noncurrent_versions: 1,
         | 
| 7430 7446 | 
             
                #           },
         | 
| 7431 7447 | 
             
                #         ],
         | 
| 7432 7448 | 
             
                #         noncurrent_version_expiration: {
         | 
| 7433 7449 | 
             
                #           noncurrent_days: 1,
         | 
| 7450 | 
            +
                #           newer_noncurrent_versions: 1,
         | 
| 7434 7451 | 
             
                #         },
         | 
| 7435 7452 | 
             
                #         abort_incomplete_multipart_upload: {
         | 
| 7436 7453 | 
             
                #           days_after_initiation: 1,
         | 
| @@ -7538,6 +7555,8 @@ module Aws::S3 | |
| 7538 7555 | 
             
                #             value: "Value", # required
         | 
| 7539 7556 | 
             
                #           },
         | 
| 7540 7557 | 
             
                #         ],
         | 
| 7558 | 
            +
                #         object_size_greater_than: 1,
         | 
| 7559 | 
            +
                #         object_size_less_than: 1,
         | 
| 7541 7560 | 
             
                #       }
         | 
| 7542 7561 | 
             
                #
         | 
| 7543 7562 | 
             
                # @!attribute [rw] prefix
         | 
| @@ -7549,11 +7568,21 @@ module Aws::S3 | |
| 7549 7568 | 
             
                #   the rule to apply.
         | 
| 7550 7569 | 
             
                #   @return [Array<Types::Tag>]
         | 
| 7551 7570 | 
             
                #
         | 
| 7571 | 
            +
                # @!attribute [rw] object_size_greater_than
         | 
| 7572 | 
            +
                #   Minimum object size to which the rule applies.
         | 
| 7573 | 
            +
                #   @return [Integer]
         | 
| 7574 | 
            +
                #
         | 
| 7575 | 
            +
                # @!attribute [rw] object_size_less_than
         | 
| 7576 | 
            +
                #   Maximum object size to which the rule applies.
         | 
| 7577 | 
            +
                #   @return [Integer]
         | 
| 7578 | 
            +
                #
         | 
| 7552 7579 | 
             
                # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/LifecycleRuleAndOperator AWS API Documentation
         | 
| 7553 7580 | 
             
                #
         | 
| 7554 7581 | 
             
                class LifecycleRuleAndOperator < Struct.new(
         | 
| 7555 7582 | 
             
                  :prefix,
         | 
| 7556 | 
            -
                  :tags | 
| 7583 | 
            +
                  :tags,
         | 
| 7584 | 
            +
                  :object_size_greater_than,
         | 
| 7585 | 
            +
                  :object_size_less_than)
         | 
| 7557 7586 | 
             
                  SENSITIVE = []
         | 
| 7558 7587 | 
             
                  include Aws::Structure
         | 
| 7559 7588 | 
             
                end
         | 
| @@ -7571,6 +7600,8 @@ module Aws::S3 | |
| 7571 7600 | 
             
                #           key: "ObjectKey", # required
         | 
| 7572 7601 | 
             
                #           value: "Value", # required
         | 
| 7573 7602 | 
             
                #         },
         | 
| 7603 | 
            +
                #         object_size_greater_than: 1,
         | 
| 7604 | 
            +
                #         object_size_less_than: 1,
         | 
| 7574 7605 | 
             
                #         and: {
         | 
| 7575 7606 | 
             
                #           prefix: "Prefix",
         | 
| 7576 7607 | 
             
                #           tags: [
         | 
| @@ -7579,6 +7610,8 @@ module Aws::S3 | |
| 7579 7610 | 
             
                #               value: "Value", # required
         | 
| 7580 7611 | 
             
                #             },
         | 
| 7581 7612 | 
             
                #           ],
         | 
| 7613 | 
            +
                #           object_size_greater_than: 1,
         | 
| 7614 | 
            +
                #           object_size_less_than: 1,
         | 
| 7582 7615 | 
             
                #         },
         | 
| 7583 7616 | 
             
                #       }
         | 
| 7584 7617 | 
             
                #
         | 
| @@ -7599,6 +7632,14 @@ module Aws::S3 | |
| 7599 7632 | 
             
                #   to apply.
         | 
| 7600 7633 | 
             
                #   @return [Types::Tag]
         | 
| 7601 7634 | 
             
                #
         | 
| 7635 | 
            +
                # @!attribute [rw] object_size_greater_than
         | 
| 7636 | 
            +
                #   Minimum object size to which the rule applies.
         | 
| 7637 | 
            +
                #   @return [Integer]
         | 
| 7638 | 
            +
                #
         | 
| 7639 | 
            +
                # @!attribute [rw] object_size_less_than
         | 
| 7640 | 
            +
                #   Maximum object size to which the rule applies.
         | 
| 7641 | 
            +
                #   @return [Integer]
         | 
| 7642 | 
            +
                #
         | 
| 7602 7643 | 
             
                # @!attribute [rw] and
         | 
| 7603 7644 | 
             
                #   This is used in a Lifecycle Rule Filter to apply a logical AND to
         | 
| 7604 7645 | 
             
                #   two or more predicates. The Lifecycle Rule will apply to any object
         | 
| @@ -7610,6 +7651,8 @@ module Aws::S3 | |
| 7610 7651 | 
             
                class LifecycleRuleFilter < Struct.new(
         | 
| 7611 7652 | 
             
                  :prefix,
         | 
| 7612 7653 | 
             
                  :tag,
         | 
| 7654 | 
            +
                  :object_size_greater_than,
         | 
| 7655 | 
            +
                  :object_size_less_than,
         | 
| 7613 7656 | 
             
                  :and)
         | 
| 7614 7657 | 
             
                  SENSITIVE = []
         | 
| 7615 7658 | 
             
                  include Aws::Structure
         | 
| @@ -9261,6 +9304,7 @@ module Aws::S3 | |
| 9261 9304 | 
             
                #
         | 
| 9262 9305 | 
             
                #       {
         | 
| 9263 9306 | 
             
                #         noncurrent_days: 1,
         | 
| 9307 | 
            +
                #         newer_noncurrent_versions: 1,
         | 
| 9264 9308 | 
             
                #       }
         | 
| 9265 9309 | 
             
                #
         | 
| 9266 9310 | 
             
                # @!attribute [rw] noncurrent_days
         | 
| @@ -9274,10 +9318,23 @@ module Aws::S3 | |
| 9274 9318 | 
             
                #   [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations
         | 
| 9275 9319 | 
             
                #   @return [Integer]
         | 
| 9276 9320 | 
             
                #
         | 
| 9321 | 
            +
                # @!attribute [rw] newer_noncurrent_versions
         | 
| 9322 | 
            +
                #   Specifies how many noncurrent versions Amazon S3 will retain. If
         | 
| 9323 | 
            +
                #   there are this many more recent noncurrent versions, Amazon S3 will
         | 
| 9324 | 
            +
                #   take the associated action. For more information about noncurrent
         | 
| 9325 | 
            +
                #   versions, see [Lifecycle configuration elements][1] in the *Amazon
         | 
| 9326 | 
            +
                #   S3 User Guide*.
         | 
| 9327 | 
            +
                #
         | 
| 9328 | 
            +
                #
         | 
| 9329 | 
            +
                #
         | 
| 9330 | 
            +
                #   [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html
         | 
| 9331 | 
            +
                #   @return [Integer]
         | 
| 9332 | 
            +
                #
         | 
| 9277 9333 | 
             
                # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/NoncurrentVersionExpiration AWS API Documentation
         | 
| 9278 9334 | 
             
                #
         | 
| 9279 9335 | 
             
                class NoncurrentVersionExpiration < Struct.new(
         | 
| 9280 | 
            -
                  :noncurrent_days | 
| 9336 | 
            +
                  :noncurrent_days,
         | 
| 9337 | 
            +
                  :newer_noncurrent_versions)
         | 
| 9281 9338 | 
             
                  SENSITIVE = []
         | 
| 9282 9339 | 
             
                  include Aws::Structure
         | 
| 9283 9340 | 
             
                end
         | 
| @@ -9297,6 +9354,7 @@ module Aws::S3 | |
| 9297 9354 | 
             
                #       {
         | 
| 9298 9355 | 
             
                #         noncurrent_days: 1,
         | 
| 9299 9356 | 
             
                #         storage_class: "GLACIER", # accepts GLACIER, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, DEEP_ARCHIVE
         | 
| 9357 | 
            +
                #         newer_noncurrent_versions: 1,
         | 
| 9300 9358 | 
             
                #       }
         | 
| 9301 9359 | 
             
                #
         | 
| 9302 9360 | 
             
                # @!attribute [rw] noncurrent_days
         | 
| @@ -9314,11 +9372,24 @@ module Aws::S3 | |
| 9314 9372 | 
             
                #   The class of storage used to store the object.
         | 
| 9315 9373 | 
             
                #   @return [String]
         | 
| 9316 9374 | 
             
                #
         | 
| 9375 | 
            +
                # @!attribute [rw] newer_noncurrent_versions
         | 
| 9376 | 
            +
                #   Specifies how many noncurrent versions Amazon S3 will retain. If
         | 
| 9377 | 
            +
                #   there are this many more recent noncurrent versions, Amazon S3 will
         | 
| 9378 | 
            +
                #   take the associated action. For more information about noncurrent
         | 
| 9379 | 
            +
                #   versions, see [Lifecycle configuration elements][1] in the *Amazon
         | 
| 9380 | 
            +
                #   S3 User Guide*.
         | 
| 9381 | 
            +
                #
         | 
| 9382 | 
            +
                #
         | 
| 9383 | 
            +
                #
         | 
| 9384 | 
            +
                #   [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html
         | 
| 9385 | 
            +
                #   @return [Integer]
         | 
| 9386 | 
            +
                #
         | 
| 9317 9387 | 
             
                # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/NoncurrentVersionTransition AWS API Documentation
         | 
| 9318 9388 | 
             
                #
         | 
| 9319 9389 | 
             
                class NoncurrentVersionTransition < Struct.new(
         | 
| 9320 9390 | 
             
                  :noncurrent_days,
         | 
| 9321 | 
            -
                  :storage_class | 
| 9391 | 
            +
                  :storage_class,
         | 
| 9392 | 
            +
                  :newer_noncurrent_versions)
         | 
| 9322 9393 | 
             
                  SENSITIVE = []
         | 
| 9323 9394 | 
             
                  include Aws::Structure
         | 
| 9324 9395 | 
             
                end
         | 
| @@ -10599,6 +10670,8 @@ module Aws::S3 | |
| 10599 10670 | 
             
                #                   key: "ObjectKey", # required
         | 
| 10600 10671 | 
             
                #                   value: "Value", # required
         | 
| 10601 10672 | 
             
                #                 },
         | 
| 10673 | 
            +
                #                 object_size_greater_than: 1,
         | 
| 10674 | 
            +
                #                 object_size_less_than: 1,
         | 
| 10602 10675 | 
             
                #                 and: {
         | 
| 10603 10676 | 
             
                #                   prefix: "Prefix",
         | 
| 10604 10677 | 
             
                #                   tags: [
         | 
| @@ -10607,6 +10680,8 @@ module Aws::S3 | |
| 10607 10680 | 
             
                #                       value: "Value", # required
         | 
| 10608 10681 | 
             
                #                     },
         | 
| 10609 10682 | 
             
                #                   ],
         | 
| 10683 | 
            +
                #                   object_size_greater_than: 1,
         | 
| 10684 | 
            +
                #                   object_size_less_than: 1,
         | 
| 10610 10685 | 
             
                #                 },
         | 
| 10611 10686 | 
             
                #               },
         | 
| 10612 10687 | 
             
                #               status: "Enabled", # required, accepts Enabled, Disabled
         | 
| @@ -10621,10 +10696,12 @@ module Aws::S3 | |
| 10621 10696 | 
             
                #                 {
         | 
| 10622 10697 | 
             
                #                   noncurrent_days: 1,
         | 
| 10623 10698 | 
             
                #                   storage_class: "GLACIER", # accepts GLACIER, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, DEEP_ARCHIVE
         | 
| 10699 | 
            +
                #                   newer_noncurrent_versions: 1,
         | 
| 10624 10700 | 
             
                #                 },
         | 
| 10625 10701 | 
             
                #               ],
         | 
| 10626 10702 | 
             
                #               noncurrent_version_expiration: {
         | 
| 10627 10703 | 
             
                #                 noncurrent_days: 1,
         | 
| 10704 | 
            +
                #                 newer_noncurrent_versions: 1,
         | 
| 10628 10705 | 
             
                #               },
         | 
| 10629 10706 | 
             
                #               abort_incomplete_multipart_upload: {
         | 
| 10630 10707 | 
             
                #                 days_after_initiation: 1,
         | 
| @@ -10684,9 +10761,11 @@ module Aws::S3 | |
| 10684 10761 | 
             
                #               noncurrent_version_transition: {
         | 
| 10685 10762 | 
             
                #                 noncurrent_days: 1,
         | 
| 10686 10763 | 
             
                #                 storage_class: "GLACIER", # accepts GLACIER, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, DEEP_ARCHIVE
         | 
| 10764 | 
            +
                #                 newer_noncurrent_versions: 1,
         | 
| 10687 10765 | 
             
                #               },
         | 
| 10688 10766 | 
             
                #               noncurrent_version_expiration: {
         | 
| 10689 10767 | 
             
                #                 noncurrent_days: 1,
         | 
| 10768 | 
            +
                #                 newer_noncurrent_versions: 1,
         | 
| 10690 10769 | 
             
                #               },
         | 
| 10691 10770 | 
             
                #               abort_incomplete_multipart_upload: {
         | 
| 10692 10771 | 
             
                #                 days_after_initiation: 1,
         | 
| @@ -13700,9 +13779,11 @@ module Aws::S3 | |
| 13700 13779 | 
             
                #         noncurrent_version_transition: {
         | 
| 13701 13780 | 
             
                #           noncurrent_days: 1,
         | 
| 13702 13781 | 
             
                #           storage_class: "GLACIER", # accepts GLACIER, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, DEEP_ARCHIVE
         | 
| 13782 | 
            +
                #           newer_noncurrent_versions: 1,
         | 
| 13703 13783 | 
             
                #         },
         | 
| 13704 13784 | 
             
                #         noncurrent_version_expiration: {
         | 
| 13705 13785 | 
             
                #           noncurrent_days: 1,
         | 
| 13786 | 
            +
                #           newer_noncurrent_versions: 1,
         | 
| 13706 13787 | 
             
                #         },
         | 
| 13707 13788 | 
             
                #         abort_incomplete_multipart_upload: {
         | 
| 13708 13789 | 
             
                #           days_after_initiation: 1,
         |