如何通过AWS CLI从Cognito用户池匹配托管URL获取客户端ID?
解决AWS CLI从Cognito用户池匹配托管URL获取客户端ID的问题
核心问题分析
你当前的命令问题在于JMESPath查询中字符串的引号处理:shell变量$hostedurl需要被包裹为JMESPath能识别的字符串格式,同时要保证shell正确解析变量。
正确命令示例
方式1:使用变量匹配(包含指定URL)
如果需要匹配CallbackURLs数组中包含指定URL的客户端,执行以下命令:
hostedurl="https://localhost.com" aws cognito-idp list-user-pool-clients --user-pool-id us_east_1dg****** --query "UserPoolClients[?contains(CallbackURLs, '${hostedurl}')].ClientId" --output text
方式2:使用变量精确匹配URL
如果需要严格匹配CallbackURLs数组中完全等于指定URL的客户端,替换为==判断:
hostedurl="https://localhost.com" aws cognito-idp list-user-pool-clients --user-pool-id us_east_1dg****** --query "UserPoolClients[?CallbackURLs == '${hostedurl}'].ClientId" --output text
关键说明
- 引号处理:必须用单引号
'包裹变量${hostedurl},让JMESPath将其识别为字符串,避免语法错误。 - 过滤字段:添加
.ClientId可以直接提取客户端ID,无需返回整个客户端对象。 - 输出格式:
--output text会返回纯文本格式的ID,方便后续脚本调用;如果需要JSON格式,可去掉该参数或改为--output json。
内容的提问来源于stack exchange,提问作者sirishrayaprolu
相关产品推荐
相关产品推荐

