私はちょうど呼び出されたときに私のS3バケットのための事前に署名されたURLを返す小さな関数を書いた。これは次のようになります。S3事前署名されたURLを生成する前にAWSで認証する必要はありません。
import AWS from 'aws-sdk';
AWS.config.update({
accessKeyId: 'process.env.AWS_S3_KEY',
secretAccessKey: 'process.env.AWS_S3_SECRET'
});
const s3 = new AWS.S3({
signatureVersion: 'v4'
});
export const s3Auth = (req, res) => {
s3.getSignedUrl(
'putObject',
{
Bucket: 'mybucket',
Key: 'mykey',
Expires: 60
},
(error, url) => {
if (!error && url) {
res.send({
url
});
} else {
res.status(500);
res.send({ error: 'AWS error!' });
throw error;
}
}
);
};
3行目に、私のAWS認証情報が設定されています。事は、私はその部分( AWS.config.update
)でコメントしてみましたが、それはまだ私のために事前に署名された鍵を生成しています!なぜこれが起こっているのか?
私は 'credentials'ファイルを持っていますが、それがなければ呼び出しは失敗します!ありがとう! – THpubs