Git Product home page Git Product logo

aws-lambda-sqs's Introduction

aws-lambda-sqs

A sample Java AWS Lambda function to listen to AWS SQS queue and receive messages from the queue.

Guide

  • Create a new AWS SQS queue or use any existing queues.
  • Update the value for aws.sqs.queue.url in the application.properties to your queue url.
  • Build the project using: mvn clean install
  • Create and configure using the aws lambda requirement below.
  • Upload the jar file with suffix "-aws" to AWS lambda.
  • Update the handler field with: com.mj.aws.lambda.sqs.AwsLambdaSqsFunctionHandler
  • Trigger the Lambda function and check the log from Cloud Watch.

AWS Lambda Requirements:

  • 256 MB of Memory. (Can try with lower one)
  • Timeout 1 min.
  • Execution role -- Access to SQS Policy -- Access to Cloud watch for logging Policy

AWS SQS

  • You can choose FIFO queue.

Libraries

Credits

Based on https://dzone.com/articles/run-code-with-spring-cloud-function-on-aws-lambda

Guide to local deployment using sam-local and localstack

  • Full guide: https://medium.com/@mengjiannlee/local-deployment-of-aws-lambda-spring-cloud-function-using-sam-local-and-localstack-dc7669110906
  • Install Docker on your machine: https://www.docker.com/get-docker
  • Install aws-sam-local following the guide on the github readme.
  • Clone the localstack repo to your machine. Then, navigate to the local branch folder to spin up the Localstack using docker-compose: TMPDIR=/private$TMPDIR docker-compose up
    • You should seet "localstack_1 | Ready " when the localstack container is spinned up.
    • Then, you should check the network created for localstack container. The default is: localstack_default.
      • Or you run the command: docker inspect <CONTAINER_ID> -f "{{json .NetworkSettings.Networks }}".
  • Now, you will need to create messages in the queues:
  • Finally, navigate to the folder where the SAM template resides and run:
    • sam local invoke AwsLambdaSqsLocal --log-file ./output.log -e event.json --docker-network
      • Since the aws lambda function is executed in a docker container, it cant access the localstack deployed on the host machine. That is the reason you will need to deploy the container containing the lambda function to the same network as the localstack.
      • You can check on the output.log for debuging purpose.
      • There is also another way to pass trigger event to the lambda. You can read more from the sam-local github page.

Guide to deploy as SAR

  • Upload the sam template template-sar.yaml to the SAR console.
  • Remember to update the CodeUri to point to the jar in your bucket.
  • For the S3 bucket serving the CodeUri, the following is required for the bucket policy.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service":  "serverlessrepo.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<your-bucket-name>/*"
        }
    ]
}

Reference:

aws-lambda-sqs's People

Contributors

mengjiann avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

aws-lambda-sqs's Issues

AWS SAR vulnerability in README

Hi @mengjiann

the README states that deployment is done using AWS SAR. There has been a recent cross-account vulnerability related to AWS SAR and your repo may be affected. In the blog post, you find an explanation, as well as a short explanation of what needs to be fixed.

As your README deployment contains the vulnerability, I suggest updating it. To prevent the vulnerability, you need to add a block

            Condition:
              StringEquals:
                "aws:SourceAccount":  <AWS::AccountId>

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.