我的原始脚本从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并行运行事物仍然有些困惑,但仍然能够导出它们。
是否可以并行获取和导出值?
答案 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'