Bash脚本-AWS SSM并行导出变量

时间:2018-10-12 22:58:11

标签: bash shell gnu-parallel

我的原始脚本从AWS加载了SSM变量,并且工作正常,但每个变量大约需要1秒

#!/bin/bash

getEnvironmentVariable() {
  SECRET=$1
  ssm_value=$(aws ssm get-parameter --name "/TEST_PREFIX/${SECRET}" --with-decryption --query 'Parameter.Value' --output text)
  export "${SECRET}"="${ssm_value}"
}

getEnvironmentVariable "TEST_SECRET_1"
getEnvironmentVariable "TEST_SECRET_2"

相反,我希望并行提取环境变量并将其导出。

我试图并行化它们。

#!/bin/bash

getEnvironmentVariable() {
  SECRET=$1
  ssm_value=$(aws ssm get-parameter --name "/TEST_PREFIX/${SECRET}" --with-decryption --query 'Parameter.Value' --output text)
  echo "${SECRET}"="${ssm_value}"
}

export $(getEnvironmentVariable "TEST_SECRET_1") &
export $(getEnvironmentVariable "TEST_SECRET_2") &
wait

env | grep "TEST_SECRET_2"

我对如何与子shell并行运行事物仍然有些困惑,但仍然能够导出它们。

是否可以并行获取和导出值?

1 个答案:

答案 0 :(得分:1)

您正在寻找parset (于20170422年推出,但在过去一年中取得了长足发展):

#!/bin/bash

. `which env_parallel.bash`

getEnvironmentVariable() {
  SECRET=$1
  aws ssm get-parameter --name "/TEST_PREFIX/${SECRET}" --with-decryption --query 'Parameter.Value' --output text
}
export -f getEnvironmentVariable

parset TEST_SECRET_1,TEST_SECRET_2 getEnvironmentVariable ::: TEST_SECRET_1 TEST_SECRET_2
echo $TEST_SECRET1

# And if you need it exported:
export TEST_SECRET_1
export TEST_SECRET_2
bash -c 'echo $TEST_SECRET2'