ログをS3へエクスポート時に「The specified log group does not exist.」でハマった話

ログをS3へエクスポート時に「The specified log group does not exist.」でハマった話:


�� 現象

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'});  // リージョン指定 
地味にハマったので、ソースを使い回す時とかは、リージョン設定は要注意です。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)