#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, а затем прочитать.