我正在尝试在 AWS CLI 上检索会话令牌,如下所示:
aws sts get-session-token --serial-number arn-string --token-code mfacode
在哪里
arn-string从 IAM 管理控制台复制,分配的 MFA 设备的安全凭证,格式如下arn:aws:iam:<number>:mfa/<name>mfacode取自已注册的虚拟 MFA 设备An error occurred (InvalidClientTokenId) when calling the GetSessionToken operation: The security token included in the request is invalid.
但是,我使用该 MFA 设备在浏览器中登录控制台就可以了
我的 ~/.aws/ 中只有一个默认配置文件,但我不知道这会产生什么影响。
--token-code,希望它提示我输入 MFA 设备令牌——同样的错误arn:aws:iam:<number>:user/<name>-- 与预期相同的错误,因为aws get-session-id help 明确指出它需要是 MFA 设备的 arn我认为这与 arn-string 而不是令牌有关,但是什么?任何关于导致此问题的原因的想法都非常受欢迎。
问候,奥拉夫
我想根据错误消息 JSON 字段为空或非空来检测错误。我正在使用 jq 来分割成员,但在我的 bash“if”中评估它时遇到了很大的麻烦。
我的变量 $input 引用了一个 json 文件,该文件确实有一个 errMsg 成员,但作为一个空字符串(请注意,我的 CLI 提示符是 ~$):
~$ echo $(jq "." $input)
{ "projectCode": "145", "fullCode": "1", "errMsg": "" }
Run Code Online (Sandbox Code Playgroud)
在这种情况下检索 errMsg 字段会正确生成一个空字符串:
~$ err=$(jq ".errMsg" $input)
~$ echo $err
""
Run Code Online (Sandbox Code Playgroud)
问题:测试该变量似乎不可能:
~$ if [ $err = "" ]; then echo EMPTY; else echo CONTENT; fi
CONTENT
Run Code Online (Sandbox Code Playgroud)
我期望 EMPTY 因为 $err 刚刚显示“”。检查其他方式:
~$ if [ $err != "" ]; then echo EMPTY; else echo CONTENT; fi
EMPTY
Run Code Online (Sandbox Code Playgroud)
所以 $err 显然不是 "",即使 …