in syndicate/core/transform/terraform/converter/tf_lambda_converter.py [0:0]
def convert(self, name, resource):
validate_params(name, resource, REQUIRED_PARAMS)
function_name = resource.get('func_name')
runtime = resource.get('runtime')
memory = resource.get('memory')
timeout = resource.get('timeout')
env_variables = resource.get('env_variables')
publish_version = resource.get('publish_version', False)
subnet_ids = resource.get('subnet_ids', [])
security_group_ids = resource.get('security_group_ids', [])
s3_path = resource.get('s3_path')
s3_bucket = self.config.deploy_target_bucket
iam_role_name = resource.get('iam_role_name')
iam_conn = self.resources_provider.iam().iam_conn
role_arn = iam_conn.check_if_role_exists(iam_role_name)
if not role_arn:
iam_role = self.template.get_resource_by_name(iam_role_name)
if not iam_role:
raise AssertionError(f'Role {iam_role_name} does not exist; '
f'Lambda {name} failed to be configured.')
role_arn = build_role_arn_ref(iam_role_name)
lambda_layers_arns = []
layer_meta = resource.get('layers')
if layer_meta:
for layer_name in layer_meta:
layer = self.template.get_resource_by_name(
lambda_layer_name(layer_name=layer_name))
if not layer:
raise AssertionError(
f"Lambda layer '{layer_name}' is not present "
"in build meta.")
layer_ref = build_ref_to_lambda_layer_arn(
layer_name=layer_name)
lambda_layers_arns.append(layer_ref)
retention = resource.get('logs_expiration')
if retention:
log_group = cloud_watch_log_group(lambda_name=function_name,
retention=retention)
self.template.add_cloud_watch_log_group(meta=log_group)
reserved_concur = resource.get(LAMBDA_MAX_CONCURRENCY)
lambda_service = self.resources_provider.lambda_resource()
if not lambda_service.check_concurrency_availability(reserved_concur):
reserved_concur = None
aws_lambda = template_for_lambda(lambda_name=name,
function_name=name,
runtime=runtime,
role_arn=role_arn,
handler=function_name,
memory=memory,
timeout=timeout,
env_variables=env_variables,
publish=publish_version,
subnet_ids=subnet_ids,
security_group_ids=security_group_ids,
reserved_concurrent_executions=reserved_concur,
s3_bucket=s3_bucket,
s3_key=s3_path)
self.template.add_aws_lambda(meta=aws_lambda)
self.configure_concurrency(resource=resource,
function_name=name)
self.process_event_sources(lambda_name=name, resource=resource,
role=iam_role_name)