首页 > 解决方案 > 如何获取 AWS JavaScript SDK 调用的响应标头?

问题描述

我有一个简单的 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();
}

我已根据此文档启用了记录 SDK 调用。

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

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

PS:如果您可以让我知道我是否需要在上面的代码中使用两个 await关键字,则可以加分。

标签: amazon-web-servicesamazon-s3aws-sdkaws-sdk-js

解决方案


httpHeaders事件。

var requestObject = s3.getObject(params);

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

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

推荐阅读