【AWS Lambda】同期呼び出しで実ファイルを使用できない時の対処法

コマンド(AWS CLI)から手軽にLambda関数を実行して結果を得る事が出来ます。
これを同期呼び出しと言います。

実行するデータはjson形式で作成してアップロードして実行する事も可能です。
オプションpayloadに作成したファイルを指定する事で実行できます。

$ aws lambda invoke  --function-name (関数名) --payload file://(作成したファイル) 

しかし、単純にファイルを作っただけでは実行できない場合があります。
今回はファイル形式が原因でエラーが出た時の対処方法を記載します。

実行時のエラー内容

実行しようとするとInvalid base64と言うエラーが発生する場合があります。

$ aws lambda invoke  --function-name (関数名) --payload file://(作成したファイル)

Invalid base64: "{
    "Records": [ *** 実行するデータ *** ]
}



"

解決方法

読み込むファイルはbase64形式でエンコードする必要があります。

ja.wikipedia.org

エンコードの仕方

該当の形式にエンコードする場合、opensslでエンコードします。

$ openssl base64 -out (エンコード後のファイル名) -in (エンコード前のファイル名)
$ aws lambda invoke  --function-name (関数名) --payload file://(エンコード後のファイル名)
{
    "StatusCode": 200,
    "ExecutedVersion": "$LATEST"
}

©︎2017-2018 WebSandBag