使用nodejs AWS lambda从S3加载并解析yaml文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用nodejs AWS lambda从S3加载并解析yaml文件相关的知识,希望对你有一定的参考价值。

我有一个AWS lambda,必须......

  • 从S3读取一个yaml文件,
  • 将内容转换为对象,
  • 有一些很棒的工作人员。

我可以处理最后一点,但我不知道如何读取和解析该yaml文件。

这是我需要完成的代码:

const AWS = require('aws-sdk');
const YAML = require('js-yaml');

const S3 = new AWS.S3();

module.exports.handler = (event, context, callback) => {
  const [record] = event.Records;
  const bucket = record.s3.bucket.name;
  const { key } = record.s3.object;

  const params = { Bucket: bucket, Key: key };
  console.log(params);

  S3.getObject(params).promise()
    .then((x) => {

      // ?????????????????????????????????????????
      // HOW TO DO SOME MAGIC AND GET THE OBJECT ?

    })
    .then((fileContentObject) => {
      // DO SOME WONDERFUL STAFF (example: console.log :) )
      console.log(JSON.stringify(fileContentObject))
    })
    .then(() => callback)
    .catch(callback);
};

随意建议另一种方法来读取和解析yaml文件。如果可能的话,我更喜欢Promise方法。

答案

我终于解决了这个问题。 “很容易”,当然!

这是lambda中的代码:

S3.getObject(params).promise()
  .then((configYaml) => {
    // Get the content of the file as a string
    // It works on any text file, should your config is in another format
    const data = configYaml.Body.toString('utf-8');
    console.log(data);

    // Parse the string, which is a yaml in this case
    // Please note that `YAML.parse()` is deprecated
    return YAML.load(data);
  })
  .then((config) => {
    // Do some wonderful staff with the config object
    console.log(`• Config: ${JSON.stringify(config)}`);
    return null;
  })
  .then(callback)
  .catch(callback);

我所要求的只是:YAML.load(configYaml.Body.toString('utf-8'))

以上是关于使用nodejs AWS lambda从S3加载并解析yaml文件的主要内容,如果未能解决你的问题,请参考以下文章

带有Java的AWS Lambda无法从S3获取文件

AWS Lambda 中的 Amazon S3 waitFor()

如何从 S3 加载泡菜文件以在 AWS Lambda 中使用?

使用从 S3 事件调用的 AWS Lambda 触发 Airflow DAG

如何使用 lambda 函数从 AWS s3 获取文本文件的内容?

使用带有 Node.js 的 AWS Lambda 函数从 S3 存储桶中提取 zip 文件并上传到另一个存储桶