SSM sendcommand does not return any messages at lambda function

0

Hello there!

I'm a very beginner engineer and really new to AWS and web application systems. I have some questions about SSM send command functions.

I tried to run EC2 by lambda function using SSM sendcommand. But there are no errors and no response from sendcommand. Besides, it didn't send any log to CloudWatch. It worked from System Manager console so I think IAM policies are fine. The lambda uses javascript and AWS SDK for JavaScript v2. Please tell me how to solve this problem.. Thank you in advance for your kind help!

This is the program which I tried to run on EC2,

#!/bin/bash  
  
echo test >> test.txt  
echo test  

And this is index.js.

const AWS = require("aws-sdk");  
  
const SSM = new AWS.SSM({ region: process.env.REGION });  
const REMOTE_WORKING_DIR = '/home/ec2-user/environment/test';  
  
exports.handler = async (event) => {  
    try{  
        let command = 'sh test.sh';  
          
        let params = {  
            DocumentName: 'AWS-RunShellScript',  
            InstanceIds: \["**********"],  
            Parameters: {  
                commands: \\[command\],  
                workingDirectory: \\[REMOTE_WORKING_DIR\]  
            },  
              
            CloudWatchOutputConfig: {  
                CloudWatchOutputEnabled: true  
            },  
              
            TimeoutSeconds: 3600  
        };  
          
        console.log(params);  
          
        await SSM.sendCommand(params, function(err, data){  
            if(err){  
                console.log("error", err);  
            }else{  
                console.log("success", data);  
            }  
        });  
    }catch(e){  
        console.log("ERROR");  
        console.log(e);  
    }  
      
    return;  
};  

Edited by: yoshi09japan on Feb 7, 2021 6:09 PM

질문됨 3년 전840회 조회
1개 답변
0

I found this was caused by not waiting the sendCommand.
This works fine.

        //Modified these lines  
        // await SSM.sendCommand(params, function(err, data){  
        //     if(err){  
        //         console.log("error", err);  
        //     }else{  
        //         console.log("success", data);  
        //     }  
        // });  
  
        //this works fine  
        const sendCommandResult = await SSM.sendCommand(params).promise();  
        console.log(sendCommandResult);  
답변함 3년 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인

관련 콘텐츠