执行localstack status services命令时遭遇JSON解码错误求助
LocalStack
status services 命令报错,但其他功能正常 LocalStack启动无异常,大部分awslocal命令都能正常使用,但执行localstack status services时触发JSON解码错误,具体报错如下:
$ localstack status services Traceback (most recent call last): File "/usr/local/Cellar/localstack/1.3.1/libexec/lib/python3.11/site-packages/requests/models.py", line 971, in json return complexjson.loads(self.text, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/Cellar/python@3.11/3.11.1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/json/__init__.py", line 346, in loads return _default_decoder.decode(s) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/Cellar/python@3.11/3.11.1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/json/decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/Cellar/python@3.11/3.11.1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/json/decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/bin/localstack", line 23, in <module> main() File "/usr/local/bin/localstack", line 19, in main main.main() File "/usr/local/Cellar/localstack/1.3.1/libexec/lib/python3.11/site-packages/localstack/cli/main.py", line 11, in main cli() File "/usr/local/Cellar/localstack/1.3.1/libexec/lib/python3.11/site-packages/localstack/cli/plugin.py", line 15, in __call__ self.group(*args, **kwargs) File "/usr/local/Cellar/localstack/1.3.1/libexec/lib/python3.11/site-packages/click/core.py", line 1130, in __call__ return self.main(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/Cellar/localstack/1.3.1/libexec/lib/python3.11/site-packages/click/core.py", line 1055, in main rv = self.invoke(ctx) ^^^^^^^^^^^^^^^^ File "/usr/local/Cellar/localstack/1.3.1/libexec/lib/python3.11/site-packages/click/core.py", line 1657, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/Cellar/localstack/1.3.1/libexec/lib/python3.11/site-packages/click/core.py", line 1657, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/Cellar/localstack/1.3.1/libexec/lib/python3.11/site-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/Cellar/localstack/1.3.1/libexec/lib/python3.11/site-packages/click/core.py", line 760, in invoke return __callback(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/Cellar/localstack/1.3.1/libexec/lib/python3.11/site-packages/localstack/cli/localstack.py", line 94, in cmd_status_services doc = health.json() ^^^^^^^^^^^^^ File "/usr/local/Cellar/localstack/1.3.1/libexec/lib/python3.11/site-packages/requests/models.py", line 975, in json raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
补充测试:直接调用健康检查接口能正常返回所有服务状态:
$ curl localhost:4566/health {"services": {"apigateway": "running", "cloudformation": "running", "cloudwatch": "running", "dynamodb": "running", "dynamodbstreams": "running", "ec2": "running", "es": "running", "firehose": "running", "iam": "running", "sts": "running", "kinesis": "running", "kms": "running", "lambda": "running", "logs": "running", "redshift": "running", "route53": "running", "s3": "running", "secretsmanager": "running", "ses": "running", "sns": "running", "sqs": "running", "ssm": "running", "events": "running", "stepfunctions": "running", "swf": "running", "resourcegroupstaggingapi": "running", "resource-groups": "running", "support": "running", "acm": "running"}, "features": {"persistence": "disabled", "initScripts": "initialized"}}
解决建议
- 核对CLI与服务端版本:当前使用的LocalStack CLI是1.3.1,确认后台运行的LocalStack服务也是同版本。版本不匹配会导致API交互格式不一致,引发解码错误。
- 指定端点执行命令:手动指定健康检查接口地址,执行
localstack --endpoint-url=http://localhost:4566 status services,避免CLI默认端点配置出错。 - 重启服务清理缓存:执行
localstack stop停止服务后重新启动,同时检查4566端口是否被其他进程占用。 - 升级到最新版本:LocalStack 1.3.1属于较旧版本,和Python 3.11可能存在兼容问题,升级到最新稳定版大概率能解决这类解析bug。
内容的提问来源于stack exchange,提问作者Nicholas Lester
相关产品推荐
相关产品推荐

