I’m trying to upload files to my bucket using a piece of code like this:
$s3 = new AmazonS3();
$bucket = 'host.domain.ext'; // My bucket name matches my host's CNAME
// Open a file resource
$file_resource = fopen('picture.jpg', 'r');
// Upload the file
$response = $s3->create_object($bucket, 'picture.jpg', array(
'fileUpload' => $file_resource,
'acl' => AmazonS3::ACL_PUBLIC,
'headers' => array(
'Cache-Control' => 'public, max-age=86400',
),
));
But I get the “NoSuchBucket” error, the weird thing is that when I query my S3 account to retrieve the list of buckets, I get the exact same name I’m using for uploading host.domain.ext.
I tried creating a different bucket with no dots in the name and it works perfectly… yes, my problem is my bucket name, but I need to keep the FQDN convention in order to map it as a static file server on the Internet. Does anyone know if is there any escaping I can do to my bucket name before sending it to the API to prevent the dot crash? I’ve already tried regular expressions and got the same result.
I’d try using path style urls as suggested in the comments in a related AWS forum thread…