Giter VIP home page Giter VIP logo

s3-sns-sqs-lambda-s3's Introduction

image

AWS Amazon S3 to SQS to AWS Lambda - Create a Lambda function that resizes images uploaded to S3 using SQS as a notification target

The SAM template deploys a Lambda function, an SQS queue, 2 S3 buckets and the IAM resources required to run the application. An SQS Queue consumes ObjectCreated events from an Amazon S3 bucket if the file has .jpg extension. The SQS triggers a Lambda function. The Lambda code checks the uploaded file is an image and creates a thumbnail version of the image in another bucket.

Learn more about this pattern at Serverless Land Patterns: https://serverlessland.com/patterns/s3-sqs-lambda

Important: this application uses various AWS services and there are costs associated with these services after the Free Tier usage - please see the AWS Pricing page for details. You are responsible for any AWS costs incurred. No warranty is implied in this example.

Requirements

Deployment Instructions

  1. Create a new directory, navigate to that directory in a terminal and clone the GitHub repository:

    git clone https://github.com/aws-samples/serverless-patterns
  2. Change directory to the pattern directory:

    cd s3-sqs-lambda
  3. Install dependencies

    npm --prefix ./src install ./src
  4. From the command line, use AWS SAM to build and deploy the AWS resources for the pattern as specified in the template.yml file:

    sam build
    sam deploy --guided
  5. During the prompts:

    • Enter a stack name
    • Enter a source bucket name
    • Enter a destination bucket name
    • Enter a queue name
    • Enter the desired AWS Region
    • Allow SAM CLI to create IAM roles with the required permissions.

    Once you have run sam deploy -guided mode once and saved arguments to a configuration file (samconfig.toml), you can use sam deploy in future to use these defaults.

  6. Note the outputs from the SAM deployment process. These contain the resource names and/or ARNs which are used for testing.

How it works

  • Use the AWS CLI or AWS console to upload an image to the source S3 Bucket
  • If the object is a .jpg the code creates a thumbnail and saves it to the target bucket.
  • The code assumes that the destination bucket exists and its name is a concatenation of the source bucket name followed by the string -resized

==============================================

Testing

Run the following S3 CLI command to upload an image to the S3 bucket. Note, you must edit the {SourceBucketName} placeholder with the name of the source S3 Bucket. This is provided in the stack outputs.

aws s3 cp './events/exampleImage.png'  s3://{SourceBucketName}

Run the following command to check that a new version of the image has been created in the destination bucket.

aws s3 ls s3://{DestinationBucketName}

Cleanup

  1. Delete the stack
    aws cloudformation delete-stack --stack-name STACK_NAME
  2. Confirm the stack has been deleted
    aws cloudformation list-stacks --query "StackSummaries[?contains(StackName,'STACK_NAME')].StackStatus"

Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.

SPDX-License-Identifier: MIT-0

S3-SNS-SQS-Lambda-S3

s3-sns-sqs-lambda-s3's People

Contributors

vgisme avatar vikash-kumar01 avatar

Watchers

 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.