Skip to content

Commit 3e2f1cc

Browse files
committed
Adding Jinja functions to retrieve values from SSM
1 parent 946cb0c commit 3e2f1cc

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

ecs_files_composer/jinja2_filters/__init__.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import requests
1212
import yaml
13+
from boto3.session import Session
1314

1415

1516
def env_override(value, key):
@@ -137,10 +138,42 @@ def env_var(key, value=None):
137138
return environ.get(key, value)
138139

139140

141+
def from_ssm(parameter_name: str) -> str:
142+
"""
143+
Function to retrieve an SSM parameter value
144+
145+
:param parameter_name: Name of the parameter
146+
"""
147+
return (
148+
Session()
149+
.client("ssm")
150+
.get_parameter(Name=parameter_name, WithDecryption=True)["Parameter"]["Value"]
151+
)
152+
153+
154+
def from_ssm_json(parameter_name: str) -> dict:
155+
"""
156+
Function to retrieve an SSM parameter value
157+
158+
:param parameter_name: Name of the parameter
159+
"""
160+
value_str = (
161+
Session()
162+
.client("ssm")
163+
.get_parameter(Name=parameter_name, WithDecryption=True)["Parameter"]["Value"]
164+
)
165+
try:
166+
return json.loads(value_str)
167+
except json.JSONDecodeError:
168+
return {}
169+
170+
140171
JINJA_FUNCTIONS = {
141172
"ecs_container_metadata": ecs_container_metadata,
142173
"ecs_task_metadata": ecs_task_metadata,
143174
"env_var": env_var,
175+
"from_ssm": from_ssm,
176+
"from_ssm_json": from_ssm_json,
144177
}
145178

146179
JINJA_FILTERS = {"to_yaml": to_yaml, "to_json": to_json, "env_override": env_override}

0 commit comments

Comments
 (0)