Instantly share code, notes, and snippets.

Embed
What would you like to do?
Lambda@Edge CloudFront Debugging Sample Records
{
"callbackWaitsForEmptyEventLoop":true,
"logGroupName":"/aws/lambda/us-east-1.DebugEvent",
"logStreamName":"2018/10/16/zzz",
"functionName":"us-east-1.DebugEvent",
"memoryLimitInMB":"128",
"functionVersion":"2",
"invokeid":"ad19fdb1-zzz-zzz-zzz-zzz",
"awsRequestId":"ad19fdb1-zzz-zzz-zzz-zzz",
"invokedFunctionArn":"arn:aws:lambda:us-east-1:zzz:function:us-east-1.DebugEvent:2"
}
'use strict';
/**
* Lambda@Edge to log CloudFront event and context.
* Note: this runs in Lambda@Edge which means it runs in a variety
* of regions, the region closest to the browser making the request.
* So be sure and check other regions if you don't see the logs in
* CloudWatch in the region you normally use.
*
* https://medium.com/@jbesw/postcards-from-lambda-the-edge-11a43f215dc1
*
*/
exports.handler = (event, context, callback) => {
const eventType = event.Records[0].cf.config.eventType;
// Log JSON of the event and context if available to console which
// will end up in CloudWatch
console.log('DebugEvent ' + eventType
+ ' -- ' + JSON.stringify(event)
+ ' -- context -- ' + JSON.stringify(context)
);
const responseEvent = eventType.indexOf('-response') > 0;
// Response back to CloudFront and let the HTTP request continue
callback(null,
(responseEvent ?
event.Records[0].cf.response : event.Records[0].cf.request));
};
{
"Records":[
{
"cf":{
"config":{
"distributionDomainName":"d1zzzlmt.cloudfront.net",
"distributionId":"E1zzzGZ",
"eventType":"origin-request"
},
"request":{
"clientIp":"2607:zzz:1812:zzz:c06e:zzz:99e7:da29",
"headers":{
"user-agent":[
{
"key":"User-Agent",
"value":"Amazon CloudFront"
}
],
"via":[
{
"key":"Via",
"value":"1.1 7fa8abd93azzzbdcbc31.cloudfront.net (CloudFront)"
}
],
"accept-encoding":[
{
"key":"Accept-Encoding",
"value":"gzip"
}
],
"x-forwarded-for":[
{
"key":"X-Forwarded-For",
"value":"2607:zzz:zzz:zzz:c06e:38cc:99e7:da29"
}
],
"host":[
{
"key":"Host",
"value":"pzzze.s3.amazonaws.com"
}
]
},
"method":"GET",
"origin":{
"s3":{
"authMethod":"origin-access-identity",
"customHeaders":{
},
"domainName":"pzzze.s3.amazonaws.com",
"path":"",
"region":"us-east-1"
}
},
"querystring":"",
"uri":"/mycalendar.ics"
}
}
}
]
}
{
"Records":[
{
"cf":{
"config":{
"distributionDomainName":"d1zzzlmt.cloudfront.net",
"distributionId":"E1zzz8GZ",
"eventType":"origin-response"
},
"request":{
"clientIp":"6.2.1.7",
"headers":{
"user-agent":[
{
"key":"User-Agent",
"value":"Amazon CloudFront"
}
],
"via":[
{
"key":"Via",
"value":"1.1 caf2zzzb43da60.cloudfront.net (CloudFront)"
}
],
"accept-encoding":[
{
"key":"Accept-Encoding",
"value":"gzip"
}
],
"host":[
{
"key":"Host",
"value":"pzzze.s3.amazonaws.com"
}
],
"x-forwarded-for":[
{
"key":"X-Forwarded-For",
"value":"6.2.1.7"
}
]
},
"method":"GET",
"origin":{
"s3":{
"authMethod":"origin-access-identity",
"customHeaders":{
},
"domainName":"pzzze.s3.amazonaws.com",
"path":"",
"region":"us-east-1"
}
},
"querystring":"",
"uri":"/mycalendar.ics"
},
"response":{
"headers":{
"x-amz-request-id":[
{
"key":"x-amz-request-id",
"value":"B6DzzzD48"
}
],
"x-amz-id-2":[
{
"key":"x-amz-id-2",
"value":"KzMQLDzzzj93XRhGYMchr5shuiYsM9EJu1wLS0+IM="
}
],
"date":[
{
"key":"Date",
"value":"Tue, 16 Oct 2018 22:05:05 GMT"
}
],
"server":[
{
"key":"Server",
"value":"AmazonS3"
}
],
"content-type":[
{
"key":"Content-Type",
"value":"application/xml"
}
],
"transfer-encoding":[
{
"key":"Transfer-Encoding",
"value":"chunked"
}
]
},
"status":"403",
"statusDescription":"Forbidden"
}
}
}
]
}
{
"Records":[
{
"cf":{
"config":{
"distributionDomainName":"d1lzzzlmt.cloudfront.net",
"distributionId":"zzz",
"eventType":"viewer-request",
"requestId":"zsDwxGzzz-DG-zzz-s0uwyQ=="
},
"request":{
"clientIp":"6.2.1.7",
"headers":{
"host":[
{
"key":"Host",
"value":"example.com"
}
],
"user-agent":[
{
"key":"User-Agent",
"value":"iOS/12.0.1 (16A404) dataaccessd/1.0"
}
],
"accept":[
{
"key":"accept",
"value":"text/calendar"
}
],
"accept-language":[
{
"key":"accept-language",
"value":"en-us"
}
],
"accept-encoding":[
{
"key":"accept-encoding",
"value":"br, gzip, deflate"
}
]
},
"method":"GET",
"querystring":"",
"uri":"/mycalendar.ics"
}
}
}
]
}
{
"Records":[
{
"cf":{
"config":{
"distributionDomainName":"d1lzzzlmt.cloudfront.net",
"distributionId":"zzz",
"eventType":"viewer-response",
"requestId":"ohSdzzzmp5a-zzz-zzz=="
},
"request":{
"clientIp":"6.2.1.7",
"headers":{
"host":[
{
"key":"Host",
"value":"example.com"
}
],
"user-agent":[
{
"key":"User-Agent",
"value":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15"
}
],
"accept":[
{
"key":"accept",
"value":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
}
],
"accept-language":[
{
"key":"accept-language",
"value":"en-us"
}
],
"accept-encoding":[
{
"key":"accept-encoding",
"value":"br, gzip, deflate"
}
],
"dnt":[
{
"key":"dnt",
"value":"1"
}
]
},
"method":"GET",
"querystring":"",
"uri":"/"
},
"response":{
"headers":{
"x-amz-id-2":[
{
"key":"x-amz-id-2",
"value":"Lzhzzzzz6Y7oo="
}
],
"x-amz-request-id":[
{
"key":"x-amz-request-id",
"value":"8zzzzz742"
}
],
"date":[
{
"key":"Date",
"value":"Tue, 16 Oct 2018 18:13:35 GMT"
}
],
"last-modified":[
{
"key":"Last-Modified",
"value":"Mon, 15 Oct 2018 23:54:20 GMT"
}
],
"etag":[
{
"key":"ETag",
"value":"\"e7zzzzzz8702e33\""
}
],
"x-amz-server-side-encryption":[
{
"key":"x-amz-server-side-encryption",
"value":"AES256"
}
],
"cache-control":[
{
"key":"Cache-Control",
"value":"max-age=86400,public"
}
],
"server":[
{
"key":"Server",
"value":"AmazonS3"
}
],
"strict-transport-security":[
{
"key":"Strict-Transport-Security",
"value":"max-age=50000;"
}
],
"x-content-type-options":[
{
"key":"X-Content-Type-Options",
"value":"nosniff"
}
],
"x-frame-options":[
{
"key":"X-Frame-Options",
"value":"DENY"
}
],
"x-xss-protection":[
{
"key":"X-XSS-Protection",
"value":"1; mode=block; report=https://example.report-uri.com/r/d/csp/enforce"
}
],
"content-security-policy":[
{
"key":"Content-Security-Policy",
"value":"upgrade-insecure-requests; default-src 'none'; font-src fonts.gstatic.com use.fontawesome.com; style-src 'self' cdnjs.cloudflare.com fonts.googleapis.com use.fontawesome.com; img-src 'self' example.com; script-src 'self' cdnjs.cloudflare.com; connect-src app.com example.com; report-uri https://example.report-uri.com/r/d/csp/enforce"
}
],
"referrer-policy":[
{
"key":"Referrer-Policy",
"value":"same-origin"
}
],
"content-encoding":[
{
"key":"Content-Encoding",
"value":"gzip"
}
],
"vary":[
{
"key":"Vary",
"value":"Accept-Encoding"
}
],
"age":[
{
"key":"Age",
"value":"9251"
}
],
"content-type":[
{
"key":"Content-Type",
"value":"text/html"
}
],
"transfer-encoding":[
{
"key":"Transfer-Encoding",
"value":"chunked"
}
]
},
"status":"200",
"statusDescription":"OK"
}
}
}
]
}
@prenagha

This comment has been minimized.

Owner

prenagha commented Oct 16, 2018

Sample context (which is basically the same for all event types), and event object for each event type. Note these examples are NOT all from the same single HTTP request. But regardless they give you an idea of what data to expect in the event object passed to your Lambda method.

As mentioned here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment