public ApplicationLoadBalancerResponse FunctionHandler(JObject input) { string responseString = @"<html> <head> <title>Hi there</title> </head> <body> <h1>Hi there</h1> <p>Welcome to this basic page, powered by Lambda</p> <p><img src='/assets/200.jpg' /></p> </body> </html>"; Dictionary <string, string> Headers = new Dictionary <string, string>(); Headers.Add("Content-Type", "text/html;"); ApplicationLoadBalancerResponse response = new ApplicationLoadBalancerResponse() { IsBase64Encoded = false, StatusCode = 200, StatusDescription = "200 OK", Headers = Headers, Body = responseString }; return(response); }
public ApplicationLoadBalancerResponse FunctionHandler(JObject input) { LambdaLogger.Log(input.ToString()); try { char[] toTrim = new[] { '/' }; GetObjectRequest request = new GetObjectRequest() { BucketName = Environment.GetEnvironmentVariable("assetbucket"), Key = input.SelectToken("path").ToString().TrimStart(toTrim) }; GetObjectResponse response = client.GetObjectAsync(request).Result; byte[] data; using (StreamReader sr = new StreamReader(response.ResponseStream)) { using (MemoryStream ms = new MemoryStream()) { sr.BaseStream.CopyTo(ms); data = ms.ToArray(); string responseBody = Convert.ToBase64String(data); Dictionary <string, string> headers = new Dictionary <string, string>(); headers.Add("Content-Type", response.Headers["Content-Type"]); ApplicationLoadBalancerResponse albResponse = new ApplicationLoadBalancerResponse() { IsBase64Encoded = true, StatusCode = 200, StatusDescription = "200 OK", Headers = headers, Body = responseBody }; return(albResponse); } } } catch (Exception ex) { LambdaLogger.Log(ex.Message); return(null); } }
public ApplicationLoadBalancerResponse FunctionHandler(JObject input) { JObject responseObj = new JObject(); responseObj.Add("data", "hello 123"); Dictionary <string, string> headers = new Dictionary <string, string>(); headers.Add("Content-Type", "application/json"); ApplicationLoadBalancerResponse response = new ApplicationLoadBalancerResponse() { IsBase64Encoded = false, StatusCode = 200, StatusDescription = "200 OK", Headers = headers, Body = JsonConvert.SerializeObject(responseObj) }; return(response); }
public static ApplicationLoadBalancerResponse FunctionHandler(ApplicationLoadBalancerRequest request, ILambdaContext context) { System.Console.WriteLine(request.Body.ToString() ?? "Empty Request"); string body = FakeResponseMaker.BuildFakeResponse(); var responseBody = body; Dictionary <string, string> Headers = new Dictionary <string, string>(); Headers.Add("Content-Type", "text/html;"); ApplicationLoadBalancerResponse response = new ApplicationLoadBalancerResponse() { IsBase64Encoded = false, StatusCode = 200, StatusDescription = "200 OK", Headers = Headers, Body = responseBody }; return(response); }
/// <summary> /// Lambda function handler to respond to events coming from an Application Load Balancer. /// /// Note: If "Multi value headers" is disabled on the ELB Target Group then use the Headers and QueryStringParameters properties /// on the ApplicationLoadBalancerRequest and ApplicationLoadBalancerResponse objects. If "Multi value headers" is enabled then /// use MultiValueHeaders and MultiValueQueryStringParameters properties. /// </summary> /// <param name="request"></param> /// <param name="context"></param> /// <returns></returns> public ApplicationLoadBalancerResponse FunctionHandler(ApplicationLoadBalancerRequest request, ILambdaContext context) { var response = new ApplicationLoadBalancerResponse { StatusCode = 200, StatusDescription = "200 OK", IsBase64Encoded = false }; // If "Multi value headers" is enabled for the ELB Target Group then use the "response.MultiValueHeaders" property instead of "response.Headers". response.Headers = new Dictionary <string, string> { { "Content-Type", "text/html; charset=utf-8" } }; response.Body = @" <html> <head> <title>Hello World!</title> <style> html, body { margin: 0; padding: 0; font-family: arial; font-weight: 700; font-size: 3em; text-align: center; } </style> </head> <body> <p>Hello World from Lambda</p> </body> </html> "; return(response); }
public void Setup() { // APIGatewayProxy _baseAPIGatewayProxyRequest = new APIGatewayProxyRequest { HttpMethod = "POST", Path = "/test/path", }; _baseAPIGatewayProxyResponse = new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.OK, }; // ApplicationLoadBalancer var albRequestContext = new ApplicationLoadBalancerRequest.ALBRequestContext { Elb = new ApplicationLoadBalancerRequest.ElbInfo() }; albRequestContext.Elb.TargetGroupArn = TestArn; _baseApplicationLoadBalancerRequest = new ApplicationLoadBalancerRequest { HttpMethod = "POST", Path = "/test/path", RequestContext = albRequestContext, }; _baseApplicationLoadBalancerResponse = new ApplicationLoadBalancerResponse { StatusCode = (int)HttpStatusCode.OK, }; // SQSEvent var sqsRecord = new SQSEvent.SQSMessage { EventSourceArn = TestArn }; _baseSQSEvent = new SQSEvent { Records = new List <SQSEvent.SQSMessage> { sqsRecord }, }; // SNSEvent var snsMessaage = new SNSEvent.SNSMessage() { Message = "Test Message", }; var snsRecord = new SNSEvent.SNSRecord { EventSubscriptionArn = TestArn, Sns = snsMessaage }; _baseSNSEvent = new SNSEvent { Records = new List <SNSEvent.SNSRecord> { snsRecord }, }; // KinesisEvent var kinesisRecord = new KinesisEvent.KinesisEventRecord { EventSourceARN = TestArn }; _baseKinesisEvent = new KinesisEvent { Records = new List <KinesisEvent.KinesisEventRecord> { kinesisRecord }, }; // S3Event var s3Record = new Amazon.S3.Util.S3EventNotification.S3EventNotificationRecord { S3 = new Amazon.S3.Util.S3EventNotification.S3Entity { Bucket = new Amazon.S3.Util.S3EventNotification.S3BucketEntity { Arn = TestArn } } }; _baseS3Event = new S3Event { Records = new List <Amazon.S3.Util.S3EventNotification.S3EventNotificationRecord> { s3Record }, }; // DynamoDBEvent var dynamoDBRecord = new DynamoDBEvent.DynamodbStreamRecord { EventSourceArn = TestArn }; _baseDynamoDBEvent = new DynamoDBEvent { Records = new List <DynamoDBEvent.DynamodbStreamRecord> { dynamoDBRecord }, }; // KinesisFirehoseEvent _baseKinesisFirehoseEvent = new KinesisFirehoseEvent { DeliveryStreamArn = TestArn, }; }
public ApplicationLoadBalancerResponse FunctionHandler(Stream input) { ApplicationLoadBalancerResponse response = null; var request = new StreamReader(input).ReadToEnd(); var dict = JsonSerializer.Deserialize <Dictionary <string, object> >(request); var requestHeaders = JsonSerializer.Deserialize <Dictionary <string, string> >(dict["headers"].ToString()); var authorization = ""; int contentLength = request.Length; System.Console.WriteLine(request); if (dict["httpMethod"].ToString() == "OPTIONS") { Dictionary <string, string> corsHeaders = new Dictionary <string, string>(); corsHeaders.Add("Content-Type", "application/json"); corsHeaders.Add("Access-Control-Allow-Origin", "*"); corsHeaders.Add("Access-Control-Allow-Headers", "*"); corsHeaders.Add("Access-Control-Allow-Methods", "*"); var corsResponse = new ApplicationLoadBalancerResponse() { IsBase64Encoded = false, StatusCode = 200, StatusDescription = "200 OK", Headers = corsHeaders, }; return(corsResponse); } if (requestHeaders.ContainsKey("authorization")) { authorization = requestHeaders["authorization"]; } // Get these from the Lambda ENV var domain = Environment.GetEnvironmentVariable("AUTH_DOMAIN"); var audience = Environment.GetEnvironmentVariable("AUTH_AUDIENCE"); var permission = Environment.GetEnvironmentVariable("AUTH_PERMISSIONS"); var permissions = new List <string>(permission.Split(',')); // See if authorized if (JWTAuthorizer.Authorizer.IsAuthorized(authorization, domain, audience, permissions)) { var data = new Response { Message = "Hello, 123!", BodyLength = contentLength.ToString() }; Dictionary <string, string> headers = new Dictionary <string, string>(); headers.Add("Content-Type", "application/json"); headers.Add("Access-Control-Allow-Origin", "*"); response = new ApplicationLoadBalancerResponse() { IsBase64Encoded = false, StatusCode = 200, StatusDescription = "200 OK", Headers = headers, Body = JsonSerializer.Serialize <Response>(data) }; } else { response = new ApplicationLoadBalancerResponse() { IsBase64Encoded = false, StatusCode = 403, StatusDescription = "403 Unauthorized", }; } return(response); }