未从Lambda函数调用AWS RunShellScript



我正在使用nodeJS 12.x lambda函数在其中一个EC2实例上调用某些命令。我已经确定

  • SSM代理安装在EC2实例上
  • 为lambda函数分配了适当的角色,策略为-AmazonEC2ReadOnlyAccess、AmazonSSMFullAccess、AWSLambdaExecute

下面是lambda代码:

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"时,它可以正常工作。我做错了什么?

命令状态显示为挂起,因为它当前处于挂起状态。一旦执行命令,它将从挂起状态转到---->完成

如果您获取命令ID(在上述情况下,命令ID:'8b7a3b6d-4a7a-4259-9c82-************'(并查看System Manager Run command,当您尝试搜索它时,它将显示成功或失败的

最新更新