LoginSignup
3
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-01-10

🔷 現象

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'});  // リージョン指定

地味にハマったので、ソースを使い回す時とかは、リージョン設定は要注意です。

3
2
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
3
2