Skip to content

Commit 8d6711f

Browse files
committed
Allow to pass a raw boto3 session to handler
1 parent b02da0f commit 8d6711f

File tree

1 file changed

+34
-23
lines changed

1 file changed

+34
-23
lines changed

ecs_files_composer/files_mgmt.py

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,16 @@ class File(FileDef, object):
2727
Class to wrap common files actions around
2828
"""
2929

30-
def __init__(self, iam_override=None, **data: Any):
30+
def __init__(self, **data: Any):
3131
super().__init__(**data)
3232
self.templates_dir = None
3333

34-
def handler(self, iam_override):
34+
def handler(self, iam_override, session_override=None):
3535
"""
3636
Main entrypoint for files to relate
3737
3838
:param ecs_files_composer.input.IamOverrideDef iam_override:
39-
:return:
39+
:param boto3.session.Session session_override:
4040
"""
4141
if (
4242
self.context
@@ -47,7 +47,9 @@ def handler(self, iam_override):
4747
if self.commands and self.commands.pre:
4848
warnings.warn("Commands are not yet implemented", Warning)
4949
if self.source and not self.content:
50-
self.handle_sources(iam_override=iam_override)
50+
self.handle_sources(
51+
iam_override=iam_override, session_override=session_override
52+
)
5153
self.write_content()
5254
if not self.source and self.content:
5355
self.write_content(decode=True)
@@ -57,76 +59,85 @@ def handler(self, iam_override):
5759
if self.commands and self.commands.post:
5860
warnings.warn("Commands are not yet implemented", Warning)
5961

60-
def handle_sources(self, iam_override=None):
62+
def handle_sources(self, iam_override=None, session_override=None):
6163
"""
6264
Handles files from external sources
6365
6466
:param ecs_files_composer.input.IamOverrideDef iam_override:
65-
:return:
67+
:param boto3.session.Session session_override:
6668
"""
6769
if self.source.url:
68-
self.handle_http_content()
70+
self.handle_url_source()
6971
elif self.source.ssm:
70-
self.handle_ssm_source(iam_override)
72+
self.handle_ssm_source(iam_override, session_override)
7173
elif self.source.s3:
72-
self.handle_s3_source(iam_override)
74+
self.handle_s3_source(iam_override, session_override)
7375
elif self.source.secret:
7476
LOG.warn(
7577
"When using ECS, we recommend to use the Secrets in Task Definition"
7678
)
77-
self.handle_secret_source(iam_override)
78-
79-
def handle_url_source(self):
80-
"""
81-
Handles retrieving files from URLs
82-
:return:
83-
"""
79+
self.handle_secret_source(iam_override, session_override)
8480

85-
def handle_ssm_source(self, iam_override=None):
81+
def handle_ssm_source(self, iam_override=None, session_override=None):
8682
"""
8783
Handles retrieving the content from SSM Parameter
8884
8985
:param ecs_files_composer.input.IamOverrideDef iam_override:
86+
:param boto3.session.Session session_override:
9087
:return:
9188
"""
9289
parameter_name = expandvars(self.source.ssm.parameter_name)
9390
LOG.debug(f"Retrieving ssm://{parameter_name}")
9491
if self.source.ssm.iam_override:
9592
fetcher = SsmFetcher(iam_config_object=self.source.ssm.iam_override)
96-
else:
93+
elif iam_override:
9794
fetcher = SsmFetcher(iam_config_object=iam_override)
95+
elif session_override:
96+
fetcher = SsmFetcher(client_session_override=session_override)
97+
else:
98+
fetcher = SsmFetcher()
9899
self.content = fetcher.get_content(parameter_name=parameter_name)
99100

100-
def handle_s3_source(self, iam_override=None):
101+
def handle_s3_source(self, iam_override=None, session_override=None):
101102
"""
102103
Handles retrieving the content from S3
103104
104105
:param ecs_files_composer.input.IamOverrideDef iam_override:
106+
:param boto3.session.Session session_override:
105107
:return:
106108
"""
107109
bucket_name = expandvars(self.source.s3.bucket_name)
108110
key = expandvars(self.source.s3.key)
109111
LOG.debug(f"Retrieving s3://{bucket_name}/{key}")
110112
if self.source.s3.iam_override:
111113
fetcher = S3Fetcher(iam_config_object=self.source.s3.iam_override)
112-
else:
114+
elif iam_override:
113115
fetcher = S3Fetcher(iam_config_object=iam_override)
116+
elif session_override:
117+
fetcher = S3Fetcher(client_session_override=session_override)
118+
else:
119+
fetcher = S3Fetcher()
114120
self.content = fetcher.get_content(s3_bucket=bucket_name, s3_key=key)
115121

116-
def handle_secret_source(self, iam_override=None):
122+
def handle_secret_source(self, iam_override=None, session_override=None):
117123
"""
118124
Handles retrieving secrets from AWS Secrets Manager
119125
120126
:param ecs_files_composer.input.IamOverrideDef iam_override:
127+
:param boto3.session.Session session_override:
121128
:return:
122129
"""
123130
if self.source.secret.iam_override:
124131
fetcher = SecretFetcher(iam_config_object=self.source.secret.iam_override)
125-
else:
132+
elif iam_override:
126133
fetcher = SecretFetcher(iam_config_object=iam_override)
134+
elif session_override:
135+
fetcher = SecretFetcher(client_session_override=session_override)
136+
else:
137+
fetcher = SecretFetcher()
127138
self.content = fetcher.get_content(self.source.secret)
128139

129-
def handle_http_content(self):
140+
def handle_url_source(self):
130141
"""
131142
Fetches the content from a provided URI
132143

0 commit comments

Comments
 (0)