【问题标题】:Fetch AWS Secret keys from Bash script从 Bash 脚本中获取 AWS 密钥
【发布时间】:2021-08-07 02:55:01
【问题描述】:

问题是,如何在 Bash 脚本中轻松地从 AWS Secret Manager 获取敏感信息?要获取响应表单 aws cli 命令,这非常简单:

json_value=$(aws secretsmanager get-secret-value --secret-id "$1")

问题是,响应是以json格式返回的,反序列化和解析所有参数需要一些空间。有什么简单的方法吗?

【问题讨论】:

    标签: amazon-web-services shell aws-secrets-manager


    【解决方案1】:

    如果您将秘密存储为简单字符串,则可以使用

    来检索它们
    aws secretsmanager get-secret-value --secret-id "$SECRET_ID" --query "SecretString" --output text
    

    【讨论】:

    • 现在尝试使用这个命令,当在 SECRET_ID 下你有多个值,而不仅仅是一个。
    【解决方案2】:

    我知道这是问答,只是想与您分享非常方便的 bash 功能,以非常方便的方式获取所有信息(python 需要实例)。

    # Usage Ex. exportSecrets <Secrets-Name> <Key-Name-1> <Key-Name-2>...
    exportSecrets() {
      local json_value;
      json_value=$(aws secretsmanager get-secret-value --secret-id "$1")
    
      echo "------->"
      printf "Secrets RESULT. Json: \n%s\n" "$json_value"
    
      shift; local json_keys=("$@")
    
      fetchJson() {
        python - "$json_value" "$json_keys" <<EOF
    import json, sys
    secrets = json.loads(json.loads(
        sys.argv[1])['SecretString']
    )
    
    ans = []
    for k in sys.argv[2].split(' '):
        ans.append(secrets[k])
    print(' '.join(ans))
    EOF
      }
    
      SECRETS=$(fetchJson)
      echo "------->"
      printf "Resolved Secrets: \n%s\n" "$SECRETS"
    }
    

    现在有了上面的内容,您可以简单地使用参数调用函数,并在列表中返回导出的变量和响应以供下次使用。

    exportSecrets "YOUR-KEY-STORAGE" "KEY-NAME-1" "KEY-NAME-2"
    
    local key1=$(echo $SECRETS | cut -d' ' -f1)
    echo $key1
    
    local key2=$(echo $SECRETS | cut -d' ' -f2)
    echo $key2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-12
      • 2017-12-27
      • 2019-12-07
      • 1970-01-01
      • 2018-09-25
      相关资源
      最近更新 更多