amazon-web-services - 如何获取 AWS JavaScript SDK 调用的响应 header ?

标签 amazon-web-services amazon-s3 aws-sdk aws-sdk-js

我有一个简单的 AWS Lambda 函数,它进行 S3.getObject() 调用,如下所示:

const AWS = require('aws-sdk');

AWS.config.logger = console;

const s3 = new AWS.S3();

exports.handler = async (event) => {
  return await getObject({
    Bucket: "<MY-BUCKET>", 
    Key: "<MY-KEY>"
  }).then( (res) => {
    console.log('Retrieved object from S3');
    console.log(res);
    return res.Body.toString('ascii');
  })
};

async function getObject(params){
  return await s3.getObject(params).promise();
}

我已按照 this document 启用了记录 SDK 调用。

如何获取所进行的 s3.getObject() SDK 调用的响应 header ?我基本上是在尝试检索 S3 请求 ID 和扩展请求 ID。

通过“AWS.config.logger = console;”添加的内置记录器该行似乎没有记录响应 header 。我还如何获取 AWS JavaScript SDK 调用的响应 header ?

P.S:如果您能让我知道上面代码中是否需要两个 await 关键字,那就加分了。

最佳答案

监听httpHeaders事件。

var requestObject = s3.getObject(params);

requestObject.on('httpHeaders', (statusCode, headers, response, statusMessage) => {
    // your code here.
});

requestObject.promise()
    .then(response => { ... })

关于amazon-web-services - 如何获取 AWS JavaScript SDK 调用的响应 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52314930/

相关文章:

python - 使用 boto3 分段上传

java - Amazon S3 是否有连接池?

.net-core - .NET Core 应用程序是否可以从 AWS Certificate Manager 检索证书并在 HttpClient 帖子中使用它?

java - 读取和写入 Amazon s3 存储桶中的文件

python-3.x - 从 S3 读取一个视频文件对象,并通过 Opencv 将其用于进一步处理

java - aws sdk assumeRole 没有生效

amazon-web-services - 使用 Kubernetes 部署 - Master 和 Nodes 在同一台机器上的可行性

amazon-web-services - 使用跨账户的 AWS RDS 灾难恢复

mysql - 在 AWS 上使用 Bitnami 的 phpMyAdmin 和 MySQL 时出现登录错误

symfony - 尝试使用 gaufrette 上传到 S3 时出错