Удалить символы после последнего появления символа значения ключа JSON

Я пытаюсь автоматизировать развертывание и вызвать лямбда-функцию, используя 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:lambda:us-west-2:1234567890:function:dev-Hello-World:50

1 ответ

Прежде всего, как видно из документации по 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(':[^:]+$', '') }}"
Другие вопросы по тегам