Удалить символы после последнего появления символа значения ключа JSON - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь автоматизировать развертывание и вызывать лямбда-функцию с помощью ansible playbook. Чтобы получить арн лямбда-функции, я написал json-запрос.Но здесь мне нужен только arn (arn: aws: lambda: us-west-2: 1234567890: function: dev-Hello-World), но скрипт Ansible генерирует arn с номером версии (arn: aws: lambda: us-west-2: 1234567890: функция: DEV-Hello-World: 50).Я использовал set_fact и json query, чтобы получить arn.Но я хочу удалить номер версии и двоеточие в конце.

Я пытался использовать регулярные выражения и заменить, чтобы удалить строки.Я новичок в JSON и программировании.

- name: Get the Hello-world arn
  set_fact:
    populate_arn: "{{ Hello-World | json_query('results[0].configuration.function_arn')}}"

- debug:
    var: populate_arn

Ожидаемый результат: arn: aws: lambda: us-west-2: 1234567890: function: dev-Hello-World

Фактический результат:ARN: AWS: лямбда: мы-запад 2: 1234567890: функция: DEV-Hello-World: 50

1 Ответ

0 голосов
/ 04 января 2019

Прежде всего, как видно из документации по Lambda API , ARN является правильным, стабильным идентификатором для функции.Если вы удалите квалификатор :50, вы получите то, что является :$LATEST, которое может дать абсолютно ошибочные результаты

При этом вывод из json_query - это просто строка, поэтому вы можете продолжить свой jinja2конвейер с (как вы упомянули) regex_replace для удаления классификатора:

- set_fact:
    populate_arn: "{{ Hello-World | json_query('results[0].configuration.function_arn') | regex_replace(':[^:]+$', '') }}"
...