我尝试在linux系统中使用AWS秘密管理器。我可以使用aws cli命令
aws secretsmanager get-secret-value --secret-id abc_account --version-stage AWSCURRENT
得到以下输出
{
"ARN": "arn:aws:secretsmanager:us-east-1:123456789:secret:abc_account-XhteiW",
"Name": "abc_account",
"VersionId": "89637ef4-4594-4c63-9887-3f7d2c7ccc6f",
"SecretString": "{"username":"abc_account","password":"PASSWORD111"}",
"VersionStages": [
"AWSCURRENT"
],
"CreatedDate": "2021-02-08T23:57:58.325000-05:00"
}
我需要的是将密码PASSWORD111保存到linux中的变量var1中。就像
var1=$(aws secretsmanager get-secret-value --secret-id svc_vma_insights_data_platform --version-stage AWSCURRENT | awk XXXXXX )
or
var1=$(aws secretsmanager get-secret-value --secret-id svc_vma_insights_data_platform --version-stage AWSCURRENT | grep XXXXXX )
这是从JSON输出中提取秘密字符串,然后从中提取密码JSON:
passwd=$(aws ... | jq -r '.SecretString' | jq -r '.password')
在linux上你可以试试gnu grep
:
var1=$(aws ... | grep -oP 'passwordW+K[^"\]+')
echo "$var1"
PASSWORD111
命令正则表达式:
passwordW+
:匹配文本password
后面跟着1+非单词字符K
: Reset match info[^"\]+
:匹配非"
和的任何字符的1+