- 「--query \''...'\'」のようにエスケープしないとエラーになる。
time parallel aws ec2 describe-instances \
--query \''sort_by(Reservations[].Instances[].{A_Name:Tags[?Key==`Name`].Value|[0],B_InstanceId:InstanceId,C_PublicDnsName:PublicDnsName,D_State:State.Name}, &D_State)'\' \
--output text \
--profile $AWS_PROFILE \
--region ::: ${AWS_REGIONS} >> ec2.parallel.txt
real 0m12.535s
user 0m24.561s
sys 0m3.500s
- profile, regionも出力したい場合
- {}: パラメータに置換される。A_0:`{}` がregionに置換される。
- keyでソートされるので、A_0:として先頭に出力するようにしている
time echo "${AWS_REGIONS}" | parallel --joblog joblog.txt aws ec2 describe-instances \
--query \''sort_by(Reservations[].Instances[].{A_10:`'$AWS_PROFILE'`,A_20:`{}`,A_Name:Tags[?Key==`Name`].Value|[0],B_InstanceId:InstanceId,C_PublicDnsName:PublicDnsName,D_State:State.Name}, &D_State)'\' \
--output text \
--profile $AWS_PROFILE \
--region {}
- パイプ後に処理したい場合。perlで環境変数を出力している。parallel の処理対象外なので{}は展開されない。
time echo "${AWS_REGIONS}" | parallel --joblog joblog.txt aws ec2 describe-instances \
--query \''sort_by(Reservations[].Instances[].{A_20:`{}`,A_Name:Tags[?Key==`Name`].Value|[0],B_InstanceId:InstanceId,C_PublicDnsName:PublicDnsName,D_State:State.Name}, &D_State)'\' \
--output text \
--profile $AWS_PROFILE \
--region {} \
| perl -ane "s/^/${AWS_PROFILE}\t/;print $_;" >> ec2.parallel.txt