You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Cognito CLI中UserAttributes特殊字符转义问题求助

AWS Cognito更新含大括号的自定义属性字符串问题

我需要修改AWS Cognito中包含{、}字符的自定义属性值,该属性值是JSON格式的字符串(而非实际对象),现有属性格式如下:

"UserAttributes": [
        {
            "Name": "custom:bla-bla",
            "Value": "{\"scope\":{\"test\":\"1111111\"}}"
        }
]

尝试的操作及报错

直接执行更新命令

执行以下AWS CLI命令:

aws cognito-idp update-user-attributes --region [REGION] --access-token [TOKEN] --user-attributes Name="custom:bla-bla",Value="{\"scope\":{\"test\":\"222222\"}}"

出现解析错误:

Error parsing parameter '--user-attributes': Expected: '=', received: '"' for input:
Name=name2,Value={"scope":{"test":"222222"}}
                  ^

尝试转义大括号

修改为转义大括号的形式:

Value="\{\"scope\":\{\"test\":\"222222\"\}\}"

仍报错:

Error parsing parameter '--user-attributes': Expected: ',', received: '"' for input:
Name=name2,Value=\{"scope":{"test":"222222"\}\}
                   ^

按CLI提示格式输入

改用无引号的嵌套格式:

Value="{scope={test=222222}}"

触发类型错误:

Parameter validation failed:
Invalid type for parameter UserAttributes[0].Value, value: {'scope': {'test': '222222'}}, type: <class 'dict'>, valid types: <class 'str'>

解决方案

问题核心是AWS CLI会解析--user-attributes中的逗号分隔键值对,当值包含{}、"等特殊字符时,容易触发解析冲突,以下是几种可行的解决方法:

方法1:Shell单引号包裹属性值

利用Shell单引号的特性(内部内容不被解析),将整个--user-attributes参数用单引号包裹,或者单独包裹属性值:

# 方式A:包裹整个参数
aws cognito-idp update-user-attributes --region [REGION] --access-token [TOKEN] --user-attributes 'Name="custom:bla-bla",Value="{\"scope\":{\"test\":\"222222\"}}"'

# 方式B:仅包裹Value值
aws cognito-idp update-user-attributes --region [REGION] --access-token [TOKEN] --user-attributes Name=custom:bla-bla,Value='{"scope":{"test":"222222"}}'

方法2:使用JSON文件作为输入

创建JSON配置文件(例如user-attrs.json),内容如下:

[
  {
    "Name": "custom:bla-bla",
    "Value": "{\"scope\":{\"test\":\"222222\"}}"
  }
]

通过--cli-input-json参数调用,完全规避命令行解析问题:

aws cognito-idp update-user-attributes --region [REGION] --access-token [TOKEN] --cli-input-json file://user-attrs.json

方法3:传递数组格式的参数

直接以数组结构传递--user-attributes参数,避免逗号分隔的键值对解析逻辑:

aws cognito-idp update-user-attributes --region [REGION] --access-token [TOKEN] --user-attributes '[{"Name": "custom:bla-bla", "Value": "{\"scope\":{\"test\":\"222222\"}}"}]'

内容的提问来源于stack exchange,提问作者lazerru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 00:57:29