ログをS3へエクスポート時に「The specified log group does not exist.」でハマった話
ログをS3へエクスポート時に「The specified log group does not exist.」でハマった話:
CloudWatch logsのログを、S3のバケットにエクスポートする処理を用意。
これを実行したところ、以下のようなエラーが発生。
ロググループ名の不備かと思ったが問題なし。
一応、バケット名や権限周りも確認したが、問題なし。
結局、原因はリージョンの設定不備。
ソースの4行目で東京リージョンを指定しているが、本Lambdaはバージニア北部リージョン。
よって、以下のようにリージョンを修正したら、無事に動きました。
地味にハマったので、ソースを使い回す時とかは、リージョン設定は要注意です。
�� 現象
CloudWatch logsのログを、S3のバケットにエクスポートする処理を用意。'use strict'; const aws = require('aws-sdk'); aws.config.update({region: 'ap-northeast-1'}); // リージョン指定 /** * メイン処理 * @param event : 呼び出し元サービスから渡される値 * @param context : AWS側の各種情報 * @param callback : 呼び出し元サービスへ返す値 * */ exports.handler = (event, context, callback) => { const cloudwatchlogs = new aws.CloudWatchLogs(); let params; /* "destination"で設定したS3バケットに、"destinationPrefix"で設定したフォルダを作り、 "logGroupName"で設定したCludWatchのロググループのlogをexportする。 exportするlogの範囲は、"from"から"to"で設定した範囲。 */ params = { 'destination': 'hoge', 'from': 1546905600000, 'to': 1546992000000, 'logGroupName': '/aws/apigateway/piyo', 'destinationPrefix': 'fuga', 'taskName': 'testTask' }; /* logのexport処理 */ cloudwatchlogs.createExportTask(params, (err, data) => { let response; if (err) { console.log(err, err.stack); response = err.stack; } else { console.log(data); response = data; } callback(null, response); }); };
ResourceNotFoundException: The specified log group does not exist. (訳 : 指定されたロググループは存在しません。)
一応、バケット名や権限周りも確認したが、問題なし。
�� 原因
結局、原因はリージョンの設定不備。ソースの4行目で東京リージョンを指定しているが、本Lambdaはバージニア北部リージョン。
よって、以下のようにリージョンを修正したら、無事に動きました。
// aws.config.update({region: 'ap-northeast-1'}); // リージョン指定 aws.config.update({region: 'us-east-1'}); // リージョン指定
コメント
コメントを投稿