Skip to content

Commit 6be841b

Browse files
authored
safe parameter detection in lambda (aws-solutions-library-samples#1312)
1 parent 20115a8 commit 6be841b

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

cid/common.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -433,12 +433,21 @@ def get_template_parameters(self, parameters: dict, param_prefix: str='', others
433433
except (self.athena.client.exceptions.ClientError, CidError, CidCritical) as exc:
434434
raise CidCritical(f'Failed fetching parameter {prefix}{key}: {exc}.') from exc
435435
if not res_list:
436-
raise CidCritical(f'Failed fetching parameter {prefix}{key}, {value}. Athena returns empty results. {value.get("error")}')
437-
elif len(res_list) == 1:
438-
params[key] = '-'.join(res_list[0])
436+
raise CidCritical(f'Failed fetching parameter {prefix}{key}, {value}. Athena returns empty results. {value.get("error", "")}')
437+
options = ['-'.join(res) for res in res_list]
438+
default = value.get('default', '{default not provided}')
439+
if len(options) == 1:
440+
# silently taking the 1st available option
441+
params[key] = options[0]
442+
elif not utils.isatty():
443+
if default in options:
444+
# silently taking the default option if we cannot ask user
445+
params[key] = default
446+
else:
447+
# silently taking the first option
448+
params[key] = sorted(options)[0]
439449
else:
440-
options = ['-'.join(res) for res in res_list]
441-
default = value.get('default')
450+
# asking user
442451
params[key] = get_parameter(
443452
param_name=prefix + key,
444453
message=f"Required parameter: {key} ({value.get('description')})",

0 commit comments

Comments
 (0)