@PluginFactory
    public static CloudWatchAppender createAppender(@PluginAttribute("name") final String name,
                                                    @PluginAttribute("endpoint") final String endpoint,
                                                    @PluginAttribute("awsLogStreamName") final String awsLogStreamName,
                                                    @PluginAttribute("awsLogGroupName") final String awsLogGroupName,
                                                    @PluginAttribute("awsLogStreamFlushPeriodInSeconds") final String awsLogStreamFlushPeriodInSeconds,
                                                    @PluginAttribute("credentialAccessKey") final String credentialAccessKey,
                                                    @PluginAttribute("credentialSecretKey") final String credentialSecretKey,
                                                    @PluginAttribute("awsLogRegionName") final String awsLogRegionName,
                                                    @PluginElement("Layout") final Layout<Serializable> layout,
                                                    @PluginAttribute("createIfNeeded") final String createIfNeeded,
                                                    @PluginAttribute("createLogGroupIfNeeded") final String createLogGroupIfNeeded,
                                                    @PluginAttribute("createLogStreamIfNeeded") final String createLogStreamIfNeeded) {
        return new CloudWatchAppender(
            name,
            endpoint,
            awsLogGroupName,
            awsLogStreamName,
            awsLogStreamFlushPeriodInSeconds,
            StringUtils.defaultIfBlank(credentialAccessKey, System.getProperty("AWS_ACCESS_KEY")),
            StringUtils.defaultIfBlank(credentialSecretKey, System.getProperty("AWS_SECRET_KEY")),
            StringUtils.defaultIfBlank(awsLogRegionName, System.getProperty("AWS_REGION_NAME")),
            layout,
            StringUtils.isBlank(createIfNeeded) ? null : BooleanUtils.toBoolean(createIfNeeded),
            StringUtils.isBlank(createLogGroupIfNeeded) ? null : BooleanUtils.toBoolean(createLogGroupIfNeeded),
            StringUtils.isBlank(createLogStreamIfNeeded) ? null : BooleanUtils.toBoolean(createLogStreamIfNeeded));
    }
Create appender cloud watch appender.

@param name                             the name
@param endpoint                         the endpoint
@param awsLogStreamName                 the aws log stream name
@param awsLogGroupName                  the aws log group name
@param awsLogStreamFlushPeriodInSeconds the aws log stream flush period in seconds
@param credentialAccessKey              the credential access key
@param credentialSecretKey              the credential secret key
@param awsLogRegionName                 the aws log region name
@param layout                           the layout
@param createIfNeeded                   whether to create resources if needed
@param createLogGroupIfNeeded           whether to create log group if needed
@param createLogStreamIfNeeded          whether to create log stream if needed
@return the cloud watch appender
support/cas-server-support-aws-cloudwatch/src/main/java/org/apereo/cas/logging/CloudWatchAppender.java