Лямбда-функция AWS, написанная в nodejs, не обновляет мою DynamoDB - PullRequest
2 голосов
/ 22 июня 2019

Я - новичок в AWS, но достиг блокатора .... Я пытаюсь использовать лямбда-функцию для обновления атрибута элемента в моей таблице DynamodB. Лямбда-функция запускается, но по какой-то причине я не могу обновить элемент.

Мне удалось успешно удалить элемент из динамодаба, но при попытке обновить атрибут для элемента ничего не происходит.

Атрибут human_confirmed не обновляется до true после выполнения функции. Я пробовал разные вещи, которые нашел в Google, но ничего не работает: (

console.log('Loading function');
var AWS = require('aws-sdk');

exports.handler = (event, context, callback) => {
    AWS.config.update({
      region: "us-east-1"
    });

    var dynamodb = new AWS.DynamoDB.DocumentClient();
    var instance = event.instanceID;
    var InstanceName = instance;

    var params = {
        TableName: "reminders",
        Key: {
            "instanceID": {
             S: InstanceName
            },
        },
      UpdateExpression: 'SET #a = :x',
      ExpressionAttributeNames: {'#a' : 'human_confirmed'},
      ExpressionAttributeValues: {
        ':x' : 'true',
      },
      ReturnValues:"UPDATED_NEW"
    };
    dynamodb.update(params, function(err, data) {
        if (err) 
            callback(err, null); // an error occurred
        else     
            callback(null, data);           // successful response
    });
    callback(null, "Updating resource from reminder table: " + InstanceName + ".... The system will no longer contain automated emails about this resource's tags!");
};

Ответы [ 2 ]

2 голосов
/ 22 июня 2019

убедитесь, что у вас есть эта конфигурация: dynamodb:PutItem в вашем serverless.yml файле

iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "dynamodb:PutItem"
      Resource: "*"
0 голосов
/ 24 июня 2019

Спасибо за помощь @ kaxi1993 Я считаю, что мои разрешения IAMRole были правильными. Вот код, который работал для меня.

'use strict';

console.log («Функция загрузки»); var AWS = require ('aws-sdk');

var dynamodb = новый AWS.DynamoDB ({apiVersion: '2012-08-10'});

exports.handler = (событие, контекст, обратный вызов) => { AWS.config.update ({ регион: "сша-восток-1" });

var instance = event.instanceID;

var params = {
    TableName: 'reminders',
    Key: {
        'instanceID': {
         S: instance
        }
    },
    UpdateExpression: 'set human_confirmed = :x',
    ExpressionAttributeValues: {
       ':x': {S: 'true'},
    },
    ReturnValues: 'UPDATED_NEW'
};
dynamodb.updateItem(params, function(err, data) {
    if (err) 
        callback(err, null); // an error occurred
    else     
        callback(null, data);           // successful response
});
callback(null, 'Updating instance from reminder table: ' + instance + '.... The system will no longer contain automated emails about this resource.');

};

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...