Как экспортировать параметры из хранилища параметров aws и импортировать в другой аккаунт
В моем первом аккаунте aws параметры указаны следующим образом:
/config/a => value1
/config/b => value2
/config/c/a => value31
/config/c/b => value32
Я хочу переместить их на мой второй аккаунт AWS.
Я создал эти параметры в хранилище параметров вручную.
Как я могу легко скопировать эти значения из одной учетной записи в другую?
С помощью aws ssm get-parameters --names "<param-name>"
было бы слишком сложно, так как у меня слишком много параметров.
7 ответов
- Получить все параметры через
aws ssm get-parameters-by-path --path "/relative/path/" --recursive
- Запишите полученный JSON куда-нибудь вниз - например, в файл
- Подготовьте положенные команды, например, с JS
for (const value of params.Parameters) {
const { Name, Value } = value;
console.log(`aws ssm put-parameter --name "${Name}" --value "${Value}" --type "String"`);
}
Я создал утилиту, которая делает именно то, что вы хотите:
pip install aws-ssm-copy
aws-ssm-copy --dry-run --source-profile <source> --recursive /
За к подробностями обращайтесьутилите aws-ssm-copy и в блоге .
Вот моя версия, которая выводит все параметры '
Name
,
Type
а также
Value
в формате TSV (значения, разделенные табуляцией):
aws ssm get-parameters-by-path --path "/" --recursive --query="Parameters[*].[Name, Type, Value]" --output text
Пример ответа:
/prod/aaa String xxx
/prod/bbb String yyy
/prod/ccc String zzz
Может быть, здесь можно получить параметры по пути:aws ssm get-parameters-by-path --path "/" --recursive
https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameters-by-path.html
Хорошо , я знаю, что прошел год, но для людей, которые все еще пытаются выяснить, вот подробное решение,
Поэтому вам нужно выполнить следующую команду, чтобы получить все параметры в вашем текущем регионе:
aws ssm get-parameters-by-path --path "/" –recursive
вы получите JSON
форматированный ответ. Просто скопируйте ответ и вставьте его в файл (*.txt
файл, затем переименуйте его в *.json
). У вас есть файл JSON со всеми текущими параметрами
Я опубликовал этот код в репозитории git здесь. Просто клонируйте этот репозиторий после клонирования и добавьте сюда желаемый регион:
const ssm = new AWS.SSM({
apiVersion: '2014-11-06';,
region: 'eu-west-2'; // add your destination region here.
});
и ваш json
файл здесь: const { Parameters } = await require('<YOUR JSON FILE>.json')
;
Затем установите npm
пакеты, запустив команду npm install
и запускаем скрипт командой npm start
Используя следующий cmd, вы можете легко получить имя и значения хранилища параметров.
$ aws ssm get-parameters-by-path --path "/" --recursive --query="Parameters[*].[Name, Value]" --output json>parameters.json
Вы можете попробовать что-то вроде этого:
$source_path=""
$source_region=""
$destination_path=""
$destination_region=""
aws_output=$(aws ssm get-parameters-by-path \
--path "$source_path" \
--with-decryption \
--recursive \
--query "Parameters[*].[Name, Type, Value]" \
--output json \
--region "$source_region")
echo "$aws_output" | jq -r '.[] | [.[0], .[1], .[2]] | @tsv' | while IFS=$'\t' read -r full_source_path type value; do
full_destination_path="${full_source_path/$source_path/$destination_path}"
if [ "$dry_run" = true ]; then
echo "[Dry run] Copying: $full_source_path -($type)-> $full_destination_path"
else
echo "[Dry run] Copying: $full_source_path -($type)-> $full_destination_path"
aws ssm put-parameter \
--name "$full_destination_path" \
--value "$value" \
--type "$type" \
--region "$destination_region"
fi
done
Или полную версию здесь: https://gist.github.com/johnymachine/15fd9d4b7c5fdf51165258962e52488d