如何获取所有日志组名称

Com*_*ode 1 amazon-web-services aws-lambda amazon-cloudwatchlogs

我有一个将所有日志组导出到 s3 的 lambda,目前正在使用它cloudwatchlogs.describeLogGroups来列出所有日志组。

const logGroupsResponse = await cloudwatchlogs.describeLogGroups({ limit: 50 })
Run Code Online (Sandbox Code Playgroud)

问题是我们有 69 个日志组,有什么方法可以列出 aws 账户中的所有日志组(ID 和名称)。我发现可以有 1000 个日志组。这是我们控制台的屏幕截图: 在此输入图像描述

为什么cloudwatchlogs.describeLogGroups只允许 50 个这个很小的限制?

Erv*_*gyi 5

假设您使用 AWS JS SDK v2,describeLogGroupsAPInextToken在其响应中提供nexToken. 该令牌用于通过发送多个请求来检索多个日志组(超过 50 个)。我们可以使用以下模式来完成此任务:

const cloudwatchlogs = new AWS.CloudWatchLogs({region: 'us-east-1'});
let nextToken = null;
do {
    const logGroupsResponse = await cloudwatchlogs.describeLogGroups({limit: 50, nextToken: nextToken}).promise();
    
    // Do something with the retrieved log groups
    console.log(logGroupsResponse.logGroups.map(group => group.arn));

    // Get the next token. If there are no more log groups, the token will be undefined
    nextToken = logGroupsResponse.nextToken;
} while (nextToken);
Run Code Online (Sandbox Code Playgroud)

我们正在循环查询 AWS API,直到不再有日志组为止。