次のようなコードを使用して、ファイルをバケットにアップロードしようとしています。
$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',
),
));
しかし、「NoSuchBucket」エラーが発生します。奇妙なことに、S3アカウントにクエリを実行してバケットのリストを取得すると、host.domain.extのアップロードに使用しているのとまったく同じ名前が取得されます。
名前にドットが含まれていない別のバケットを作成しようとしましたが、完全に機能します...はい、私の問題はバケット名ですが、インターネット上の静的ファイルサーバーとしてマップするには、FQDN規則を維持する必要があります。ドットのクラッシュを防ぐために、バケット名をAPIに送信する前に、バケット名にエスケープできるかどうか誰かが知っていますか?私はすでに正規表現を試しましたが、同じ結果が得られました。