aws-cli调用bash定义的queue_url变量报InvalidAddress错误如何解决
问题根因
AWS CLI默认返回JSON格式,通过--query提取的字符串结果会自带包裹的双引号,存入$queue_url变量后会被一并传入后续命令,导致SQS识别URL时格式非法报错。
解决方法
- 方法1:在获取队列URL的aws命令后追加
--output text参数,直接返回无包裹引号的纯文本内容,修改赋值行即可:
queue_url=$(aws sqs list-queues --query QueueUrls[0] --output text)
- 方法2:如果需要保留原有输出格式,可通过bash参数扩展手动移除变量中的双引号:
# 原有赋值逻辑不变,新增一行去除引号 queue_url=$(aws sqs list-queues --query QueueUrls[0]) queue_url=${queue_url//\"/}
完整修正脚本
调用aws命令时变量建议用双引号包裹,避免URL含特殊字符时出现解析异常,修正后的完整可运行脚本如下:
aws sqs create-queue --queue-name MessagesQueue queue_url=$(aws sqs list-queues --query QueueUrls[0] --output text) queue_check=$(aws sqs get_queue_attributes --queue_url "$queue_url" --attribute-names ApproximateNumberOfMessages --query Attributes[0].ApproximateNumberOfMessages)
内容的提问来源于stack exchange,提问作者Doraemon
相关产品推荐
相关产品推荐

