0
aws-sdkのファイルをNode.jsに格納するための署名付きURLを取得しようとしています。 SDKのアドレスを使用すると、301のPermanentRedirectが取得されます。301 getSignedURLで取得したURLからputObjectにPermanentRedirectが返される
<Error>
<script/>
<Code>PermanentRedirect</Code>
<Message>
The bucket you are attempting to access must be addressed using the
specified endpoint. Please send all future requests to this endpoint.
</Message>
<Bucket>XXX.COM</Bucket>
<Endpoint>XXX.COM.s3.amazonaws.com</Endpoint>
<RequestId>A82721F2A44XXXX</RequestId><HostId>HPgWeSUk2cKu3AbijEu9+S41bHh7dUxSiwOEEVrS08dsrpJ3AvMP5V2iXXXXXX
</HostId>
</Error>
私はgetSignedURL APIを呼び出す前に他のAPIにアクセスできるので、認証の問題はないと思います。私はなぜこのエラーメッセージが出るのか分かりません。これは、署名付きURLを取得するために使用するコードです。
public static getSignedURL(path: string, op: string): Promise<string> {
return new Promise<string>((resolve, reject) => {
s3.getSignedUrl(op, {
Bucket: "XXX.COM",
Key: path,
Expires: 60 * 60 * 24 * 365 * 10,
ContentType: "text/javascript",
ACL: 'public-read'
}, (err, url) => {
if (err) {
reject(err);
} else {
resolve(url);
}
})
});
console.log(await getSignedURL(`XXX/${id}/${libName}.js`, "putObject"));
私のコードに問題はありますか?
あなたは正しいです。しかし、これは少し難しい理由です。私はAWS_DEFAULT_REGION環境変数をデバッグサーバ上で設定しました。この設定は、getObject、putObjectなどの署名付きURLなしの他のAWS S3 APIに使用されていました。 しかし、署名されたURLは 'AWS.config.update'設定のみを読み取るようです。 'AWS.config.update'で設定した後、返されたURLが変更されました。そして私はオブジェクトにアクセスして置くことができました。 – kyasbal