AWS Lambda получает файл из S3, а затем использует его

#amazon-s3 #aws-lambda #aws-sdk-nodejs

Вопрос:

Мне нужно извлечь 2 файла из моего S3 и использовать их в HttpAgent, и я изо всех сил пытаюсь найти правильный метод. Используя SDKv3, который возвращает считываемый поток.

 const { Readable } = require('stream');
const { createWriteStream } = require('fs');
const { S3Client, GetObjectCommand } = require('@aws-sdk/client-s3');

async (event, context) => {
  let options;
  let httpsAgent;
  try {
    console.log('> Getting content from S3');
    const s3Client = new S3Client({
      region: 'us-east-2',
    });
    let command = new GetObjectCommand({
      Key: 'lib/myCert.crt',
      Bucket: 'mybucket',
    });
    console.log('>>Getting Cert command');
    const hcert = await s3Client.send(command);
   

    command = new GetObjectCommand({
      Key: 'lib/myKey.pem',
      Bucket: 'mybucket',
    });
    console.log('Get Key');
    const ckey = await s3Client.send(command);
  
    console.log('initializing Agent');
    httpsAgent = new https.Agent(
      {
        key: ckey.Body.pipe(createWriteStream('/tmp/myKey.pem')),
        cert: hcert.Body.pipe(createWriteStream('/tmp/myCert.crt')),
        // key: fs.readFileSync('./tmp/myKey.pem'),
        // cert: fs.readFileSync('./tmp/myCert.crt'),
        keepAlive: true
      }
    );
 

С помощью приведенного выше кода я получаю параметр не найден. Я попытался записать на диск, а затем получить доступ ( через fs.readFileSync) к нему, но та же проблема.

Комментарии:

1. Можете ли вы поделиться полной ошибкой, которую вы получаете? ParameterNotFound это слишком обобщенно, чтобы начинать разбираться в этой проблеме.

2. Оказывается, ошибка «Параметр не найден» была связана с другой частью Лямбды, потому что в нее был вставлен какой-то старый код. в итоге я решил эту проблему, изменив их в строки и отправив их, но мне бы хотелось выяснить, почему я не мог записать их в /tmp, а затем прочитать.