Доступ DynamoDB в Lambda @ Edge

Нужна ваша помощь в понимании некоторых концепций. У меня есть веб-приложение, использующее Lambda @ Edge на CloudFront. Эта лямбда-функция обращается к DynamoDB, выполняя около 10 независимых запросов. Это порождает случайные ошибки, хотя отлично работает, когда я тестирую автономную лямбда-функцию. Я не могу разобраться в журналах облачного интерфейса, а Lambda @ Edge не отображается в CloudWatch.

У меня такое ощущение, что виноваты запросы DynamoDB. (потому что это все, что я делаю в функции Lambda) Чтобы убедиться, я реплицировал данные по всем регионам. Но это не решило проблему. Я увеличил тайм-аут и объем памяти, выделенный лямбда-функции. Но это никоим образом не помогло. Но уменьшение количества запросов к БД, похоже, помогает.

Не могли бы вы помочь мне понять это? Неправильно ли делать запросы к БД в Lambda @ Edge? Есть ли способ получить подробные логи Lambda @ Edge?

как выглядит подготовка вашей таблицы Dynamodb?   —  person Vikas    schedule 18.02.2020

Все по запросу. Без подготовки.   —  person Vikas    schedule 18.02.2020

См. также:  Как программно остановить контейнер AWS Fargate?
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 2
  1. Vikas

    Журналы Lambda @ Edge отображаются в CloudWatch в регионе, в котором была вызвана Lambda. Я подозреваю, что вам просто нужно войти в CloudWatch и перейти в правильный регион, чтобы просмотреть журналы. Если вы сами вызываете CloudWatch, это будет регион, в котором вы находитесь, а не регион, в котором вы создали Lambda.

    После того, как у вас будет журнал, у вас будет гораздо больше информации для продолжения.

  2. Vikas

    Слишком поздно, на год больше, но никогда не знаешь, что кому-то это выгодно. Lambda @ Edge не работает в определенном регионе, поэтому, если вы подключаетесь к таблице DynamoDB, вам необходимо определить регион, в котором эта таблица может быть найдена.

    В NodeJS это приведет к ниже:

    // Load the AWS SDK for Node.js
    var AWS = require('aws-sdk');
    // Set the region 
    AWS.config.update({region: 'REGION'});
    
    // Create DynamoDB document client
    var docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});
    

    Как упоминал F_SO_K, вы можете найти свои журналы CloudWatch в ближайшем к вам регионе. Как узнать, какой регион это будет (если вы единственный, кто использует этот конкретный Lambda @ Edge, вы можете заглянуть в эта документация)

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: