Skip to content

DeleteObjects needs MD5 param #3068

@asterissco

Description

@asterissco

Describe the bug

aws-version:

aws/aws-crt-php                    v1.2.7    AWS Common Runtime for PHP
aws/aws-sdk-php                    3.339.0   AWS SDK for PHP - Use Amazon Web Services in your PHP project

php-version: PHP 8.3.1 (cli)

DeleteObjects method has stopped working, return this issue


  Error executing "DeleteObjects" on "http://192.168.22.50:9000/default?delete"; AWS HTTP error: Client error: `POST http://192.168.22.50:9000/default?delete` resulted in a `400 Bad Request` response:
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>MissingContentMD5</Code><Message>Missing required header for this re (truncated...)
 MissingContentMD5 (client): Missing required header for this request: Content-Md5. - <?xml version="1.0" encoding="UTF-8"?>
<Error><Code>MissingContentMD5</Code><Message>Missing required header for this request: Content-Md5.</Message><BucketName>default</BucketName><Resource>/default</Resource><RequestId>181EE3A2C13907B9</RequestId><
HostId>dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8</HostId></Error>

  at vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php:196
    192▕         $parts['request'] = $request;
    193▕         $parts['connection_error'] = !empty($err['connection_error']);
    194▕         $parts['transfer_stats'] = $stats;
    195▕ 
  ➜ 196▕         return new $this->exceptionClass(
    197▕             sprintf(
    198▕                 'Error executing "%s" on "%s"; %s',
    199▕                 $command->getName(),
    200▕                 $request->getUri(),

      +20 vendor frames 
  21  app/Console/Commands/Escombros.php:71
      Aws\AwsClient::__call()

      +12 vendor frames 
  34  artisan:35

The DeleteObject method works correctly.

According to S3 documentation this parameter is not needed in this method doc

$result = $client->deleteObjects([
    'Bucket' => '<string>', // REQUIRED
    'BypassGovernanceRetention' => true || false,
    'ChecksumAlgorithm' => 'CRC32|CRC32C|SHA1|SHA256|CRC64NVME',
    'Delete' => [ // REQUIRED
        'Objects' => [ // REQUIRED
            [
                'ETag' => '<string>',
                'Key' => '<string>', // REQUIRED
                'LastModifiedTime' => <integer || string || DateTime>,
                'Size' => <integer>,
                'VersionId' => '<string>',
            ],
            // ...
        ],
        'Quiet' => true || false,
    ],
    'ExpectedBucketOwner' => '<string>',
    'MFA' => '<string>',
    'RequestPayer' => 'requester',
]);

I'm not sure if the parameter refers to the md5 of the message or the files.

Regression Issue

  • Select this option if this issue appears to be a regression.

Expected Behavior

Fail

aws/aws-sdk-php 3.339.0 AWS SDK for PHP - Use Amazon Web Services in your PHP project

Works

aws/aws-sdk-php 3.296.1 AWS SDK for PHP - Use Amazon Web Services in your PHP project

Current Behavior

qrms@pre:/opt/qualitas/common/backend$ php artisan qaisc:escombros

-> Entering step init, name 'idempotency_auto_fill'
---------------------------------------------------

  command was set to array(3) {
    ["instance"]=>
    string(32) "000000000000061f0000000000000000"
    ["name"]=>
    string(13) "DeleteObjects"
    ["params"]=>
    array(5) {
      ["Bucket"]=>
      string(7) "default"
      ["Delete"]=>
      array(1) {
        ["Objects"]=>
        array(1) {
          [0]=>
          array(1) {
            ["Key"]=>
            string(44) "20250125/02/7d26e317b3f22e38b4278e7431c20907"
          }
        }
      }
      ["ChecksumAlgorithm"]=>
      string(6) "SHA256"
      ["@http"]=>
      array(3) {
        ["connect_timeout"]=>
        NULL
        ["timeout"]=>
        NULL
        ["debug"]=>
        resource(901) of type (stream)
      }
      ["@context"]=>
      array(0) {
      }
    }
  }
  
  request was set to array(0) {
  }
  


-> Entering step init, name 's3.ssec'
-------------------------------------

  no changes


-> Entering step init, name 's3.source_file'
--------------------------------------------

  no changes


-> Entering step init, name 's3.save_as'
----------------------------------------

  no changes


-> Entering step init, name 's3.location'
-----------------------------------------

  no changes


-> Entering step init, name 's3.auto_encode'
--------------------------------------------

  no changes


-> Entering step init, name 's3.head_object'
--------------------------------------------

  no changes


-> Entering step validate, name 'validation'
--------------------------------------------

  no changes


-> Entering step validate, name 'input_validation_middleware'
-------------------------------------------------------------

  no changes


-> Entering step build, name 'auth-selection'
---------------------------------------------

  [email protected]_version was set to v4


-> Entering step build, name 'endpoint-resolution'
--------------------------------------------------

  [email protected]_version changed from v4 to s3v4
  [email protected]_service was set to s3
  [email protected]_region was set to Region1


-> Entering step build, name 'builder'
--------------------------------------

  request.instance was set to 00000000000007930000000000000000
  request.method was set to POST
  request.headers was set to array(4) {
    ["X-Amz-Security-Token"]=>
    string(7) "[TOKEN]"
    ["Host"]=>
    array(1) {
      [0]=>
      string(18) "192.168.22.50:9000"
    }
    ["Content-Type"]=>
    array(1) {
      [0]=>
      string(15) "application/xml"
    }
    ["x-amz-sdk-checksum-algorithm"]=>
    array(1) {
      [0]=>
      string(6) "SHA256"
    }
  }
  
  request.body was set to <?xml version="1.0" encoding="UTF-8"?>
  <Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Object><Key>20250125/02/7d26e317b3f22e38b4278e7431c20907</Key></Object></Delete>
  
  request.scheme was set to http
  request.port was set to 9000
  request.path was set to /default
  request.query was set to delete


-> Entering step build, name 's3.check_empty_path_with_query'
-------------------------------------------------------------

  no changes


-> Entering step build, name 'ApiCallMonitoringMiddleware'
----------------------------------------------------------

  no changes


-> Entering step build, name ''
-------------------------------

  request.instance changed from 00000000000007930000000000000000 to 000000000000087b0000000000000000
  request.headers.X-Amz-User-Agent was set to array(1) {
    [0]=>
    string(0) ""
  }
  


-> Entering step build, name 'endpoint_parameter'
-------------------------------------------------

  no changes


-> Entering step build, name 'request-compression'
--------------------------------------------------

  no changes


-> Entering step build, name 'recursion-detection'
--------------------------------------------------

  no changes


-> Entering step build, name 's3.checksum'
------------------------------------------

  request.instance changed from 000000000000087b0000000000000000 to 00000000000008870000000000000000
  request.headers.x-amz-checksum-sha256 was set to array(1) {
    [0]=>
    string(44) "IfqaE6tK6dLP6CU9t1uh/6sNrtB3TuefxjhSzj222f8="
  }
  


-> Entering step build, name 's3.content_type'
----------------------------------------------

  no changes


-> Entering step build, name 's3.bucket_endpoint_arn'
-----------------------------------------------------

  no changes


-> Entering step sign, name 'StreamRequestPayloadMiddleware'
------------------------------------------------------------

  no changes


-> Entering step sign, name 'invocation-id'
-------------------------------------------

  request.instance changed from 00000000000008870000000000000000 to 000000000000087d0000000000000000
  request.headers.aws-sdk-invocation-id was set to array(1) {
    [0]=>
    string(32) "f7b10bea407e82273a644643dcefcebe"
  }
  


-> Entering step sign, name 'retry'
-----------------------------------

  request.instance changed from 000000000000087d0000000000000000 to 00000000000008840000000000000000
  request.headers.aws-sdk-retry was set to array(1) {
    [0]=>
    string(3) "0/0"
  }
  


-> Entering step sign, name 'signer'
------------------------------------

  request.instance changed from 00000000000008840000000000000000 to 000000000000084b0000000000000000
  request.headers.x-amz-content-sha256 was set to array(1) {
    [0]=>
    string(64) "21fa9a13ab4ae9d2cfe8253db75ba1ffab0daed0774ee79fc63852ce3db6d9ff"
  }
  
  request.headers.X-Amz-Date was set to array(1) {
    [0]=>
    string(16) "20250128T152113Z"
  }
  
  request.headers.Authorization was set to array(1) {
    [0]=>
    string(270) "AWS4-HMAC-SHA256 Credential=administrador/20250128/Region1/s3/aws4_request, SignedHeaders=host;x-amz-checksum-sha256;x-amz-content-sha256;x-amz-date;x-amz-sdk-checksum-algorithm;x-amz-user-agent, Signature=[SIGNATURE]
  }
  


-> Entering step sign, name 'user-agent'
----------------------------------------

  request.instance changed from 000000000000084b0000000000000000 to 000000000000084c0000000000000000
  request.headers.User-Agent was set to array(1) {
    [0]=>
    string(78) "aws-sdk-php/3.339.0 ua/2.1 OS/Linux#5.4.0-169-generic lang/php#8.3.1 m/P,Y,e,N"
  }
  


-> Entering step sign, name 's3.expires_parsing'
------------------------------------------------

  no changes


-> Entering step sign, name 's3.put_object_url'
-----------------------------------------------

  no changes


-> Entering step sign, name 's3.permanent_redirect'
---------------------------------------------------

  no changes


-> Entering step attempt, name 'ApiCallAttemptMonitoringMiddleware'
-------------------------------------------------------------------

  no changes

*   Trying 192.168.22.50:9000...
* TCP_NODELAY set
* Connected to 192.168.22.50 (192.168.22.50) port 9000 (#0)
> POST /default?delete HTTP/1.1
Host: 192.168.22.50:9000
Content-Type: application/xml
x-amz-sdk-checksum-algorithm: SHA256
X-Amz-User-Agent:
x-amz-checksum-sha256: IfqaE6tK6dLP6CU9t1uh/6sNrtB3TuefxjhSzj222f8=
aws-sdk-invocation-id: f7b10bea407e82273a644643dcefcebe
aws-sdk-retry: 0/0
x-amz-content-sha256: 21fa9a13ab4ae9d2cfe8253db75ba1ffab0daed0774ee79fc63852ce3db6d9ff
X-Amz-Date: 20250128T152113Z
Authorization: AWS4-HMAC-SHA256 Credential=administrador/20250128/Region1/s3/aws4_request, SignedHeaders=host;x-amz-checksum-sha256;x-amz-content-sha256;x-amz-date;x-amz-sdk-checksum-algorithm;x-amz-user-agent, Signature=[SIGNATURE]
User-Agent: aws-sdk-php/3.339.0 ua/2.1 OS/Linux#5.4.0-169-generic lang/php#8.3.1 m/P,Y,e,N GuzzleHttp/7
Content-Length: 177

* upload completely sent off: 177 out of 177 bytes
* Mark bundle as not supporting multiuse
< HTTP/1.1 400 Bad Request
< Accept-Ranges: bytes
< Content-Length: 338
< Content-Type: application/xml
< Server: MinIO
< Strict-Transport-Security: max-age=31536000; includeSubDomains
< Vary: Origin
< Vary: Accept-Encoding
< X-Amz-Id-2: dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8
< X-Amz-Request-Id: 181EE46F572C9D03
< X-Content-Type-Options: nosniff
< X-Xss-Protection: 1; mode=block
< Date: Tue, 28 Jan 2025 15:21:13 GMT
< 
* Connection #0 to host 192.168.22.50 left intact

<- Leaving step attempt, name 'ApiCallAttemptMonitoringMiddleware'
------------------------------------------------------------------

  error was set to array(13) {
    ["instance"]=>
    string(32) "00000000000008830000000000000000"
    ["class"]=>
    string(28) "Aws\S3\Exception\S3Exception"
    ["message"]=>
    string(759) "Error executing "DeleteObjects" on "http://192.168.22.50:9000/default?delete"; AWS HTTP error: Client error: `POST http://192.168.22.50:9000/default?delete` resulted in a `400 Bad Request` response:
  <?xml version="1.0" encoding="UTF-8"?>
  <Error><Code>MissingContentMD5</Code><Message>Missing required header for this re (truncated...)
   MissingContentMD5 (client): Missing required header for this request: Content-Md5. - <?xml version="1.0" encoding="UTF-8"?>
  <Error><Code>MissingContentMD5</Code><Message>Missing required header for this request: Content-Md5.</Message><BucketName>default</BucketName><Resource>/default</Resource><RequestId>181EE46F572C9D03</RequestId><HostId>dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8</HostId></Error>"
    ["file"]=>
    string(78) "/opt/qualitas/common/backend/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php"
    ["line"]=>
    int(196)
    ["trace"]=>
    string(3934) "#0 /opt/qualitas/common/backend/vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php(97): Aws\WrappedHttpHandler->parseError()
  #1 /opt/qualitas/common/backend/vendor/guzzlehttp/promises/src/Promise.php(209): Aws\WrappedHttpHandler->Aws\{closure}()
  #2 /opt/qualitas/common/backend/vendor/guzzlehttp/promises/src/Promise.php(174): GuzzleHttp\Promise\Promise::callHandler()
  #3 /opt/qualitas/common/backend/vendor/guzzlehttp/promises/src/RejectedPromise.php(49): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}()
  #4 /opt/qualitas/common/backend/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\Promise\RejectedPromise::GuzzleHttp\Promise\{closure}()
  #5 /opt/qualitas/common/backend/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(167): GuzzleHttp\Promise\TaskQueue->run()
  #6 /opt/qualitas/common/backend/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(206): GuzzleHttp\Handler\CurlMultiHandler->tick()
  #7 /opt/qualitas/common/backend/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\Handler\CurlMultiHandler->execute()
  #8 /opt/qualitas/common/backend/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\Promise\Promise->invokeWaitFn()
  #9 /opt/qualitas/common/backend/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\Promise\Promise->waitIfPending()
  #10 /opt/qualitas/common/backend/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\Promise\Promise->invokeWaitList()
  #11 /opt/qualitas/common/backend/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\Promise\Promise->waitIfPending()
  #12 /opt/qualitas/common/backend/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\Promise\Promise->invokeWaitList()
  #13 /opt/qualitas/common/backend/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\Promise\Promise->waitIfPending()
  #14 /opt/qualitas/common/backend/vendor/aws/aws-sdk-php/src/AwsClientTrait.php(58): GuzzleHttp\Promise\Promise->wait()
  #15 /opt/qualitas/common/backend/vendor/aws/aws-sdk-php/src/AwsClientTrait.php(86): Aws\AwsClient->execute()
  #16 /opt/qualitas/common/backend/app/Console/Commands/Escombros.php(71): Aws\AwsClient->__call()
  #17 /opt/qualitas/common/backend/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): App\Console\Commands\Escombros->handle()
  #18 /opt/qualitas/common/backend/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
  #19 /opt/qualitas/common/backend/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure()
  #20 /opt/qualitas/common/backend/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod()
  #21 /opt/qualitas/common/backend/vendor/laravel/framework/src/Illuminate/Container/Container.php(662): Illuminate\Container\BoundMethod::call()
  #22 /opt/qualitas/common/backend/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\Container\Container->call()
  #23 /opt/qualitas/common/backend/vendor/symfony/console/Command/Command.php(326): Illuminate\Console\Command->execute()
  #24 /opt/qualitas/common/backend/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\Component\Console\Command\Command->run()
  #25 /opt/qualitas/common/backend/vendor/symfony/console/Application.php(1096): Illuminate\Console\Command->run()
  #26 /opt/qualitas/common/backend/vendor/symfony/console/Application.php(324): Symfony\Component\Console\Application->doRunCommand()
  #27 /opt/qualitas/common/backend/vendor/symfony/console/Application.php(175): Symfony\Component\Console\Application->doRun()
  #28 /opt/qualitas/common/backend/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(201): Symfony\Component\Console\Application->run()
  #29 /opt/qualitas/common/backend/artisan(35): Illuminate\Foundation\Console\Kernel->handle()
  #30 {main}"
    ["type"]=>
    string(6) "client"
    ["code"]=>
    string(17) "MissingContentMD5"
    ["requestId"]=>
    string(16) "181EE46F572C9D03"
    ["statusCode"]=>
    int(400)
    ["result"]=>
    NULL
    ["request"]=>
    array(8) {
      ["instance"]=>
      string(32) "000000000000084c0000000000000000"
      ["method"]=>
      string(4) "POST"
      ["headers"]=>
      array(12) {
        ["X-Amz-Security-Token"]=>
        string(7) "[TOKEN]"
        ["Host"]=>
        array(1) {
          [0]=>
          string(18) "192.168.22.50:9000"
        }
        ["Content-Type"]=>
        array(1) {
          [0]=>
          string(15) "application/xml"
        }
        ["x-amz-sdk-checksum-algorithm"]=>
        array(1) {
          [0]=>
          string(6) "SHA256"
        }
        ["X-Amz-User-Agent"]=>
        array(1) {
          [0]=>
          string(0) ""
        }
        ["x-amz-checksum-sha256"]=>
        array(1) {
          [0]=>
          string(44) "IfqaE6tK6dLP6CU9t1uh/6sNrtB3TuefxjhSzj222f8="
        }
        ["aws-sdk-invocation-id"]=>
        array(1) {
          [0]=>
          string(32) "f7b10bea407e82273a644643dcefcebe"
        }
        ["aws-sdk-retry"]=>
        array(1) {
          [0]=>
          string(3) "0/0"
        }
        ["x-amz-content-sha256"]=>
        array(1) {
          [0]=>
          string(64) "21fa9a13ab4ae9d2cfe8253db75ba1ffab0daed0774ee79fc63852ce3db6d9ff"
        }
        ["X-Amz-Date"]=>
        array(1) {
          [0]=>
          string(16) "20250128T152113Z"
        }
        ["Authorization"]=>
        array(1) {
          [0]=>
          string(270) "AWS4-HMAC-SHA256 Credential=administrador/20250128/Region1/s3/aws4_request, SignedHeaders=host;x-amz-checksum-sha256;x-amz-content-sha256;x-amz-date;x-amz-sdk-checksum-algorithm;x-amz-user-agent, Signature=[SIGNATURE]
        }
        ["User-Agent"]=>
        array(1) {
          [0]=>
          string(78) "aws-sdk-php/3.339.0 ua/2.1 OS/Linux#5.4.0-169-generic lang/php#8.3.1 m/P,Y,e,N"
        }
      }
      ["body"]=>
      string(177) "<?xml version="1.0" encoding="UTF-8"?>
  <Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Object><Key>20250125/02/7d26e317b3f22e38b4278e7431c20907</Key></Object></Delete>
  "
      ["scheme"]=>
      string(4) "http"
      ["port"]=>
      int(9000)
      ["path"]=>
      string(8) "/default"
      ["query"]=>
      string(6) "delete"
    }
    ["response"]=>
    array(4) {
      ["instance"]=>
      string(32) "00000000000008890000000000000000"
      ["statusCode"]=>
      int(400)
      ["headers"]=>
      array(12) {
        ["X-Amz-Security-Token"]=>
        string(7) "[TOKEN]"
        ["Accept-Ranges"]=>
        array(1) {
          [0]=>
          string(5) "bytes"
        }
        ["Content-Length"]=>
        array(1) {
          [0]=>
          string(3) "338"
        }
        ["Content-Type"]=>
        array(1) {
          [0]=>
          string(15) "application/xml"
        }
        ["Server"]=>
        array(1) {
          [0]=>
          string(5) "MinIO"
        }
        ["Strict-Transport-Security"]=>
        array(1) {
          [0]=>
          string(35) "max-age=31536000; includeSubDomains"
        }
        ["Vary"]=>
        array(2) {
          [0]=>
          string(6) "Origin"
          [1]=>
          string(15) "Accept-Encoding"
        }
        ["X-Amz-Id-2"]=>
        array(1) {
          [0]=>
          string(64) "dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8"
        }
        ["X-Amz-Request-Id"]=>
        array(1) {
          [0]=>
          string(16) "181EE46F572C9D03"
        }
        ["X-Content-Type-Options"]=>
        array(1) {
          [0]=>
          string(7) "nosniff"
        }
        ["X-Xss-Protection"]=>
        array(1) {
          [0]=>
          string(13) "1; mode=block"
        }
        ["Date"]=>
        array(1) {
          [0]=>
          string(29) "Tue, 28 Jan 2025 15:21:13 GMT"
        }
      }
      ["body"]=>
      string(338) "<?xml version="1.0" encoding="UTF-8"?>
  <Error><Code>MissingContentMD5</Code><Message>Missing required header for this request: Content-Md5.</Message><BucketName>default</BucketName><Resource>/default</Resource><RequestId>181EE46F572C9D03</RequestId><HostId>dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8</HostId></Error>"
    }
  }
  
  Inclusive step time: 0.0056898593902588


<- Leaving step sign, name 's3.permanent_redirect'
--------------------------------------------------

  no changes
  Inclusive step time: 0.0057778358459473


<- Leaving step sign, name 's3.put_object_url'
----------------------------------------------

  no changes
  Inclusive step time: 0.0058450698852539


<- Leaving step sign, name 's3.expires_parsing'
-----------------------------------------------

  no changes
  Inclusive step time: 0.0059170722961426


<- Leaving step sign, name 'user-agent'
---------------------------------------

  no changes
  Inclusive step time: 0.0060272216796875


<- Leaving step sign, name 'signer'
-----------------------------------

  no changes
  Inclusive step time: 0.0065209865570068


<- Leaving step sign, name 'retry'
----------------------------------

  no changes
  Inclusive step time: 0.0078480243682861


<- Leaving step sign, name 'invocation-id'
------------------------------------------

  no changes
  Inclusive step time: 0.007943868637085


<- Leaving step sign, name 'StreamRequestPayloadMiddleware'
-----------------------------------------------------------

  no changes
  Inclusive step time: 0.0080101490020752


<- Leaving step build, name 's3.bucket_endpoint_arn'
----------------------------------------------------

  no changes
  Inclusive step time: 0.0080769062042236


<- Leaving step build, name 's3.content_type'
---------------------------------------------

  no changes
  Inclusive step time: 0.0082659721374512


<- Leaving step build, name 's3.checksum'
-----------------------------------------

  no changes
  Inclusive step time: 0.0083630084991455


<- Leaving step build, name 'recursion-detection'
-------------------------------------------------

  no changes
  Inclusive step time: 0.0085179805755615


<- Leaving step build, name 'request-compression'
-------------------------------------------------

  no changes
  Inclusive step time: 0.0085840225219727


<- Leaving step build, name 'endpoint_parameter'
------------------------------------------------

  no changes
  Inclusive step time: 0.0086419582366943


<- Leaving step build, name ''
------------------------------

  no changes
  Inclusive step time: 0.0087349414825439


<- Leaving step build, name 'ApiCallMonitoringMiddleware'
---------------------------------------------------------

  no changes
  Inclusive step time: 0.0088238716125488


<- Leaving step build, name 's3.check_empty_path_with_query'
------------------------------------------------------------

  no changes
  Inclusive step time: 0.0091860294342041


<- Leaving step build, name 'builder'
-------------------------------------

  no changes
  Inclusive step time: 0.0093400478363037


<- Leaving step build, name 'endpoint-resolution'
-------------------------------------------------

  no changes
  Inclusive step time: 0.011069059371948


<- Leaving step build, name 'auth-selection'
--------------------------------------------

  no changes
  Inclusive step time: 0.011813879013062


<- Leaving step validate, name 'input_validation_middleware'
------------------------------------------------------------

  no changes
  Inclusive step time: 0.01187801361084


<- Leaving step validate, name 'validation'
-------------------------------------------

  no changes
  Inclusive step time: 0.011955976486206


<- Leaving step init, name 's3.head_object'
-------------------------------------------

  no changes
  Inclusive step time: 0.012264013290405


<- Leaving step init, name 's3.auto_encode'
-------------------------------------------

  no changes
  Inclusive step time: 0.012318134307861


<- Leaving step init, name 's3.location'
----------------------------------------

  no changes
  Inclusive step time: 0.012372016906738


<- Leaving step init, name 's3.save_as'
---------------------------------------

  no changes
  Inclusive step time: 0.012421846389771


<- Leaving step init, name 's3.source_file'
-------------------------------------------

  no changes
  Inclusive step time: 0.012495994567871


<- Leaving step init, name 's3.ssec'
------------------------------------

  no changes
  Inclusive step time: 0.012582063674927


<- Leaving step init, name 'idempotency_auto_fill'
--------------------------------------------------

  no changes
  Inclusive step time: 0.012887001037598


   Aws\S3\Exception\S3Exception 

  Error executing "DeleteObjects" on "http://192.168.22.50:9000/default?delete"; AWS HTTP error: Client error: `POST http://192.168.22.50:9000/default?delete` resulted in a `400 Bad Request` response:
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>MissingContentMD5</Code><Message>Missing required header for this re (truncated...)
 MissingContentMD5 (client): Missing required header for this request: Content-Md5. - <?xml version="1.0" encoding="UTF-8"?>
<Error><Code>MissingContentMD5</Code><Message>Missing required header for this request: Content-Md5.</Message><BucketName>default</BucketName><Resource>/default</Resource><RequestId>181EE46F572C9D03</RequestId><HostId>dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8</HostId></Error>

  at vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php:196
    192▕         $parts['request'] = $request;
    193▕         $parts['connection_error'] = !empty($err['connection_error']);
    194▕         $parts['transfer_stats'] = $stats;
    195▕ 
  ➜ 196▕         return new $this->exceptionClass(
    197▕             sprintf(
    198▕                 'Error executing "%s" on "%s"; %s',
    199▕                 $command->getName(),
    200▕                 $request->getUri(),

      +20 vendor frames 
  21  app/Console/Commands/Escombros.php:71
      Aws\AwsClient::__call()

      +12 vendor frames 
  34  artisan:35
      Illuminate\Foundation\Console\Kernel::handle()

Reproduction Steps

            echo $s3->getCnx()->deleteObjects([
                'Bucket' => 'default',
                'Delete' => [
                    'Objects' => array(array('Key'=>'20250125/02/7d26e317b3f22e38b4278e7431c20907')),
                ],
            ]);

Possible Solution

No response

Additional Information/Context

No response

SDK version used

3.339.0

Environment details (Version of PHP (php -v)? OS name and version, etc.)

PHP 8.3.1, Laravel Framework 10.48.27

Metadata

Metadata

Assignees

Labels

breaking-changeIssue requires a breaking change to remediate.bugThis issue is a bug.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions