Saya menggunakan NodeJS AWS SDK untuk menghasilkan URL S3 presigned. Dokumen memberikan contoh menghasilkan URL yang telah ditetapkan sebelumnya .
Ini kode persis saya (dengan info sensitif dihilangkan):
const AWS = require('aws-sdk')
const s3 = new AWS.S3()
AWS.config.update({accessKeyId: 'id-omitted', secretAccessKey: 'key-omitted'})
// Tried with and without this. Since s3 is not region-specific, I don't
// think it should be necessary.
// AWS.config.update({region: 'us-west-2'})
const myBucket = 'bucket-name'
const myKey = 'file-name.pdf'
const signedUrlExpireSeconds = 60 * 5
const url = s3.getSignedUrl('getObject', {
Bucket: myBucket,
Key: myKey,
Expires: signedUrlExpireSeconds
})
console.log(url)
URL yang dihasilkan terlihat seperti ini:
https://bucket-name.s3-us-west-2.amazonaws.com/file-name.pdf?AWSAccessKeyId=[access-key-omitted]&Expires=1470666057&Signature=[signature-omitted]
Saya menyalin URL itu ke browser saya dan mendapatkan tanggapan berikut:
<Error>
<Code>NoSuchBucket</Code>
<Message>The specified bucket does not exist</Message>
<BucketName>[bucket-name-omitted]</BucketName>
<RequestId>D1A358D276305A5C</RequestId>
<HostId>
bz2OxmZcEM2173kXEDbKIZrlX508qSv+CVydHz3w6FFPFwC0CtaCa/TqDQYDmHQdI1oMlc07wWk=
</HostId>
</Error>
Saya tahu ember itu ada. Saat saya menavigasi ke item ini melalui AWS Web GUI dan mengklik dua kali di atasnya, ini akan membuka objek dengan URL dan berfungsi dengan baik:
https://s3-us-west-2.amazonaws.com/[bucket-name-omitted]/[file-name-omitted].pdf?X-Amz-Date=20160808T141832Z&X-Amz-Expires=300&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Signature=[signature-omitted]&X-Amz-Credential=ASIAJKXDBR5CW3XXF5VQ/20160808/us-west-2/s3/aws4_request&X-Amz-SignedHeaders=Host&x-amz-security-token=[really-long-key]
Jadi saya dibuat percaya bahwa saya pasti melakukan sesuatu yang salah dengan cara saya menggunakan SDK.
NoSuchBucket
berarti nama keranjang yang ditampilkanhttps://>>>here<<<.s3-us-west-2.amazonaws.com
di URL tidak ada. Tidak ada dalam proses penandatanganan, kebijakan, izin, kunci, atau rahasia Anda yang dapat menghasilkan kesalahan khusus ini.