AWS-RunShellScript не вызывается из функции Lambda

Я использую лямбда-функцию nodeJS 12.x для вызова определенных команд в одном из экземпляров EC2. Я убедился, что

  • Агент SSM установлен на экземпляре EC2
  • Соответствующие роли назначаются лямбда-функции, политики - AmazonEC2ReadOnlyAccess, AmazonSSMFullAccess, AWSLambdaExecute.

Ниже приведен лямбда-код:

var AWS = require('aws-sdk');
const ssm = new AWS.SSM();
AWS.config.update({region:'ap-south-1'});

exports.handler = function(event, context) {
    var ec2 = new AWS.EC2();

    ec2.describeInstances(function(err, data) {
        if(err) {
            console.log(err, err.stack);
        }
        else {
            let instance = data.Reservations[0].Instances[0].InstanceId;
            console.log("\nInstance Id: ", instance);
            
            ssm.sendCommand({
                DocumentName: "AWS-RunShellScript",
                InstanceIds: [ instance ],
                TimeoutSeconds: 3600,
                Parameters: {
                    commands: ['ifconfig']
                }
            }, function(err, data) {
                if (err) {
                    console.log("\nError:", err);
                } else {
                    console.log("\nSuccess: ", data);
                }
                context.done(null, 'Function Finished!');
            })
        }        
    });    
};

Когда я вызываю эту функцию вручную, я получаю статус ожидающий. Ниже приведен выходной журнал.

Response:
"Function Finished!"

Request ID:
"748b280a-4277-42a1-a0c3-************"

Function logs:
START RequestId: 748b280a-4277-42a1-a0c3-************ Version: $LATEST
2020-11-05T08:52:26.895Z    748b280a-4277-42a1-a0c3-************    INFO    
Inside describe instances:
2020-11-05T08:52:26.952Z    748b280a-4277-42a1-a0c3-************    INFO    
Instance Id:  i-016f4673e082a829e
2020-11-05T08:52:27.237Z    748b280a-4277-42a1-a0c3-************    INFO    
Success:  {
  Command: {
    CommandId: '8b7a3b6d-4a7a-4259-9c82-************',
    DocumentName: 'AWS-RunShellScript',
    DocumentVersion: '',
    Comment: '',
    ExpiresAfter: 2020-11-05T10:52:27.220Z,
    Parameters: { commands: [Array] },
    InstanceIds: [ 'i-****************' ],
    Targets: [],
    RequestedDateTime: 2020-11-05T08:52:27.220Z,
    Status: 'Pending',
    StatusDetails: 'Pending',
    OutputS3BucketName: '',
    OutputS3KeyPrefix: '',
    MaxConcurrency: '50',
    MaxErrors: '0',
    TargetCount: 1,
    CompletedCount: 0,
    ErrorCount: 0,
    DeliveryTimedOutCount: 0,
    ServiceRole: '',
    NotificationConfig: {
      NotificationArn: '',
      NotificationEvents: [],
      NotificationType: ''
    },
    CloudWatchOutputConfig: { CloudWatchLogGroupName: '', CloudWatchOutputEnabled: false },
    TimeoutSeconds: 3600
  }
}
END RequestId: 748b280a-4277-42a1-a0c3-************
REPORT RequestId: 748b280a-4277-42a1-a0c3-************  Duration: 677.90 ms Billed Duration: 700 ms Memory Size: 128 MB Max Memory Used: 96 MB  

Почему статус не успешный? Когда я вручную использую «RunCommand», он работает правильно. Что я делаю неправильно?


person Ashwin    schedule 05.11.2020    source источник


Ответы (1)


Статус команды отображается как ожидающая, потому что она в настоящее время находится в ожидании. После выполнения команды она переходит из состояния ожидания ---- ›Завершено.

если вы возьмете идентификатор команды (CommandId: '8b7a3b6d-4a7a-4259-9c82 - ************' в приведенном выше случае) и посмотрите в System Manager Run Command, когда вы попытаетесь выполнить поиск для этого он покажет успешный или неудачный

person X-Men    schedule 25.01.2021