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

Ansible解析AWS Lambda标签输出时from_json报错如何解决?

报错根因

你执行的shell命令中,xargs会为每个Lambda ARN单独调用一次aws lambda list-tags,每次调用返回一个独立的JSON对象,多个JSON对象直接拼接的结果不符合标准JSON格式,所以from_json解析时会抛出「Extra data」的错误。


解决方案1:修改shell命令直接输出合并后的合法JSON

在原有命令末尾加jq -s add把多个JSON对象合并成一个,修改后的任务代码如下:

- name: Lambda - Retrieve existing instances
  block:
  - shell: aws --region {{ AWSRegion }} lambda list-functions | jq -r ".Functions[].FunctionArn" | xargs -I {} aws --region {{ AWSRegion }} lambda list-tags --resource {} --query '{"{}":Tags}' | jq -s add
    register: LambdaClustersTagR
    environment:
      AWS_ACCESS_KEY_ID: "{{ aK }}"
      AWS_SECRET_ACCESS_KEY: "{{ SK }}"
  - set_fact:
      LambdaClustersTag: "{{ LambdaClustersTagR.stdout | from_json }}"

jq -s add会把输入的所有独立JSON对象读取为数组,再把数组合并成单个JSON对象,key为Lambda ARN、value为对应标签,直接符合需求结构。


解决方案2:不修改shell命令,用Ansible过滤器拆分解析

如果不想调整shell逻辑,可以把stdout按JSON对象分隔符拆分后逐个解析再合并:

- set_fact:
    LambdaClustersTag: >-
      {{
        LambdaClustersTagR.stdout
        | regex_replace('}\n{', '}---SPLIT---{')
        | split('---SPLIT---')
        | map('from_json')
        | combine
      }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:45:02