簡體   English   中英

如何使用 xonsh 有效地從 JSON 中提取變量?

[英]How can I efficiently extract variables from JSON with xonsh?

給定一個變量AWS_ASSUMED_ROLE ,其中包含 output 的aws sts assume-role (一個 JSON 字符串),我可以在bash中編寫以下內容。

export AWS_ACCESS_KEY_ID=$( jq -r '.Credentials.AccessKeyId' <<<$AWS_ASSUMED_ROLE )
export AWS_SECRET_ACCESS_KEY=$( jq -r '.Credentials.SecretAccessKey' <<<$AWS_ASSUMED_ROLE )
export AWS_SESSION_TOKEN=$( jq -r '.Credentials.SessionToken' <<<$AWS_ASSUMED_ROLE )

aws sts get-caller-identity

但是,為了在xonsh中獲得相同的功能,我需要兩個echo命令。

$AWS_ACCESS_KEY_ID     = $( echo -n @$( echo @(AWS_ASSUMED_ROLE) | jq -r '.Credentials.AccessKeyId') )
$AWS_SECRET_ACCESS_KEY = $( echo -n @$( echo @(AWS_ASSUMED_ROLE) | jq -r '.Credentials.SecretAccessKey' ) )
$AWS_SESSION_TOKEN     = $( echo -n @$( echo @(AWS_ASSUMED_ROLE) | jq -r '.Credentials.SessionToken' ) )

aws sts get-caller-identity

內部一個為jq提供輸入數據。 外部的能夠使用字符串值設置相應的環境變量而無需換行。

好吧,有點尷尬,但還不算太糟。 但是,有更好的方法嗎?

jq是一個很棒的工具——不過,對於xonsh的這種特殊情況,我會json模塊。 假設AWS_ASSUMED_ROLE是一些字符串化的 json blob:

import json

blob = json.loads(AWS_ASSUMED_ROLE)
$AWS_ACCESS_KEY_ID = blob["Credentials"]["AccessKeyId"]
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM