Функция Lambda Node 8 не ожидает выполнения метода (вызова службы AWS) - PullRequest
0 голосов
/ 13 февраля 2019

Я создаю аннулирование в CloudFront через вызов API-шлюза в Lambda, но аннулирование обрабатывается только примерно в 1 из 5 попыток.Я уверен, что мне не хватает чего-то, что могло бы должным образом ожидать вызова метода createInvalidation.

'use strict';

var AWS = require('aws-sdk');

var cloudfront = new AWS.CloudFront();

var distID = process.env.DISTRIBUTION_ID;

exports.handler = async(event) => {

  var path = (event.queryStringParameters.path);
  console.log(event.queryStringParameters.path);

  var params = {
    DistributionId: distID, 
    InvalidationBatch: { 
      CallerReference: (event.requestContext.requestId), 
      Paths: { 
        Quantity: 1, 
        Items: [
          path
        ]
      }
    }
  };

  await cloudfront.createInvalidation(params, function(err, data) {
    if (err) console.log(err, err.stack); // an error occurred
    else console.log(data); // successful response
    return data;
  });

};

Функция Lambda завершается каждый раз и получает и анализирует вызов API-шлюза просто для заполнения переменных, но createInvalidation происходит только примерно в 1 из 5 попыток, хотя другие 4 попытки не вызвали ошибок.

1 Ответ

0 голосов
/ 14 февраля 2019

Попробуйте следующий фрагмент:

// import * as AWS from 'aws-sdk';

exports.handler = async(event) => 
{
    const cloudfront = new AWS.CloudFront();

    const distID = process.env.DISTRIBUTION_ID;
    const path = (event.queryStringParameters.path);
    console.log(event.queryStringParameters.path);

    const params = 
    {
        DistributionId: distID, 
        InvalidationBatch: 
        { 
            CallerReference: (event.requestContext.requestId), 
            Paths: { Quantity: 1,  Items: [ path ] }
        }
    };

    try
    {
        const resp = await cloudfront.createInvalidation(params).promise();

        console.log(resp);
    }
    catch (ex)
    {
        console.error(ex);
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...