如何从 aws 参数存储中导出参数并导入另一个帐户

Posted

技术标签:

【中文标题】如何从 aws 参数存储中导出参数并导入另一个帐户【英文标题】:How to export parameters from aws parameter store and import into another account 【发布时间】:2019-07-14 04:34:38 【问题描述】:

在我的第一个 aws 帐户上,我以以下方式指定了参数:

/config/a => value1
/config/b => value2
/config/c/a => value31
/config/c/b => value32

我想将这些移动到我的 second aws 帐户。

我在参数存储中手动创建了这些参数。

如何轻松地将这些值从一个帐户复制到另一个帐户?

使用aws ssm get-parameters --names "<param-name>" 会有点困难,因为我的参数太多了。

【问题讨论】:

【参考方案1】:

可能是 get-parameters-by-path 套装: aws ssm get-parameters-by-path --path "/" --recursive

https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameters-by-path.html#synopsis

【讨论】:

【参考方案2】:
    通过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"`);

【讨论】:

【参考方案3】:

好吧,我知道已经过去了一年,但是对于仍在试图找出详细解决方案的人来说,

因此您需要运行以下命令来获取当前区域中的所有参数:

aws ssm get-parameters-by-path --path "/" --recursive --with-decryption --region eu-west-2

您将收到JSON 格式的回复。只需复制响应并将其粘贴到文件中(*.txt 文件,然后将其重命名为 *.json)。您拥有包含所有当前参数的 JSON 文件

我将该代码发布到 git 存储库 here。克隆后克隆该存储库,在此处添加所需的区域:

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 install安装npm包并通过命令npm start运行脚本

【讨论】:

【参考方案4】:

我创建了一个实用程序,它完全符合您的要求:

pip install aws-ssm-copy
aws-ssm-copy --dry-run --source-profile <source> --recursive /

查看aws-ssm-copy 实用程序和blog 了解更多详情。

【讨论】:

这似乎是一个很棒的工具,但遇到错误“botocore.exceptions.NoRegionError: You must specify a region”,即使在使用“aws-ssm-copy --dry-run --source -profile dprdnka --source-region us-west-2 --recursive /"【参考方案5】:

这是我的版本,它以 TSV(制表符分隔值)格式输出所有参数的 NameTypeValue

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 参数存储中导出参数并导入另一个帐户的主要内容,如果未能解决你的问题,请参考以下文章

在 VBA 中导出存储过程的参数

使用参数在 Azure 数据工厂中导入架构

如何将现有资源从不同的 AWS 账户导入 AWS CDK

AWS S3权限 - put-bucket-acl出错

将 docker 映像从一个 AWS ECR 存储库复制到另一个

从带有参数的bash脚本中导出环境变量