Допустим, у меня есть следующие переменные Jinja2:
- 'dev_ami' = 'ami-123456'
- 'dev_located_ami' = 'ami-123456'
- 'prod_ami' = 'ami-654321'
- 'prod_located_ami' = 'ami-654321'
Я хотел бы установить условие, когда переменная 'dev_ami' равна переменной 'dev_located_ami'. Это легко сделать, как показано в следующем утверждении:
{% if dev_ami == dev_located_ami %}
... do some stuff
{% else %}
... do some other stuff
{% endif %}
Но я хотел бы динамически сравнить amis на основе среды развертывания, содержащейся в списке ['dev', 'prod' и т. Д.]. Следующее содержит шаблонную ошибку, поскольку в выражении есть выражение как таковое - {% {{ .. }} %}
:
{% for env_type in ['dev','prod'] %}
{% if {{ env_type }}_ami == {{ env_type }}_located_ami %}
... do stuff
{% else %}
... do other stuff
{% endif %}
{% endfor %}
Я попытался установить переменные для представления выражений, которые я хотел бы видеть в следующем коде, но, к сожалению, они скомпилированы буквально как 'dev_ami' и 'dev_located_ami', тогда как я хотел бы, чтобы они были скомпилированы с соответствующими им значениями переменных 'ami-123456' и 'ami-123456':
{% for env_type in ['dev','prod'] %}
{% set ami = "%s_ami"|format(env_type) %}
{% set located_ami = "%s_located_ami"|format(env_type) %}
{% if ami == located_ami %}
... do stuff
{% else %}
... do other stuff
{% endif %}
{% endfor %}
Я проверил различные фильтры и до сих пор не добился успеха. Буду признателен за совет по правильной работе этой конкретной реализации. Заранее спасибо.