Open4
S3のForcePathStyleに2時間つまづいた
TL;DR
localstack & AWS SDK javascript V3 において、
const s3Client = new S3Client({
endpoint: `http://localhost:4566`,
forcePathStyle: true,
});
S3バケットへのアクセスには 2通りある
パススタイル: https://s3.amazonaws.com/<bucketName>/<key>
名称不明(ドメインスタイル?): https://<bucketName>.s3.amazonaws.com/<key>
localstackの場合にはドメインスタイルを処理できない?
更に悪いことに、ENOTFOUNDとして処理されてしまう?
dns.js のエラーの出し方も問題が多くて、おそらく
http://bucketname.localhost:4566
に対してアクセスできない場合に、
Error: getaddrinfo ENOTFOUND resources.localhost
みたいなエラーを出すのでハマる。
(サブドメインまでエラーに含めろよ、ということ)
パススタイルは廃止予定らしいから仕方ない。
その場合、localstackはどうするつもりなんだろう?(SDKからパススタイルのアクセスが除かれるのは遠い遠い将来の話か、もしくはありえないと思うが)