如何在PowerShell与Bash中通过管道批量启动AWS Glue作业
在Bash和PowerShell中批量启动符合标签条件的AWS Glue作业
Bash环境下的实现
aws glue list-jobs返回JSON格式结果,我们需要先提取符合标签条件的作业名,再逐个传递给启动命令。借助jq(需提前安装)解析JSON:
aws glue list-jobs --tags name=something | jq -r '.JobNames[]' | xargs -I {} aws glue start-job-run --job-name {}
jq -r '.JobNames[]':从JSON输出里提取JobNames数组的每个作业名,-r确保输出是无引号的纯文本xargs -I {}:把前面管道传来的每个作业名替换到{}位置,逐个执行启动命令
如果要给作业加运行参数,直接追加到启动命令后即可:
aws glue list-jobs --tags name=something | jq -r '.JobNames[]' | xargs -I {} aws glue start-job-run --job-name {} --arguments '{"env":"prod","batch_id":"123"}'
PowerShell环境下的实现
PowerShell自带JSON解析能力,无需额外工具,直接用ConvertFrom-Json处理输出:
aws glue list-jobs --tags name=something | ConvertFrom-Json | ForEach-Object { $_.JobNames | ForEach-Object { aws glue start-job-run --job-name $_ } }
ConvertFrom-Json:把AWS CLI返回的JSON字符串转成PowerShell可操作的对象- 两层
ForEach-Object:第一层提取JobNames数组,第二层遍历每个作业名执行启动命令
添加额外参数的写法:
aws glue list-jobs --tags name=something | ConvertFrom-Json | ForEach-Object { $_.JobNames | ForEach-Object { aws glue start-job-run --job-name $_ --arguments '{"env":"prod","batch_id":"123"}' } }
内容的提问来源于stack exchange,提问作者ams1
相关产品推荐
相关产品推荐

