1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

lambda 関数Aでerrorという文字列がログに出た時、関数BをCloudWatchのサブスクリプションフィルターで実行する

Posted at

概要

  • 関数Aでerrorという文字列がログに出力されたら、関数BをCloudWatchのサブスクリプションフィルターを用いて実行する方法を簡単にまとめる。

方法

  • 関数Aと関数Bは下記記事で使用した関数A(echo-error)と関数B(hello-world)を使用する。関数Aに若干の修正を加える。関数AのIAMロールに付与したカスタマーポリシーなどはそのままにしてある。

  • 関数A(echo-error)を下記の様に修正する。(9行目をコメントアウトするだけ)

    import { LambdaClient, InvokeCommand } from '@aws-sdk/client-lambda';
    
    const lambdaClient = new LambdaClient({ region: 'ap-northeast-1' }); // 適切なリージョンを設定
    
    export async function handler(event) {
      try {
        // 何らかの処理
        console.log('error');
    //    await invokeFunctionB(); // 本当は例外のときに関数Bを呼び出すけど、動作確認のために常に呼び出す
      } catch (error) {
        console.error('error');
        // 関数Bを呼び出す
        await invokeFunctionB();
      }
    }
    
    async function invokeFunctionB() {
      const params = {
        FunctionName: '関数BのARN名',
        InvocationType: 'Event', // 非同期呼び出し
        Payload: JSON.stringify({}), // 関数Bに渡す引数を設定する事もできる
      };
    
      try {
        const command = new InvokeCommand(params);
        const response = await lambdaClient.send(command);
        console.log('Function B invoked:', response);
      } catch (error) {
        console.error('Error invoking Function B:', error);
      }
    }
    
  • 一旦、関数Aを実行して、関数Bが実行されないことを確認する。

  • CloudWatchで関数Aのロググループを表示する。

  • 「サブスクリプションフィルター」を開く。

    CloudWatch_Management_Console.png

  • 「作成」をクリックし「Lambda サブスクリプションフィルター」をクリックする。

  • 下記のようにサブスクリプションフィルターを設定する 。

    • Lambda関数:関数B(hello-world)
    • ログ形式:その他
    • サブスクリプションフィルターのパターン:error
    • サブスクリプションフィルター名:error-chatch-subscription-filter
  • サブスクリプションフィルターを作成する 。

  • 関数Aを実行するとサブスクリプションフィルターを通じて関数Bが実行されるようになる。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?