@@ -27,16 +27,16 @@ class File(FileDef, object):
27
27
Class to wrap common files actions around
28
28
"""
29
29
30
- def __init__ (self , iam_override = None , ** data : Any ):
30
+ def __init__ (self , ** data : Any ):
31
31
super ().__init__ (** data )
32
32
self .templates_dir = None
33
33
34
- def handler (self , iam_override ):
34
+ def handler (self , iam_override , session_override = None ):
35
35
"""
36
36
Main entrypoint for files to relate
37
37
38
38
:param ecs_files_composer.input.IamOverrideDef iam_override:
39
- :return :
39
+ :param boto3.session.Session session_override :
40
40
"""
41
41
if (
42
42
self .context
@@ -47,7 +47,9 @@ def handler(self, iam_override):
47
47
if self .commands and self .commands .pre :
48
48
warnings .warn ("Commands are not yet implemented" , Warning )
49
49
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
+ )
51
53
self .write_content ()
52
54
if not self .source and self .content :
53
55
self .write_content (decode = True )
@@ -57,76 +59,85 @@ def handler(self, iam_override):
57
59
if self .commands and self .commands .post :
58
60
warnings .warn ("Commands are not yet implemented" , Warning )
59
61
60
- def handle_sources (self , iam_override = None ):
62
+ def handle_sources (self , iam_override = None , session_override = None ):
61
63
"""
62
64
Handles files from external sources
63
65
64
66
:param ecs_files_composer.input.IamOverrideDef iam_override:
65
- :return :
67
+ :param boto3.session.Session session_override :
66
68
"""
67
69
if self .source .url :
68
- self .handle_http_content ()
70
+ self .handle_url_source ()
69
71
elif self .source .ssm :
70
- self .handle_ssm_source (iam_override )
72
+ self .handle_ssm_source (iam_override , session_override )
71
73
elif self .source .s3 :
72
- self .handle_s3_source (iam_override )
74
+ self .handle_s3_source (iam_override , session_override )
73
75
elif self .source .secret :
74
76
LOG .warn (
75
77
"When using ECS, we recommend to use the Secrets in Task Definition"
76
78
)
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 )
84
80
85
- def handle_ssm_source (self , iam_override = None ):
81
+ def handle_ssm_source (self , iam_override = None , session_override = None ):
86
82
"""
87
83
Handles retrieving the content from SSM Parameter
88
84
89
85
:param ecs_files_composer.input.IamOverrideDef iam_override:
86
+ :param boto3.session.Session session_override:
90
87
:return:
91
88
"""
92
89
parameter_name = expandvars (self .source .ssm .parameter_name )
93
90
LOG .debug (f"Retrieving ssm://{ parameter_name } " )
94
91
if self .source .ssm .iam_override :
95
92
fetcher = SsmFetcher (iam_config_object = self .source .ssm .iam_override )
96
- else :
93
+ elif iam_override :
97
94
fetcher = SsmFetcher (iam_config_object = iam_override )
95
+ elif session_override :
96
+ fetcher = SsmFetcher (client_session_override = session_override )
97
+ else :
98
+ fetcher = SsmFetcher ()
98
99
self .content = fetcher .get_content (parameter_name = parameter_name )
99
100
100
- def handle_s3_source (self , iam_override = None ):
101
+ def handle_s3_source (self , iam_override = None , session_override = None ):
101
102
"""
102
103
Handles retrieving the content from S3
103
104
104
105
:param ecs_files_composer.input.IamOverrideDef iam_override:
106
+ :param boto3.session.Session session_override:
105
107
:return:
106
108
"""
107
109
bucket_name = expandvars (self .source .s3 .bucket_name )
108
110
key = expandvars (self .source .s3 .key )
109
111
LOG .debug (f"Retrieving s3://{ bucket_name } /{ key } " )
110
112
if self .source .s3 .iam_override :
111
113
fetcher = S3Fetcher (iam_config_object = self .source .s3 .iam_override )
112
- else :
114
+ elif iam_override :
113
115
fetcher = S3Fetcher (iam_config_object = iam_override )
116
+ elif session_override :
117
+ fetcher = S3Fetcher (client_session_override = session_override )
118
+ else :
119
+ fetcher = S3Fetcher ()
114
120
self .content = fetcher .get_content (s3_bucket = bucket_name , s3_key = key )
115
121
116
- def handle_secret_source (self , iam_override = None ):
122
+ def handle_secret_source (self , iam_override = None , session_override = None ):
117
123
"""
118
124
Handles retrieving secrets from AWS Secrets Manager
119
125
120
126
:param ecs_files_composer.input.IamOverrideDef iam_override:
127
+ :param boto3.session.Session session_override:
121
128
:return:
122
129
"""
123
130
if self .source .secret .iam_override :
124
131
fetcher = SecretFetcher (iam_config_object = self .source .secret .iam_override )
125
- else :
132
+ elif iam_override :
126
133
fetcher = SecretFetcher (iam_config_object = iam_override )
134
+ elif session_override :
135
+ fetcher = SecretFetcher (client_session_override = session_override )
136
+ else :
137
+ fetcher = SecretFetcher ()
127
138
self .content = fetcher .get_content (self .source .secret )
128
139
129
- def handle_http_content (self ):
140
+ def handle_url_source (self ):
130
141
"""
131
142
Fetches the content from a provided URI
132
143
0 commit comments