#実現したいこと
EC2に予め用意してあるシェルスクリプトをLambdaから実行したい実行したい
#現在の状況
EC2はパブリックサブネットに配置
LabmdaはVPC外
StatusがPendingなのでコマンドが送られていないです
ログを確認したところ
ReferenceError: ssm is not defined
と出力されていました
下記の記事を参考にしたのですが、EC2へのSSHログインなどの処理は不要なのでしょうか?https://qiita.com/sayama0402/items/9717efc8189b113d8217
Lambda関数
'use strict' const AWS = require('aws-sdk') const SSM = new AWS.SSM({region: 'us-west-2'}) // var SSH = require('simple-ssh'); const REMOTE_WORKING_DIR = '/home/ec2-user' module.exports.user = async event => { try { let command = 'sh auto_deploy.sh' let params = { DocumentName: 'AWS-RunShellScript', InstanceIds: ['xxxxxx'], Parameters: { commands: [command], // 配列で指定するので複数実行も出来る workingDirectory: [REMOTE_WORKING_DIR] // どの階層で実行するかを指定 }, // タイムアウト設定 TimeoutSeconds: 3600 // 1 hour } SSM.sendCommand(params, function(err, data){ if(err){ console.log(err, err.stack) } else { console.log(data) } }) } catch(e){ console.log(e); } console.log("成功") }
レスポンス
{ Command: { CommandId: 'a486f713-62b1-4179-8d69-4a99ffc25b11', DocumentName: 'AWS-RunShellScript', DocumentVersion: '', Comment: '', ExpiresAfter: 2020-11-02T03:37:40.993Z, Parameters: { commands: [Array], workingDirectory: [Array] }, InstanceIds: [ 'xxxxxxxxxx' ], Targets: [], RequestedDateTime: 2020-11-02T01:37:40.993Z, 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 } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。