我正在AWS Lambda上使用Javascript SDK生成签名URL。但是getSignedUrl
仅返回路径样式 URL。我尝试将s3ForcePathStyle
设置为false。
const params = {
Bucket: 'bucket_name',
Key: 'key_name'
};
const options = {
signatureVersion: 'v4',
useAccelerateEndpoint: false,
// endpoint: new AWS.Endpoint('https://bucket_name.s3.amazonaws.com'),
s3ForcePathStyle: false
};
const client = new AWS.S3(options);
exports.handler = async (event) => {
const signedURL = await (new Promise((resolve, reject) => {
client.getSignedUrl('putObject', params, (err, data) => {
if (err) {
reject(err);
}
else {
resolve(data);
}
});
}));
return signedURL;
};
如果我取消注释endpoint: new AWS.Endpoint('https://bucket_name.s3.amazonaws.com')
,那么我将得到一个荒谬的网址,其中包含以下两者:
https://bucket_name.s3.amazonaws.com/bucket_name/key_name......
https://s3.ap-south-1.amazonaws.com/bucket_name/key_name..... # Code returns path-style
https://bucket_name.s3.amazonaws.com/key_name..... # I want virtual-hosted-style