如何用AWS CLI判断Secrets Manager密钥是否存在并配合CFT创建
检查AWS Secrets Manager密钥是否存在的AWS CLI方案
你可以用aws secretsmanager describe-secret命令来检查指定名称的密钥是否存在:该命令在密钥存在时会返回元数据,不存在时会抛出错误,结合bash的命令返回码就能判断状态,进而生成你需要的标记参数。
核心CLI命令示例
假设要检查的密钥名称是DatabaseCredentials(与你CFT中的资源名对应),执行以下命令:
aws secretsmanager describe-secret --secret-id DatabaseCredentials
- 密钥存在:命令返回码为0(执行成功),同时输出密钥的JSON格式元数据
- 密钥不存在:命令返回非0值,同时输出
ResourceNotFoundException类的错误提示
封装成bash脚本
将检查逻辑封装成脚本,直接输出true/false,方便传给CloudFormation参数:
#!/bin/bash # 替换为你要检查的密钥ID或名称 SECRET_NAME="DatabaseCredentials" # 执行检查命令,屏蔽输出避免干扰 aws secretsmanager describe-secret --secret-id "$SECRET_NAME" > /dev/null 2>&1 if [ $? -eq 0 ]; then # 密钥已存在,返回true echo "true" else # 密钥不存在,返回false echo "false" fi
结合CloudFormation部署使用
先运行脚本获取状态标记,再传递给CFT部署命令:
# 获取密钥存在状态标记 EXISTS_FLAG=$(bash check-secret-exists.sh) # 部署CloudFormation模板,传入控制参数 aws cloudformation deploy \ --template-file your-template.yml \ --stack-name your-target-stack \ --parameter-overrides isResourceAlreadyExistsFlag=$EXISTS_FLAG
这样就能让你的CFT根据密钥的实际存在状态,控制是否创建新的Secrets Manager密钥资源。
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

