Thanks for the reply. You are correct, the object ACL is being set correctly and is being misreported by Cyberduck. The client didn’t have an official config for Tigris so I tried making one of my own. It’s possible I made a mistake or there is some other difference in Tigris’ implementation of the S3 API causing the client to misbehave.
aws s3api get-object-acl --bucket eliot --key FilmSchoolSurvivalHandbook.mp3
{
"Owner": {
"DisplayName": "fadookie",
"ID": "7119ef0da0e90142b87fc103d291f61935b2703c9b6e3ac74b00954c1a33e28a"
},
"Grants": [
{
"Grantee": {
"DisplayName": "fadookie",
"ID": "7119ef0da0e90142b87fc103d291f61935b2703c9b6e3ac74b00954c1a33e28a",
"Type": "CanonicalUser"
},
"Permission": "FULL_CONTROL"
},
{
"Grantee": {
"Type": "Group",
"URI": "http://acs.amazonaws.com/groups/global/AllUsers"
},
"Permission": "READ"
}
]
}
I was able to confirm this asset is accessible via the web endpoint at https://fly.storage.tigris.dev/eliot/FilmSchoolSurvivalHandbook.mp3
I was trying to upload my Cyberduck profile to my bucket for reference purposes but ran into another issue. Trying to set the object ACL via Cyberduck raised an error popup, so I used the AWS CLI to set a public ACL on this key and confirm it was set:
aws s3api put-object-acl --bucket eliot --key releases/software/Tigris.cyberduckprofile --acl public-read
aws s3api get-object-acl --bucket eliot --key releases/software/Tigris.cyberduckprofile
{
"Owner": {
"DisplayName": "fadookie",
"ID": "7119ef0da0e90142b87fc103d291f61935b2703c9b6e3ac74b00954c1a33e28a"
},
"Grants": [
{
"Grantee": {
"DisplayName": "fadookie",
"ID": "7119ef0da0e90142b87fc103d291f61935b2703c9b6e3ac74b00954c1a33e28a",
"Type": "CanonicalUser"
},
"Permission": "FULL_CONTROL"
},
{
"Grantee": {
"Type": "Group",
"URI": "http://acs.amazonaws.com/groups/global/AllUsers"
},
"Permission": "READ"
}
]
}
However when I hit https://fly.storage.tigris.dev/eliot/releases/software/Tigris.cyberduckprofile to test downloading this asset, I get a 403:
curl -i https://fly.storage.tigris.dev/eliot/releases/software/Tigris.cyberduckprofile
HTTP/2 403
content-type: application/xml
server: Tigris OS
server-timing: total;dur=109,cache;desc=miss;dur=1, server;desc=meta;dur=12, block;desc=local;dur=7
strict-transport-security: max-age=63072000; includeSubDomains; preload
x-amz-request-id: 1733289633857533037
content-length: 305
date: Wed, 04 Dec 2024 05:20:33 GMT
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied.</Message><Resource>/eliot/releases/software/Tigris.cyberduckprofile</Resource><RequestId>1733289633857533037</RequestId><Key>releases/software/Tigris.cyberduckprofile</Key><BucketName>eliot</BucketName></Error>
I created a signed URL for now so you can access it:
https://eliot.fly.storage.tigris.dev/releases/software/Tigris.cyberduckprofile?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=tid_pXxffDsFiUpZCmMxDTNAdsSolBfQTbZZlYkYfzuTFwsuYm_PiU%2F20241204%2Fauto%2Fs3%2Faws4_request&X-Amz-Date=20241204T050746Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=6480a7d6c990130e09510aef953552da5c2d964ab1ca7a6f4505309575a6f9c4