首页 > 解决方案 > jq:错误:语法错误,意外的 INVALID_CHARACTER,在 Windows 中期望 $end

问题描述

我正在尝试从假设角色中读取凭据AcccessKeyID并将其存储在变量中,但出现错误:我的代码和错误是:

jq -r '".Credentials.AccessKeyId"' mysession.json | awk '"{print "set","AWS_ACCESS_KEY_ID="$0}"' > variables

jq: 错误: 语法错误, 意外的 INVALID_CHARACTER, 期待 $end (Windows cmd shell 引用问题?) at , line 1: '".Credentials.AccessKeyId"' jq: 1 compile error awk: '"{print awk: ^ invalid char ''' 表达式

请建议我如何在windows CMD中实现此活动。我已经在 windows 中安装了 jq 和 awk。

标签: amazon-web-servicesjq

解决方案



aws sts assume-role --role-arn role_arn --role-session-name session_name > mysession.json


$ak = jq -r ".Credentials.AccessKeyId" mysession.json
$sk = jq -r ".Credentials.SecretAccessKey" mysession.json
$tk = jq -r ".Credentials.SessionToken" mysession.json

Write-Host "Acccess Key ID:" $ak
Write-Host "Secret Acccess Key:" $sk
Write-Host "Session Token:" $tk

电源外壳

$source_profile = "default"
$region = "ap-southeast-2"
$role_arn = "arn:aws:iam::account_id:role/role-test"
$target_profile = "test"
$target_profile_path =  "$HOME\.aws\credentials"
$session_name = "test"

# Assume Role
$Response = (Use-STSRole -Region $region -RoleArn  $role_arn -RoleSessionName $session_name -ProfileName $source_profile).Credentials

# Export Crendentail as environment variable
$env:AWS_ACCESS_KEY_ID=$Response.AccessKeyId
$env:AWS_SECRET_ACCESS_KEY=$Response.SecretAccessKey
$env:AWS_SESSION_TOKEN=$Response.SessionToken

# Create Profile with Credentials
Set-AWSCredential -StoreAs $target_profile -ProfileLocation $target_profile_path -AccessKey $Response.AccessKeyId -SecretKey $Response.SecretAccessKey -SessionToken $Response.SessionToken

# Print expiration time
Write-Host("Credentials will expire at: " + $Response.Expiration)

AWS 担任角色脚本

如何在 powershell 中解析假定角色的凭据并将它们设置为脚本中的变量?


推荐阅读