Скрипт Bash - переменные экспорта AWS SSM параллельно - PullRequest
0 голосов
/ 13 октября 2018

Мой оригинальный скрипт загружает переменные SSM из AWS и работает нормально, но каждая переменная занимает около 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"

Я немного застрял в том, как запускать вещи параллельно с подоболочкой и все еще иметь возможность экспортировать их.

Можно ли извлекать и экспортировать значения параллельно?

1 Ответ

0 голосов
/ 13 октября 2018

Вы ищете 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'
...