def _generate_lambdafunction()

in chalice/package.py [0:0]


    def _generate_lambdafunction(self, resource, template):
        # type: (models.LambdaFunction, Dict[str, Any]) -> None
        func_definition = {
            'function_name': resource.function_name,
            'runtime': resource.runtime,
            'handler': resource.handler,
            'memory_size': resource.memory_size,
            'tags': resource.tags,
            'timeout': resource.timeout,
            'source_code_hash': '${filebase64sha256("%s")}' % (
                resource.deployment_package.filename),
            'filename': resource.deployment_package.filename
        }  # type: Dict[str, Any]

        if resource.security_group_ids and resource.subnet_ids:
            func_definition['vpc_config'] = {
                'subnet_ids': resource.subnet_ids,
                'security_group_ids': resource.security_group_ids
            }
        if resource.reserved_concurrency is not None:
            func_definition['reserved_concurrent_executions'] = (
                resource.reserved_concurrency
            )
        if resource.environment_variables:
            func_definition['environment'] = {
                'variables': resource.environment_variables
            }
        if resource.xray:
            func_definition['tracing_config'] = {
                'mode': 'Active'
            }
        if self._chalice_layer:
            func_definition['layers'] = [
                '${aws_lambda_layer_version.%s.arn}' % self._chalice_layer
            ]
        if resource.layers:
            func_definition.setdefault('layers', []).extend(
                list(resource.layers))

        if isinstance(resource.role, models.ManagedIAMRole):
            func_definition['role'] = '${aws_iam_role.%s.arn}' % (
                resource.role.resource_name)
        else:
            # resource is a PreCreatedIAMRole.
            role = cast(models.PreCreatedIAMRole, resource.role)
            func_definition['role'] = role.role_arn

        if resource.log_group is not None:
            log_group = resource.log_group
            num_days = log_group.retention_in_days
            template['resource'].setdefault('aws_cloudwatch_log_group', {})[
                log_group.resource_name] = {
                    'name': log_group.resource_name,
                    'retention_in_days': num_days,
            }
        template['resource'].setdefault('aws_lambda_function', {})[
            resource.resource_name] = func_definition