CloudWatch ロググループの設定 - AWS Lambda

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 に送信されなくなります。

関数のロググループを変更するには (コンソール)
  1. Lambda コンソールの [関数ページ] を開きます。

  2. 関数を選択します。

  3. 関数設定ページで、[モニタリングおよび運用ツール] を選択します。

  4. [ログ記録設定] ペインで、[編集] を選択します。

  5. [ログ記録グループ] ペインの [CloudWatch ロググループ] で、[カスタム] を選択します。

  6. [カスタムロググループ] に、関数からのログの送信先にする 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 マネージドポリシーに含まれています。