获取所有 AWS Lambda 函数及其标签并输出到 CSV

Get All AWS Lambda Functions and Their Tags and Output to CSV

我的 bash 脚本运行以检索 lambda 函数及其标签。

它运行正常并完成了它需要做的事情,但是我需要将输出写入 .txt 或 .csv 文件,该文件需要采用可读格式。

下面是我的脚本;

#!/bin/bash
while read -r name; do
    aws lambda list-functions | jq -r ".Functions[].FunctionArn" | xargs -I {} aws lambda list-tags --resource {} --query '{"{}":Tags}' --output text
done

下面是脚本运行后返回值的样子;

ARN:AWS:LAMBDA:EU-WEST-1:1939999:FUNCTION:example-lambda     EXX   dev     example-lambda   False   release-1.1.9   False   True

我需要将所有退回的物品整齐地排列在一个 txt 或 csv 文件中。任何帮助将不胜感激。

我发现 this tutorial 很有帮助。根据您所写的内容,您可以将命令的输出通过管道传输到 csv 中,或者将其合并到一个数组中,然后将其写入一个文件中,每行末尾都有一个换行符。

我建议使用 resourcegroupstaggingapi API 来解决这个问题。这 API 允许您获取特定类型的所有资源 它们的标签。

要获取默认区域的所有 Lambda 函数及其标签,您可以运行以下命令:

aws resourcegroupstaggingapi get-resources --resource-type-filters "lambda"

现在可以使用 jq 解析此命令的输出。 jq 的优点在于您可以将输出操作为 CSV。

要获得包含两列(ARNTags)的 CSV 输出,您可以运行以下命令:

aws \
    resourcegroupstaggingapi \
    get-resources \
    --resource-type-filters "lambda" \
    | jq -r '.ResourceTagMappingList[] | [.ResourceARN, ((.Tags | map([.Key, .Value] | join("="))) | join(","))] | @csv'

这种方法的优点是您只有一个 HTTP 调用,因此速度相对较快。缺点是您只能获得 ARN 和标签。

正如 shimo 在对问题的评论中提到的,将命令的输出保存到文件的一种方法是使用 > 运算符。

> 运算符用命令的输出替换文件的现有内容。如果要将多个命令的输出保存到同一个文件中,应该使用 >> 运算符。

您还可以使用管道和命令 tee。输出将打印在您的屏幕和文件中,该文件位于文件末尾。