GCP服务帐户密钥轮换

时间:2018-11-30 20:06:26

标签: python json google-cloud-platform service-accounts

我正在尝试为GCP服务帐户实施密钥轮换。我设法创建了一个新密钥,然后对privateKeyData进行了解码,该json.dumps是base64编码的,具有实际的SA JSON文件。现在,当我读回文件进行身份验证时,它给了我这个错误:

  

'unicode对象没有iterKeys()'

我认为问题是data = base64.b64decode(key['privateKeyData']).decode('utf-8') print data # this prints expected output with open('file.json', mode='w') as out: str = json.dumps(data) print out # this adds \n,\\ to the output out.write(str)

AttributeError: 'unicode' object has no attribute 'iterkeys'

错误:

json.dumps

"{\n \"type\": \"service_account\",\n \"project_id\": \"testproj\",\n \"private_key_id\": \6866996939\"}"\n 之后如何转换文件的虚拟片段:

subplots_adjust

1 个答案:

答案 0 :(得分:1)

json.dumps()函数通常用于将dict转换为表示JSON的字符串:

>>> json.dumps({"foo": "bar"})
'{"foo": "bar"}'

但是您给它一个字符串,这导致它转义了引号:

>>> json.dumps('{"foo": "bar"}')
'"{\\"foo\\": \\"bar\\"}"'

您应该只将data写入文件:

with open('file.json', mode='w') as out:
    out.write(data)

看来您可能还有第二个问题导致了异常,您应该在答案中包括完整的追溯,而不只是最后一行。