Is there a way to debbug S3 post/request to endpoint?

edunp

New Member
Aug 12, 2025
5
1
3
Since the release of Proxmox Backup version 4.0 I'm trying to use a S3 storage brasilian provider (https://magalu.cloud) which is full S3 compatible. But I'm getting the following error while check for bucket:

Bash:
root@pbss3:~#[B] proxmox-backup-manager s3 check mgc-s3 my-bucket-name[/B]
Error: head object failed

Caused by:
    bucket does not exist or no permission to access it

================
Bash:
root@pbss3:~# proxmox-backup-manager s3 endpoint list-buckets mgc-s3
<?xml version="1.0" encoding="UTF-8"?>
    <Error>
      <Code>AccessDenied</Code>
      <Message>Credentials or specified url is malformed.</Message>
      <RequestId>b11c8ef4-1f60-4dd9-8f7c-cb0d9715a101</RequestId>
    </Error>
Error: failed to list buckets

Caused by:
    unexpected status code 403 Forbidden


================

When I use other tools with same credentials no problem occurs, which makes me believe that this error is due to some incompatibility with my s3 provider.
How can I debbug the S3 requests from PBS side ? Journalctl only returns the same error listed above. Would be useful to see the the S3 request body generated by pbs.
 
UPDATE: If I use aws cli to list buckets on my provider and then use proxmox to list buckets, it works for a minute, then it fails again. Sound like some session problem, but no cue on how to debbug more.
 
The permission error would more point to a configuration issue, in particular to the region field not being set correctly. The region is part of the aws request signature, therefore can lead to permission issues. Can you please share the (retracted) endpoint configuration you are using?
 
Please check again without setting the port (no need to explicitly set it), and verify that there are no leading or trailing white spaces in any of the input fields. The rest looks good to me, although unsure if your provider implementation does support the If-None-Match header.
 
There were no spaces left in any inputs. I tried again but this time I only removed the port as you said and now it's working.
I got this message:

Code:
<?xml version='1.0' encoding='UTF-8'?>
<Error><Code>NotImplemented</Code><Message>Conditional object PUTs are not supported.</Message><RequestId>49e7788c-5063-4fca-b71b-7a896e1cc4fc</RequestId></Error>

Set the provider quirks to skip if-none-match header and now its working as far as I can tell.

Shouldn't it have worked with the port number defined explicitly, even though it was the same as default?

Thank you very much for your help, Chris!