Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ jspm_packages
# custom
dummy-payloads
dist/*.json
garnished_dist/*
.DS_Store
109 changes: 109 additions & 0 deletions cloudformation/cloudformation.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
AWSTemplateFormatVersion: '2010-09-09'
Description: >
CloudFormation Template for creating the Lambda functions for crowdhandler.
This template deploys three functions using code stored in S3:
- crowdhandler-viewerRequest (from viewerRequest.zip)
- crowdhandler-originResponse (from originResponse.zip)
- crowdhandler-originOverride (from originOverride.zip)
It publishes a version of each function—necessary before attaching them to Lambda@Edge.
The S3 bucket is fixed as "cloudfront-integration-bundles" and the function code keys are derived from the PublicKey parameter.

Parameters:
PublicKey:
Type: String
Description: "The public key used to scope the S3 key. The code packages are expected at dist/<PublicKey>/..."

Resources:
LambdaExecutionRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Principal:
Service:
- lambda.amazonaws.com
- edgelambda.amazonaws.com
Action: sts:AssumeRole
Policies:
- PolicyName: crowdhandler
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action: logs:CreateLogGroup
Resource: arn:aws:logs:*:*:*
- Effect: Allow
Action:
- logs:CreateLogStream
- logs:PutLogEvents
Resource: arn:aws:logs:*:*:log-group:*:*

CrowdhandlerViewerRequestLambda:
Type: AWS::Lambda::Function
Properties:
FunctionName: crowdhandler-viewerRequest
Runtime: nodejs22.x
Role: !GetAtt LambdaExecutionRole.Arn
Handler: handlerViewerRequest.viewerRequest
Code:
S3Bucket: cloudfront-integration-bundles
S3Key: !Sub "dist/${PublicKey}/viewerRequest.zip"
MemorySize: 128
Timeout: 5

CrowdhandlerOriginResponseLambda:
Type: AWS::Lambda::Function
Properties:
FunctionName: crowdhandler-originResponse
Runtime: nodejs22.x
Role: !GetAtt LambdaExecutionRole.Arn
Handler: handlerOriginResponse.originResponse
Code:
S3Bucket: cloudfront-integration-bundles
S3Key: !Sub "dist/${PublicKey}/originResponse.zip"
MemorySize: 128
Timeout: 30

CrowdhandlerOriginOverrideLambda:
Type: AWS::Lambda::Function
Properties:
FunctionName: crowdhandler-originOverride
Runtime: nodejs22.x
Role: !GetAtt LambdaExecutionRole.Arn
Handler: handlerOriginOverride.originOverride
Code:
S3Bucket: cloudfront-integration-bundles
S3Key: !Sub "dist/${PublicKey}/originOverride.zip"
MemorySize: 128
Timeout: 30

# Publish a version of each function for Lambda@Edge association
CrowdhandlerViewerRequestLambdaVersion:
Type: AWS::Lambda::Version
Properties:
FunctionName: !Ref CrowdhandlerViewerRequestLambda

CrowdhandlerOriginResponseLambdaVersion:
Type: AWS::Lambda::Version
Properties:
FunctionName: !Ref CrowdhandlerOriginResponseLambda

CrowdhandlerOriginOverrideLambdaVersion:
Type: AWS::Lambda::Version
Properties:
FunctionName: !Ref CrowdhandlerOriginOverrideLambda

Outputs:
ViewerRequestLambdaVersionARN:
Description: "The ARN of the published version of the crowdhandler-viewerRequest function."
Value: !GetAtt CrowdhandlerViewerRequestLambdaVersion.Version

OriginResponseLambdaVersionARN:
Description: "The ARN of the published version of the crowdhandler-originResponse function."
Value: !GetAtt CrowdhandlerOriginResponseLambdaVersion.Version

OriginOverrideLambdaVersionARN:
Description: "The ARN of the published version of the crowdhandler-originOverride function."
Value: !GetAtt CrowdhandlerOriginOverrideLambdaVersion.Version
Binary file modified dist/originOverride.zip
Binary file not shown.
Binary file renamed dist/viewerResponse.zip → dist/originResponse.zip
Binary file not shown.
Binary file modified dist/viewerRequest.zip
Binary file not shown.
Loading