Code Monkey home page Code Monkey logo

s3-cloudfront-lambda's Introduction

AWS Lambda: S3 Bucket event -> CloudFront Invalidation

When an index* file is created/updated on a S3 bucket, this NodeJS based AWS lambda function finds a distribution that uses the bucket as a origin and creates a wildcard parametrized CloudFront Invalidation.

Installation

If you are not using apex or serverless to manage AWS Lambda functions you can install it by:

  1. Installing the dependencies

    npm install
    
  2. Zip it and upload the whole zip to AWS Lambda.

  3. Create the role for the AWS lambda. For CloudFront the next role policy:

      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "cloudfront:CreateInvalidation",
                      "cloudfront:ListDistributions",
                      "cloudfront:ListDistributionsByWebACLId",
                      "cloudfront:ListInvalidations"
                  ],
                  "Resource": [
                      "*"
                  ]
              }
          ]
      }
    

And for S3 and logging the role policy:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                ],
                "Resource": "arn:aws:logs:*:*:*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:PutObject"
                ],
                "Resource": [
                    "arn:aws:s3:::*"
                ]
            }
        ]
    }
  1. The handler

     s3-bucket-cf-invalidation.handler
    
  2. For the event source, select the S3 bucket(s) related.

Based on this gist by supinf

s3-cloudfront-lambda's People

Contributors

adben avatar

Stargazers

Chris Love avatar

Watchers

 avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.