0
Help us understand the problem. What are the problem?

posted at

updated at

AWS LambdaでAWS Systems Manager(SSM)のAWS-RunShellScriptを実行する(Node.js)

行おうとしたこと

LambdaのTest実行から、EC2インスタンス上のシェルスクリプト(/home/ec2-user/hoge.sh)を実行する。

前提

Lambdaのランタイム設定 Node.js 12.x、ハンドラindex.handler。
SSM 高速セットアップ実行をして、EC2にSSMから操作されるロールが設定済み。

ポイント

Lambdaのhandlerはasyncにしない、asyncだとLambdaでエラーがでていないのにindex.jsのssm.sendCommandが実行されていないような状態になる。

Lambdaの実行ロールにAmazonSSMMaintenanceWindowRoleを設定する、AmazonSSMFullAccessではindex.jsのssm.sendCommandで権限エラーがでました。

Lambdaのindex.js

const AWS = require('aws-sdk')

exports.handler = (event) => {
    console.log('始まってます');
    const ssm = new AWS.SSM();
    ssm.sendCommand({
        InstanceIds: ["{インスタンスID}"],
        DocumentName: "AWS-RunShellScript",
        Parameters: {
            commands: ["/home/ec2-user/hoge.sh"]
        }
    }, (err, data) => {
          if (err) {
              console.log('エラーです');
              console.log(err, err.stack);
              return err
          } else {
              console.log('成功です');
              console.log(data);
              return data.CommandId;
          }
    });
    console.log('終了');
};

Execution results

Test Event Name
hoge

Response
null

Function Logs
START RequestId: 9a3d4c84-7fba-4dc3-9310-4f9025632940 Version: 1
2021-07-04T12:05:10.289Z    9a3d4c84-7fba-4dc3-9310-4f9025632940    INFO    始まってます
2021-07-04T12:05:10.570Z    9a3d4c84-7fba-4dc3-9310-4f9025632940    INFO    終了
2021-07-04T12:05:10.820Z    9a3d4c84-7fba-4dc3-9310-4f9025632940    INFO    成功です
2021-07-04T12:05:10.820Z    9a3d4c84-7fba-4dc3-9310-4f9025632940    INFO    {
  Command: {
    CommandId: '51e98cb1-7a46-4cac-92c2-39468407a837',
    DocumentName: 'AWS-RunShellScript',
    DocumentVersion: '$DEFAULT',
    Comment: '',
    ExpiresAfter: 2021-07-04T14:05:10.791Z,
    Parameters: { commands: [Array] },
    InstanceIds: [ 'i-0e7108f51709dc4c0' ],
    Targets: [],
    RequestedDateTime: 2021-07-04T12:05:10.791Z,
    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: 9a3d4c84-7fba-4dc3-9310-4f9025632940
REPORT RequestId: 9a3d4c84-7fba-4dc3-9310-4f9025632940  Duration: 694.41 ms Billed Duration: 695 ms Memory Size: 128 MB Max Memory Used: 92 MB

Request ID
9a3d4c84-7fba-4dc3-9310-4f9025632940
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?