12 hours ago
I have a production service using a Railway Storage Bucket through the S3-compatible API.
Project: empathetic-reflection
Environment: production
Service: soares-negocios
Bucket: soares-negocios-images
The exact objects exist in the Bucket and can be downloaded successfully from the Railway dashboard.
PostgreSQL contains the exact matching object keys.
I verified that ACCESS_KEY_ID and SECRET_ACCESS_KEY match the Bucket credentials.
I regenerated the Bucket credentials, updated the service variables and redeployed successfully.
Current configuration:
ENDPOINT=https://t3.storageapi.dev
REGION=auto
S3_FORCE_PATH_STYLE=false
I executed a read-only HeadObject from inside the Railway production container using @aws-sdk/client-s3.
Result:
STYLE false => ERROR Unknown 403 UnknownError
STYLE true => ERROR Unknown 403 UnknownError
The exact same object is present and downloadable from the Railway dashboard.
This appears to be a Storage Bucket S3 API permission/provisioning issue rather than an application or object-key issue.
Could you please inspect the bucket permissions/provisioning and storage logs for this bucket?
4 Replies
12 hours ago
Your ENDPOINT variable is set to https://t3.storageapi.dev, but the correct endpoint for Railway Buckets is https://storage.railway.app as shown in the bucket's Credentials tab. Updating that variable and redeploying should resolve the 403.
Status changed to Awaiting User Response Railway • about 12 hours ago
12 hours ago
Additional diagnostic result:
I executed ListObjectsV2 from inside the Railway production container using the exact environment variables currently deployed.
The variables are confirmed clean, with no whitespace or newline issues:
ENDPOINT = "https://t3.storageapi.dev"
REGION = "auto"
BUCKET = "soares-negocios-images-stjyso"
S3_FORCE_PATH_STYLE = "false"
MEDIA_STORAGE_PROVIDER = "s3"
ListObjectsV2 returns:
NoSuchBucket
HTTP 404
The specified bucket does not exist
However, this exact bucket exists in the Railway dashboard, contains 57.1 MB of objects, and the files can be downloaded successfully through the dashboard.
HeadObject for an existing object also returns HTTP 403.
This now strongly indicates that the bucket shown in the Railway dashboard is not correctly provisioned/recognized by the S3-compatible API.
Please escalate this for inspection of the bucket IAM/provisioning state and storage logs.
Status changed to Awaiting Railway Response Railway • about 12 hours ago
12 hours ago
I tested the endpoint suggested by the automated response as well.
Using https://storage.railway.app from inside the Railway production container:
STORAGE.RAILWAY.APP STYLE false => ERROR Unknown 403 UnknownError
STORAGE.RAILWAY.APP STYLE true => ERROR Unknown 403 UnknownError
Using the endpoint explicitly shown in my Bucket Credentials tab, https://t3.storageapi.dev:
HeadObject returns HTTP 403
ListObjectsV2 returns:
NoSuchBucket
HTTP 404
The specified bucket does not exist
The bucket is visible in the Railway dashboard, contains 57.1 MB, and the exact objects can be downloaded from the dashboard.
The deployed environment variables have also been verified with no whitespace or newline issues.
Please escalate this to the storage/backend team to inspect this bucket's IAM/provisioning state and S3 API mapping.
Status changed to Awaiting Railway Response Railway • about 9 hours ago
8 hours ago
To correct our earlier reply, https://t3.storageapi.dev is the correct endpoint for your bucket. The actual issue is a bucket name mismatch: your BUCKET variable is set to soares-negocios-images-stjyso, but the bucket's real S3 name is soares-negocios-imagens-stjyso (note "imagens" vs "images"). Updating your BUCKET variable to the correct value and redeploying should resolve both the 403 and NoSuchBucket errors.
Status changed to Awaiting User Response Railway • about 8 hours ago