获取所有 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。
要获得包含两列(ARN
、Tags
)的 CSV 输出,您可以运行以下命令:
aws \
resourcegroupstaggingapi \
get-resources \
--resource-type-filters "lambda" \
| jq -r '.ResourceTagMappingList[] | [.ResourceARN, ((.Tags | map([.Key, .Value] | join("="))) | join(","))] | @csv'
这种方法的优点是您只有一个 HTTP 调用,因此速度相对较快。缺点是您只能获得 ARN 和标签。
正如 shimo 在对问题的评论中提到的,将命令的输出保存到文件的一种方法是使用 >
运算符。
>
运算符用命令的输出替换文件的现有内容。如果要将多个命令的输出保存到同一个文件中,应该使用 >>
运算符。
您还可以使用管道和命令 tee
。输出将打印在您的屏幕和文件中,该文件位于文件末尾。
我的 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。
要获得包含两列(ARN
、Tags
)的 CSV 输出,您可以运行以下命令:
aws \
resourcegroupstaggingapi \
get-resources \
--resource-type-filters "lambda" \
| jq -r '.ResourceTagMappingList[] | [.ResourceARN, ((.Tags | map([.Key, .Value] | join("="))) | join(","))] | @csv'
这种方法的优点是您只有一个 HTTP 调用,因此速度相对较快。缺点是您只能获得 ARN 和标签。
正如 shimo 在对问题的评论中提到的,将命令的输出保存到文件的一种方法是使用 >
运算符。
>
运算符用命令的输出替换文件的现有内容。如果要将多个命令的输出保存到同一个文件中,应该使用 >>
运算符。
您还可以使用管道和命令 tee
。输出将打印在您的屏幕和文件中,该文件位于文件末尾。