예제 #1
0
        public IEventSink CreateInstance(string sinkType, IPlugInContext context)
        {
            IConfiguration config = context.Configuration;
            ILogger        logger = context.Logger;

            switch (sinkType.ToLower())
            {
            case CLOUD_WATCH_LOG:
                return(new CloudWatchLogsSink(context, AWSUtilities.CreateAWSClient <AmazonCloudWatchLogsClient>(context)));

            case KINESIS_FIREHOSE:
                return(new KinesisFirehoseSink(context, AWSUtilities.CreateAWSClient <AmazonKinesisFirehoseClient>(context)));

            case KINESIS_STREAM:
                return(new KinesisStreamSink(context, AWSUtilities.CreateAWSClient <AmazonKinesisClient>(context)));

            case CLOUD_WATCH:
                return(new CloudWatchSink(60, context, AWSUtilities.CreateAWSClient <AmazonCloudWatchClient>(context)));

            case TELEMETRICS:
#if DEBUG
                const int TELEMETRICS_DEFAULT_INTERVAL = 60;
#else
                const int TELEMETRICS_DEFAULT_INTERVAL = 3600;
#endif
                return(new TelemetricsSink(TELEMETRICS_DEFAULT_INTERVAL, context,
                                           TelemetricsClient.Default));

            default:
                throw new NotImplementedException($"Sink type {sinkType} is not implemented by AWSEventSinkFactory.");
            }
        }
        private static string ConfigVariableEvaluator(string variable)
        {
            var evaluated = Utility.ResolveVariable(variable);

            if (string.IsNullOrEmpty(evaluated))
            {
                return(evaluated);
            }
            return(AWSUtilities.EvaluateAWSVariable(evaluated));
        }
예제 #3
0
        public IEventSink CreateInstance(string sinkType, IPlugInContext context)
        {
            IConfiguration config = context.Configuration;
            ILogger        logger = context.Logger;

            switch (sinkType.ToLower())
            {
            case CLOUD_WATCH_LOG:
            case CLOUD_WATCH_LOG_EMF:
                return(new CloudWatchLogsSink(context, AWSUtilities.CreateAWSClient <AmazonCloudWatchLogsClient>(context)));

            case KINESIS_FIREHOSE:
                var    firehoseSink   = new KinesisFirehoseSink(context, AWSUtilities.CreateAWSClient <AmazonKinesisFirehoseClient>(context));
                string combineRecords = config["CombineRecords"];
                if (!string.IsNullOrWhiteSpace(combineRecords) && bool.TryParse(combineRecords, out bool canCombineRecords))
                {
                    firehoseSink.CanCombineRecords = canCombineRecords;
                }
                return(firehoseSink);

            case KINESIS_STREAM:
                return(new KinesisStreamSink(context, AWSUtilities.CreateAWSClient <AmazonKinesisClient>(context)));

            case CLOUD_WATCH:
                return(new CloudWatchSink(60, context, AWSUtilities.CreateAWSClient <AmazonCloudWatchClient>(context)));

            case TELEMETRICS:
#if DEBUG
                const int TELEMETRICS_DEFAULT_INTERVAL = 60;
#else
                const int TELEMETRICS_DEFAULT_INTERVAL = 3600;
#endif
                //If RedirectToSinkId is specified, we use TelemetryConnector. Otherwise, TelemtryClient
                string redirectToSinkId = config[ConfigConstants.REDIRECT_TO_SINK_ID];
                ITelemetricsClient <HttpResponseMessage> telemetricsClient = null;
                if (string.IsNullOrWhiteSpace(redirectToSinkId))
                {
                    telemetricsClient = TelemetricsClient.Default;
                }
                else
                {
                    telemetricsClient = new TelemetricsSinkConnector(context);
                    context.ContextData[ConfigConstants.TELEMETRY_CONNECTOR] = telemetricsClient;     //Make telemetricsClient available to caller
                }
                return(new TelemetricsSink(TELEMETRICS_DEFAULT_INTERVAL, context, telemetricsClient));

            case FILE_SYSTEM:
                return(new FileSystemEventSink(context));

            default:
                throw new NotImplementedException($"Sink type {sinkType} is not implemented by AWSEventSinkFactory.");
            }
        }
예제 #4
0
        protected override string EvaluateVariable(string value)
        {
            string evaluated = base.EvaluateVariable(value);

            try
            {
                return(AWSUtilities.EvaluateAWSVariable(evaluated));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.ToMinimized());
                throw;
            }
        }
예제 #5
0
        protected virtual string EvaluateVariable(string value)
        {
            var evaluated = Utility.ResolveVariable(value);

            if (string.IsNullOrEmpty(evaluated))
            {
                return(evaluated);
            }
            try
            {
                return(AWSUtilities.EvaluateAWSVariable(evaluated));
            }
            catch (Exception ex)
            {
                _logger?.LogError(ex.ToMinimized());
                throw;
            }
        }
        protected override string EvaluateVariable(string value)
        {
            string evaluated = base.EvaluateVariable(value);

            if (string.IsNullOrEmpty(evaluated))
            {
                return(evaluated);
            }
            try
            {
                return(AWSUtilities.EvaluateAWSVariable(evaluated));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
                throw;
            }
        }