Удалить символы после последнего появления символа значения ключа 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(':[^:]+$', '') }}"