AWS SDKで、S3のバケット指定がうまくいかない
バケット名にドット(ピリオド)いれてませんか?
static final String BUCKET = "hoge.org"; AmazonS3Client client = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey)); client.setEndpoint("s3-ap-northeast-1.amazonaws.com"); client.setRegion(Region.getRegion(Regions.AP_NORTHEAST_1)); URL url = client.getUrl(BUCKET, "file"); // 期待してる値 => https://s3-ap-northeast-1.amazonaws.com/hoge.org/file // ところが!! => https://hoge.org.s3-ap-northeast-1.amazonaws.com/file
バケット名にドット(ピリオド)が入っていると、ドメインとして
扱われてしまうようです(aws-java-sdk 1.6.3で確認)。
バケットをドメインじゃなくてパスとして扱うようにするには、以下のように
します。
//java AmazonS3Client client = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey)); client.setS3ClientOptions(new S3ClientOptions().withPathStyleAccess(true)); //php $client = new AmazonS3(); $client->path_style = true;