/// <summary> /// This method is called for every Lambda invocation. This method takes in an S3 event object and can be used /// to respond to S3 notifications. /// </summary> /// <param name="s3Event"></param> /// <param name="context"></param> /// <returns></returns> public async Task <string> FunctionHandler(S3Event s3Event, ILambdaContext context) { context.Logger.LogLine("S3 Event Function Handler"); var s3CurrentEvent = s3Event.Records?[0].S3; if (s3CurrentEvent == null) { return(null); } try { string eventMessage; context.Logger.LogLine("Handler: Trying to GetObjectAsync from Amazon S3 Client"); // Get the S3 object that trigger the event var response = await _amazonS3Client.GetObjectAsync(s3CurrentEvent.Bucket.Name, s3CurrentEvent.Object.Key); // read the response stream and write your business logic what you want to do with event trigerred and data received. using (var stream = response.ResponseStream) { var reader = new StreamReader(stream); var s3Document = reader.ReadToEnd(); reader.Dispose(); var jsonDoc = JsonConvert.DeserializeObject(s3Document); var items = JObject.Parse(jsonDoc.ToString()); eventMessage = ($"Handler: Got Data from Key {s3CurrentEvent.Object.Key} for {items.SelectToken("event").Value<string>()}" + $" with description {items.SelectToken("description").Value<string>()}"); context.Logger.LogLine(eventMessage); } // you can modify the SlackMessage message here, before sending it. await _slackClient.SendMessageAsync(_message, _webHookUri); context.Logger.LogLine($"Handler: Sent notification to channel {_message.Channel}"); return(eventMessage); } catch (Exception e) { context.Logger.LogLine($"Error getting object {s3CurrentEvent.Object.Key} from bucket {s3CurrentEvent.Bucket.Name}. Make sure they exist and your bucket is in the same region as this function."); context.Logger.LogLine(e.Message); context.Logger.LogLine(e.StackTrace); throw; } }
public async Task Log(LogType logType, string message) { await _client.SendMessageAsync(message); }
public async Task AddAsync(T payload, CancellationToken cancellationToken = new CancellationToken()) { await _slackClient.SendMessageAsync(payload); }