使用 aws codepipeline 将 aws Secret Manager 从一个账户复制到另一个账户
我使用 cloudformation 模板创建了一个秘密并将其保存在变量中。
AUTH_AWS_SECRET_DEV=$(aws secretsmanager get-secret-value --region $AWS_DEFAULT_REGION --secret-id "sample_auth_aws_secret" --output text)
我得到的这个参考变量的输出是
arn:aws:secretsmanager:us-east-1:56875858585:secret:sample_auth_aws_secret-yfw3B2 2022-02-23T15:13:14.166000+00:00sample_auth_aws_secret {"clientId":"sample123","秘密":"wjwjwjwjwjwjwjsjsjsj"} a62a2e90-c2dc-4936-82a1-014c72ac62e5 版本AWSCURRENT
我需要使用 bash 脚本运行 aws create Secret 命令,以便它将在 aws 另一个账户中创建相同的机密。
根据 aws 文档的命令示例是
aws secretsmanager create-secret \
--name sample_auth_aws_secret \
--description "My test secret created with the CLI." \
--secret-string "{\"clientId\":\"sample123\",\"secret\":\"wjwjwjwjwjwjwjsjsjsj\"}"
如何在 bash 脚本中动态地从该引用变量中获取这些所需的值?
I created a secret using cloudformation template and keep it inside a variable.
AUTH_AWS_SECRET_DEV=$(aws secretsmanager get-secret-value --region $AWS_DEFAULT_REGION --secret-id "sample_auth_aws_secret" --output text)
The output of this reference variable I am getting is
arn:aws:secretsmanager:us-east-1:56875858585:secret:sample_auth_aws_secret-yfw3B2
2022-02-23T15:13:14.166000+00:00 sample_auth_aws_secret
{"clientId":"sample123","secret":"wjwjwjwjwjwjwjsjsjsj"}
a62a2e90-c2dc-4936-82a1-014c72ac62e5 VERSIONSTAGES AWSCURRENT
I need to run aws create secret commands using bash scripts so that it will create the same secrets in aws another account.
The command example as per the aws doc is
aws secretsmanager create-secret \
--name sample_auth_aws_secret \
--description "My test secret created with the CLI." \
--secret-string "{\"clientId\":\"sample123\",\"secret\":\"wjwjwjwjwjwjwjsjsjsj\"}"
How can I take these required values from that reference variable dynamically in bash script?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用简单的 JSON 处理就可以轻松实现。我已经使用 jq 为您演示了它。但有多个可以被挑选来完成这项工作。
AWS cli 支持多种输出格式,从 JSON 中提取数据是处理该任务的最有效方法。
以下是 get-secret-value 格式,其输出为 JSON。
使用 jq,您可以从 JSON 字符串中提取特定的密钥并将其传递给下一个命令。
总结 将
所有内容放在一起,您就得到了解决方案。 --output 标志更改为 JSON 而不是文本。可以在 .credentials 文件中进行配置以全局应用该设置。
It can be achieved easily using simple JSON processing. I have used jq to demo it for you. but there are multiple out there which can be cherry-picked for the job.
AWS cli supports multiple output formats, and extracting data from JSON is the most efficient way to tackle the task.
Below is the format get-secret-value with output as JSON will follow.
Using jq you can extract the specific key from the JSON string and pass it to the next command.
Summing it up
Putting it all together, you get your solution. The --output flag is changed to JSON instead of text. This can be configured in the .credentials file to apply the setting globally.