LoginSignup
13
8

More than 3 years have passed since last update.

AWS LambdaでAWS CLIからさくっとInvokeしてログを確認する方法

Posted at

AWS CLIからLambda関数を実行できるのですが、ログ出力するのに若干手間だったので方法をまとめておきます。

前提

  • AWSアカウントがある
  • AWS CLIが利用できる
  • 実行可能なLambda関数がある

コマンド

> aws lambda invoke \
  --function-name [関数名] \
  --log-type Tail \
  outputfile.txt \
  --query 'LogResult' | tr -d '"' | base64 -D

START RequestId: 3c531c8f-d0f9-4e9d-96de-0d1018f0746d Version: $LATEST
END RequestId: 3c531c8f-d0f9-4e9d-96de-0d1018f0746d
REPORT RequestId: 3c531c8f-d0f9-4e9d-96de-0d1018f0746d  Duration: 130.82 ms     Billed Duration: 200 ms         Memory Size: 128 MB   Max Memory Used: 25 MB

ポイント

--log-type Tail でログ取得

--log-type Tail オプションを指定しないとログ情報は返ってきません。

# オプションなし
> aws lambda invoke \
  --function-name [関数名] \
  outputfile.txt

{
    "StatusCode": 200,
    "ExecutedVersion": "$LATEST"
}


# オプションあり
> aws lambda invoke \
  --function-name [関数名] \
  --log-type Tail \
  outputfile.txt

{
    "StatusCode": 200,
    "LogResult": "U1RBUlQgUmVxdWVzdElkOiA1ZDA1MjIzZi1mZGRjLTQwZmEtYjYzMC02YmM3ZWRkY2JiNTMgVmVyc2lvbjogJExBVEVTVApFTkQgUmVxdWVzdElkOiA1ZDA1MjIzZi1mZGRjLTQwZmEtYjYzMC02YmM3ZWRkY2JiNTMKUkVQT1JUIFJlcXVlc3RJZDogNWQwNTIyM2YtZmRkYy00MGZhLWI2MzAtNmJjN2VkZGNiYjUzCUR1cmF0aW9uOiA3NS4yNyBtcwlCaWxsZWQgRHVyYXRpb246IDEwMCBtcyAJTWVtb3J5IFNpemU6IDEyOCBNQglNYXggTWVtb3J5IFVzZWQ6IDI2IE1CCQo=",
    "ExecutedVersion": "$LATEST"
}

--query で絞り込む

--query で戻り値のJsonのうちLogResult だけを取得できます。

> aws lambda invoke \
  --function-name [関数名] \
  --log-type Tail \
  outputfile.txt \
  --query 'LogResult'

"U1RBUlQgUmVxdWVzdElkOiA1ZDA1MjIzZi1mZGRjLTQwZmEtYjYzMC02YmM3ZWRkY2JiNTMgVmVyc2lvbjogJExBVEVTVApFTkQgUmVxdWVzdElkOiA1ZDA1MjIzZi1mZGRjLTQwZmEtYjYzMC02YmM3ZWRkY2JiNTMKUkVQT1JUIFJlcXVlc3RJZDogNWQwNTIyM2YtZmRkYy00MGZhLWI2MzAtNmJjN2VkZGNiYjUzCUR1cmF0aW9uOiA3NS4yNyBtcwlCaWxsZWQgRHVyYXRpb246IDEwMCBtcyAJTWVtb3J5IFNpemU6IDEyOCBNQglNYXggTWVtb3J5IFVzZWQ6IDI2IE1CCQo="

tr -d '"' コマンドでダブルクオーテーションを取り除く

ダブルクオーテーションが含まれているとデコードできないので、取り除きます。

aws lambda invoke \
  --function-name [関数名] \
  --log-type Tail \
  outputfile.txt \
  --query 'LogResult' \
  | tr -d '"'

U1RBUlQgUmVxdWVzdElkOiA2MzcxYjhjYy1lZWU1LTRiMmMtYjliOC0wZjliN2Y1NDZlOTAgVmVyc2lvbjogJExBVEVTVApFTkQgUmVxdWVzdElkOiA2MzcxYjhjYy1lZWU1LTRiMmMtYjliOC0wZjliN2Y1NDZlOTAKUkVQT1JUIFJlcXVlc3RJZDogNjM3MWI4Y2MtZWVlNS00YjJjLWI5YjgtMGY5YjdmNTQ2ZTkwCUR1cmF0aW9uOiAyMi4yNiBtcwlCaWxsZWQgRHVyYXRpb246IDEwMCBtcyAJTWVtb3J5IFNpemU6IDEyOCBNQglNYXggTWVtb3J5IFVzZWQ6IDI2IE1CCQo=

base64 -D コマンドでデコードする

最後にbase64 -D コマンドでデコードすればログが確認できます。

> aws lambda invoke \
  --function-name [関数名] \
  --log-type Tail \
  outputfile.txt \
  --query 'LogResult' | tr -d '"' | base64 -D

START RequestId: 3c531c8f-d0f9-4e9d-96de-0d1018f0746d Version: $LATEST
END RequestId: 3c531c8f-d0f9-4e9d-96de-0d1018f0746d
REPORT RequestId: 3c531c8f-d0f9-4e9d-96de-0d1018f0746d  Duration: 130.82 ms     Billed Duration: 200 ms         Memory Size: 128 MB   Max Memory Used: 25 MB

まとめ

さくっとLamnda関数を実行して結果を確認したいときに使えそうです。

参考

AWS Command Line Interface での AWS Lambda の使用 - AWS Lambda
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-userapp.html

invoke — AWS CLI 1.16.182 Command Reference
https://docs.aws.amazon.com/cli/latest/reference/lambda/invoke.html

base64 コマンド | コマンドの使い方(Linux) | hydroculのメモ
https://hydrocul.github.io/wiki/commands/base64.html

13
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
8