Necessitates Proper Modularity

    @everymundo/aws-api-gateway-serverless-component

    1.0.7 • Public • Published

    aws-api-gateway

    The complete AWS API Gateway Framework, powered by Serverless Components.

    Features

    • Create & manage new API Gateway REST APIs with very simple configuration.
    • Extend Existing API Gateway REST APIs without disrupting other services.
    • Integrate with AWS Lambda via the aws-lambda component
    • Authorize requests with AWS Lambda authorizers
    • Create proxy endpoints for any URL with 3 lines of code (coming soon)
    • Create mock endpoints by specifying the object you'd like to return (coming soon)
    • Debug API Gateway requests Via CloudWatch Logs (coming soon)
    • Protect your API with API Keys (coming soon)
    • Add usage plans to your APIs (coming soon)
    • Configure throttling & rate limits (coming soon)
    • Trace requests with AWS X-Ray (coming soon)

    Table of Contents

    1. Install
    2. Create
    3. Configure
    4. Deploy

    1. Install

    $ npm install -g serverless

    2. Create

    Just create the following simple boilerplate:

    $ touch serverless.yml # more info in the "Configure" section below
    $ touch index.js       # your lambda code
    $ touch .env           # your AWS api keys
    # .env
    AWS_ACCESS_KEY_ID=XXX
    AWS_SECRET_ACCESS_KEY=XXX
    

    the index.js file should look something like this:

    module.exports.createUser = async (e) => {
      return {
        statusCode: 200,
        body: 'Created User'
      }
    }
    
    module.exports.getUsers = async (e) => {
      return {
        statusCode: 200,
        body: 'Got Users'
      }
    }
    
    module.exports.auth = async (event, context) => {
      return {
        principalId: 'user',
        policyDocument: {
          Version: '2012-10-17',
          Statement: [
            {
              Action: 'execute-api:Invoke',
              Effect: 'Allow',
              Resource: event.methodArn
            }
          ]
        }
      }
    }

    Keep reading for info on how to set up the serverless.yml file.

    3. Configure

    You can configure the component to either create a new REST API from scratch, or extend an existing one.

    Creating REST APIs

    You can create new REST APIs by specifying the endpoints you'd like to create, and optionally passing a name and description for your new REST API. You may also choose between a lambda proxy or http proxy integration by using the function or proxyURI field respectively. The function field will override the proxyURI field.

    # serverless.yml
    
    createUser:
      component: "@serverless/aws-lambda"
      inputs:
        code: ./code
        handler: index.createUser
    getUsers:
      component: "@serverless/aws-lambda"
      inputs:
        code: ./code
        handler: index.getUsers
    auth:
      component: "@serverless/aws-lambda"
      inputs:
        code: ./code
        handler: index.auth
    
    restApi:
      component: "@serverless/aws-api-gateway"
      inputs:
        description: Serverless REST API
        endpoints:
          - path: /users
            method: POST
            function: ${createUser.arn}
            authorizer: ${auth.arn}
          - path: /users
            method: GET
            function: ${getUsers.arn}
            authorizer: ${auth.arn}
          - path: /users
            method: PUT
            proxyURI: https://example.com/users
            authorizer: ${auth.arn}
            apiKeyRequired: false

    Extending REST APIs

    You can extend existing REST APIs by specifying the REST API ID. This will only create, remove & manage the specified endpoints without removing or disrupting other endpoints.

    # serverless.yml
    
    createUser:
      component: "@serverless/aws-lambda"
      inputs:
        code: ./code
        handler: index.createUser
    getUsers:
      component: "@serverless/aws-lambda"
      inputs:
        code: ./code
        handler: index.getUsers
    
    restApi:
      component: "@serverless/aws-api-gateway"
      inputs:
        id: qwertyuiop # specify the REST API ID you'd like to extend
        endpoints:
          - path: /users
            method: POST
            function: ${createUser.arn}
          - path: /users
            method: GET
            function: ${getUsers.arn}

    4. Deploy

    $ serverless

     

    New to Components?

    Checkout the Serverless Components repo for more information.

    Keywords

    none

    Install

    npm i @everymundo/aws-api-gateway-serverless-component

    DownloadsWeekly Downloads

    27

    Version

    1.0.7

    License

    Apache

    Unpacked Size

    42.5 kB

    Total Files

    12

    Last publish

    Collaborators

    • eblez
    • mjremedios1985
    • mtmorell88
    • a11y_automation2
    • ramses83
    • raydel
    • alex-orga
    • vladimirpetrov
    • estebanpablo89
    • yartiles
    • jonmorazav
    • emdavidmoreno
    • everymundo-admin
    • ballester
    • danielsan
    • halain
    • avivero93
    • anahiem
    • herlin
    • karinfdez
    • ernestocarrasco
    • erlin
    • front10devs
    • hdelcastillo
    • dcuevacem
    • rodneyem
    • ortega.dc98
    • pedroleon917
    • kaylingw
    • joeaspiazuem
    • lazjramos
    • daniuska-em
    • cstansfld