
Golang で書かれたラムダ関数があります。HTTP API ゲートウェイを呼び出して実行します。問題なく動作しますが、Golang プログラムによって生成された stderr に書き込まれたログを確認したいと思います。
私は試したこれ
aws logs describe-log-groups
しかし、空の配列が表示されます:
{
"logGroups": []
}
実際には、次のように API ゲートウェイを使用せずに Lambda 関数を直接呼び出した場合にのみログが表示されます。
aws lambda invoke --function-name $FUNCTION_NAME $output --log-type Tail --query 'LogResult'
この場合、ログは呼び出し直後に出力されます。
しかし、HTTP API ゲートウェイで Lambda 関数を呼び出すときに、そのログを確認できればさらに良いでしょう。
アップデート1
次のような名前のロググループを追加しました/aws/lambda/$FUNCTION_NAME
:
aws logs create-log-group --log-group-name /aws/lambda/$FUNCTION_NAME
それにログ ストリームを追加しました:
aws logs create-log-stream --log-group-name /aws/lambda/$FUNCTION_NAME --log-stream-name /aws/lambda/$FUNCTION_NAME
次に、API 経由で Lambda 関数を呼び出してログを生成します。ログを確認します。
aws logs get-log-events --log-group-name /aws/lambda/$FUNCTION_NAME --log-stream-name /aws/lambda/$FUNCTION_NAME
そして、応答を得ます:
{
"nextForwardToken": "f/7872383232323",
"events": [],
"nextBackwardToken": "b/8080823092093"
}
なので、イベントはないです…うーん…
このログ グループをコンソールで確認しました。そこも空です。
アップデート2
CloudWatchFullAccess
この Lambda 関数にアタッチされたロールにポリシーを追加しました。
aws iam attach-role-policy --role-name $roleName \
--policy-arn arn:aws:iam::aws:policy/CloudWatchFullAccess
API を呼び出し、ログを再確認しましたが、まだ空です。ロール ポリシーを一覧表示すると、空の配列が表示されるのは興味深いことです。ただし、上記で CloudWatchFullAccess を設定しただけです。
aws iam list-role-policies --role-name $roleName
{
"PolicyNames": []
}
答え1
Lambda 関数を作成すると、それに関連付けられたログ グループが存在するはずですが、アカウントにはログ グループが存在しないようです。その名前で新しいログ グループを作成して'/aws/lambda/<function_name>'
、問題が解決するかどうかを確認してください。また、Web コンソールにログインして、同じ問題が発生するかどうかを確認してください。Cloud Watch のコンソールからログ グループを作成することもできます。