CloudWatch ロググループの設定
デフォルトでは、CloudWatch は関数が最初に呼び出されたときに /aws/lambda/<function name>
という名前のロググループを自動的に作成します。既存のロググループにログを送信するように関数を設定したり、関数の新しいロググループを作成したりするには、Lambda コンソールまたは AWS CLI を使用できます。CreateFunction および UpdateFunctionConfiguration Lambda API コマンドと AWS Serverless Application Model (AWS SAM) AWS::Serverless::Function リソースを使用してカスタムロググループを設定することもできます。
同じ CloudWatch ロググループにログを送信するように、複数の Lambda 関数を設定できます。例えば、1 つのロググループを使用して、特定のアプリケーションを構成するすべての Lambda 関数のログを保存できます。Lambda 関数にカスタムロググループを使用する場合、Lambda が作成するログストリームには関数名と関数バージョンが含まれます。これにより、同じロググループを複数の関数に使用しても、ログメッセージと関数の間のマッピングは保持されます。
カスタムロググループのログストリーム命名形式は以下の規則に従います。
YYYY/MM/DD/<function_name>[<function_version>][<execution_environment_GUID>]
カスタムロググループを設定する場合、ロググループに選択する名前は CloudWatch Logs の命名規則に従う必要があることに注意してください。また、カスタムロググループ名には文字列 aws/
で始まるものを使用できません。aws/
で始まるカスタムロググループを作成すると、Lambda はロググループを作成できなくなります。この結果、関数のログは CloudWatch に送信されなくなります。
関数のロググループを変更するには (コンソール)
-
Lambda コンソールの [関数ページ]
を開きます。 -
関数を選択します。
-
関数設定ページで、[モニタリングおよび運用ツール] を選択します。
-
[ログ記録設定] ペインで、[編集] を選択します。
-
[ログ記録グループ] ペインの [CloudWatch ロググループ] で、[カスタム] を選択します。
-
[カスタムロググループ] に、関数からのログの送信先にする CloudWatch ロググループの名前を入力します。既存のロググループの名前を入力すると、関数はそのグループを使用します。入力した名前のロググループが存在しない場合、Lambda はその名前で関数の新しいロググループを作成します。
関数のロググループを変更するには (AWS CLI)
-
既存の関数のロググループを変更するには、update-function-configuration
コマンドを使用します。 aws lambda update-function-configuration \ --function-name myFunction \ --logging-config LogGroup=myLogGroup
関数の作成時にカスタムロググループを指定するには (AWS CLI)
-
AWS CLI を使用して新しい Lambda 関数を作成するときにカスタムロググループを指定するには、
--logging-config
オプションを使用します。以下のコマンド例では、myLogGroup
という名前のロググループにログを送信する Node.js Lambda 関数を作成します。aws lambda create-function \ --function-name myFunction \ --runtime nodejs22.x \ --handler index.handler \ --zip-file fileb://function.zip \ --role arn:aws:iam::123456789012:role/LambdaRole \ --logging-config LogGroup=myLogGroup
実行ロールのアクセス許可
関数から CloudWatch Logs にログを送信するには、その関数に logs:PutLogEvents アクセス許可が必要です。Lambda コンソールを使用して関数のロググループを設定すると、Lambda は以下が満たされることを条件に、このアクセス許可をロールに追加します。
-
サービスの送信先が CloudWatch Logs に設定されていること
-
関数の実行ロールが CloudWatch Logs (デフォルトの送信先) にログをアップロードするアクセス許可を持っていないこと
注記
Lambda は、Amazon S3 または Firehose ログの送信先に「Put」のアクセス許可を追加しません。
Lambda がこのアクセス許可を追加すると、任意の CloudWatch Logs ロググループにログを送信するアクセス許可が関数に付与されます。
Lambda が関数の実行ロールを自動的に更新しないようにして、代わりに手動で関数の実行ロールを編集するには、[アクセス許可] を展開し、[必要なアクセス許可を追加] のチェックを外します。
AWS CLI を使用して関数のロググループを設定しても、Lambda は logs:PutLogEvents
アクセス許可を自動的に追加しません。まだアクセス許可がない場合は、関数の実行ロールにアクセス許可を追加します。このアクセス許可は、AWSLambdaBasicExecutionRole