def create()

in aws_sra_examples/solutions/cloudtrail/cloudtrail_org/lambda/src/app.py [0:0]


def create(event, context) -> str:
    """
    CloudFormation Create Event. Creates a CloudTrail with the provided parameters
    :param event: event data
    :param context: runtime information
    :return: OrganizationTrailResourceId
    """
    logger.info("Create Event")
    try:
        check_parameters(event)
        params = event.get("ResourceProperties")
        enable_aws_service_access(AWS_SERVICE_PRINCIPAL)
        cloudtrail_name = params.get("CLOUDTRAIL_NAME")

        CLOUDTRAIL_CLIENT.create_trail(
            **get_cloudtrail_parameters(
                True,
                cloudtrail_name=cloudtrail_name,
                cloudwatch_log_group_arn=params.get("CLOUDWATCH_LOG_GROUP_ARN"),
                cloudwatch_log_group_role_arn=params.get("CLOUDWATCH_LOG_GROUP_ROLE_ARN"),
                kms_key_id=params.get("KMS_KEY_ID"),
                s3_bucket_name=params.get("S3_BUCKET_NAME"),
                s3_key_prefix=params.get("S3_KEY_PREFIX"),
                tag_key1=params.get("TAG_KEY1"),
                tag_value1=params.get("TAG_VALUE1"),
            )
        )
        logger.info("Created an Organization CloudTrail")

        event_selectors = get_data_event_config(
            aws_partition=params.get("AWS_PARTITION", "aws"),
            enable_s3_data_events=(params.get("ENABLE_S3_DATA_EVENTS", "false")).lower() in "true",
            enable_lambda_data_events=(params.get("ENABLE_LAMBDA_DATA_EVENTS", "false")).lower() in "true",
            enable_data_events_only=(params.get("ENABLE_DATA_EVENTS_ONLY", "false")).lower() in "true",
        )

        if event_selectors and event_selectors["DataResources"]:

            CLOUDTRAIL_CLIENT.put_event_selectors(TrailName=cloudtrail_name, EventSelectors=[event_selectors])

            logger.info("Data Events Enabled")

        CLOUDTRAIL_CLIENT.start_logging(Name=cloudtrail_name)
    except ClientError as ce:
        logger.error(f"Unexpected error: {str(ce)}")
        raise ValueError(f"CloudTrail API Exception: {str(ce)}")
    except Exception as exc:
        logger.error(f"Unexpected error: {str(exc)}")
        raise ValueError(f"Exception: {str(exc)}")

    return "OrganizationTrailResourceId"