EC2インスタンス(Linux)にあるshファイルを、Lambdaから EC2 Run Command で、実行させています。
現在実装しているコードは下記になります。
現状非同期呼出が行われており、shファイルの処理結果に関わらず、ClowdWatchに、正常終了のログが出力されています。
この処理を同期呼出に変更して、shファイルの処理結果を返してもらうコードにしたいです。
下記ドキュメントを参考しているのですが、非同期処理でしか現状実現出来ておりません。
どうコードを修正していけば、状況が改善されますでしょうか。 ご協力をお願いします。
同期呼び出し(AWS公式ドキュメント)
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/invocation-sync.html
そのLambdaの実行…同期?非同期?(Qiita)
https://qiita.com/is_ryo/items/009220083e179272cbda
'use strict';
const AWS = require('aws-sdk')
const ssm = new (require('aws-sdk/clients/ssm'))();
module.exports.handler = async event => {
try {
let params = {
DocumentName: 'AWS-RunShellScript',
InstanceIds: ['対象のインスタンスID'],
Parameters: {
commands: ['chcp 65001; sh test_Linux.sh'],
workingDirectory:['/home/user/batch_execution']
},
TimeoutSeconds: 3600 // 1 hour
}
const sendCommandResult = await ssm.sendCommand(params).promise();
} catch(e){
console.log(e);
}
};
Osaka T様
早々のご回答ありがとうございます。 そもそものところで勘違いがあったようで、お恥ずかしい限りです。
API Referenceも拝見したのですが、コマンドの進行状況の監視や、 Statusの遷移等どのようなコードで実現すればよいかイメージすら持てずにおります。 Osaka様のほうで、何かヒントとなるようなドキュメント等ご存じありませんでしょうか。
勘違いの是正や、方向性についてご回答をいただけましたので、承認のほうはさせていただこうと思います。 ご都合つけばご確認いただけますと幸いです。