Node.js S3 ListObjects在本地堆栈中不工作
下面的代码是我在机器上使用的Node.js S3 ListObjects在本地堆栈中不工作,node.js,typescript,amazon-s3,localstack,Node.js,Typescript,Amazon S3,Localstack,下面的代码是我在机器上使用的localstack。当我列出桶时,它就起作用了。但当我处理listObjects时,它返回的是空数组 import * as AWS from "aws-sdk"; let s3 = new AWS.S3({endpoint: 'http://localhost:4572', region: 'us-east-1'}); (async () => { // list buckets works, returns all my local bucket
localstack
。当我列出桶时,它就起作用了。但当我处理listObjects时,它返回的是空数组
import * as AWS from "aws-sdk";
let s3 = new AWS.S3({endpoint: 'http://localhost:4572', region: 'us-east-1'});
(async () => {
// list buckets works, returns all my local buckets
let buckets = await s3.listBuckets().promise()
console.log('buckets: ', buckets)
// this returns empty array
let listOfobjects = await s3.listObjects({Bucket: 'store-us-east-1'}).promise()
console.log('listOfobjects: ', listOfobjects);
})()
# ls works via command line, return Invoice.pdf
aws --endpoint-url=http://localhost:4572 s3 ls s3://store-us-east-1
2020-01-15 18:02:55 82032 Invoice.pdf
非常感谢您的帮助。好的,
本地堆栈中的listObjects
由于存储桶地址被删除而失败
${BUCKET\u NAME}.${IP\u ADDRESS}
而不是预期的格式。您只需将其添加到S3实例化中:
let s3 = new AWS.S3({
endpoint: 'http://localhost:4572',
region: 'us-east-1',
sslEnabled: false,
s3ForcePathStyle: true
});
此外,这并不重要,但我建议对端点使用类似的方法:
endpoint: `http://${process.env.LOCALSTACK_HOSTNAME}:4572`
您是否尝试将该地区更改为
us-west-1
?我在某个地方读到,us-east-1
不能与api sdk一起使用。列表存储桶正在工作。listObjects不工作,因此我没有查询实际的s3存储桶。这是一个使用本地堆栈的模拟AWS环境