Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS s3.ListBucket将数据对象保存在全局变量中-nodejs_Amazon Web Services_Amazon S3_Aws Sdk - Fatal编程技术网

Amazon web services AWS s3.ListBucket将数据对象保存在全局变量中-nodejs

Amazon web services AWS s3.ListBucket将数据对象保存在全局变量中-nodejs,amazon-web-services,amazon-s3,aws-sdk,Amazon Web Services,Amazon S3,Aws Sdk,我试图读取帐户中的存储桶,并将列表保存到其他函数可以访问的变量中 我正在尝试使用全局变量 结果: 全局变量值未保留/保存 节点:v10 代码: var AWS=require('AWS-sdk'); AWS.config.update({地区:'eu-west-1'}); s3=新的AWS.s3({apiVersion:'2006-03-01'}); 让布利斯特; getbucket(); 控制台日志(“列表:+blist”); 异步函数getBucket(){ let response=wa

我试图读取帐户中的存储桶,并将列表保存到其他函数可以访问的变量中

我正在尝试使用全局变量

结果: 全局变量值未保留/保存

节点:v10 代码:

var AWS=require('AWS-sdk');
AWS.config.update({地区:'eu-west-1'});
s3=新的AWS.s3({apiVersion:'2006-03-01'});
让布利斯特;
getbucket();
控制台日志(“列表:+blist”);
异步函数getBucket(){
let response=wait s3.listbackes().promise();
//做你的处理
var bucket=response.bucket.map(x=>x.Name);
控制台日志(“桶:+桶);
blist=桶;
//返回bnames;

}
s3.ListBucket是一个异步函数,因此当您分配给变量时,不会得到预期的结果。你最好考虑使用承诺来链接它们或使用。

使用承诺:

s3.listBuckets().promise()
       .then((response) => {
          // do your processing
        });
async function someFn() {
     let response = await s3.listBuckets().promise();
      // do your processing
}
使用异步/等待:

s3.listBuckets().promise()
       .then((response) => {
          // do your processing
        });
async function someFn() {
     let response = await s3.listBuckets().promise();
      // do your processing
}

这段代码的工作原理如下:

import S3 from "aws-sdk/clients/s3.js";

const main = async () => {
  const s3 = new S3({ apiVersion: "2006-03-01" });

  const buckets = await s3.listBuckets().promise();
  console.log(JSON.stringify(buckets));
};

(async () => {
  try {
    await main();
  } catch (e) {
    console.error(e);
  }
})();

s3.ListBucket()
不返回文本,它返回一个请求对象。。。当异步调用它时,您不需要它,就像您正在做的那样。您的
返回数据没有意义,因为回调中的turn值被丢弃。谢谢@dilip的解释。我尝试过使用异步函数,但它仍然是一样的。我现在用更新的程序修改了最初的帖子。blist全局变量仍然未定义,但bucket局部变量获取所有bucket名称。