Serverless deployment

There are many ways to deploy infrastructure as code, but today’s Teratip is about a special one we like to use: Serverless.


As with many IAC tools, we start by writing a text file and then running a binary that controls the creation of what we declared. But serverless has a control advantage over the infrastructure that requires AWS resources like Lambda functions or DynamoDB. In less than 50 lines of Yaml code, you can create a state-of-the-art infrastructure using S3 Buckets, DynamoDB, and more with all the required policies to keep it safe.


For example, a Yaml like the following will create an S3 bucket, a DynamoDB table, and the infrastructure for the function to communicate them:


 service: quicksite
frameworkVersion: ">=1.1.0"
provider:
    name: aws
    runtime: nodejs10.x
    environment:
         DYNAMODB_TABLE: ${self:service}-${opt:stage, 
self:provider.stage}-uniqname
  iamRoleStatements:
     - Effect: Allow
  Action:
     - dynamodb:Query
     - dynamodb:Scan
     - dynamodb:GetItem
     - dynamodb:PutItem
     - dynamodb:UpdateItem
     - dynamodb:DeleteItem
    Resource: "arn:aws:dynamodb:${opt:region, self:provider.region}:*:table/${self:provider.environment.DYNAMODB_TABLE
}"
functions:
   create:
      handler: fn/create.create
      events:
      - http:
       path: fn
       method: post
resources:
  Resources:
         MyBucket:
        Type: AWS::S3::Bucket
        Properties:
       BucketName: ${self:service}-${opt:stage, 
self:provider.stage}-uniqname
       AccessControl: PublicRead
      MyDb:
     Type: 'AWS::DynamoDB::Table'
     DeletionPolicy: Retain
     Properties:
    AttributeDefinitions:
  - AttributeName: id
  AttributeType: S
  KeySchema:
     - AttributeName: id
                       KeyType: HASH
  ProvisionedThroughput:
  ReadCapacityUnits: 1
  WriteCapacityUnits: 1
  TableName: ${self:provider.environment.DYNAMODB_TABLE}


Once you have your Yaml file, Serverless will compile it for Cloudformation making the full deployment of its content and keeping records for its modification in the future. Nice, isn't it?


Give it a try. Start at https://www.serverless.com/

Let us know if you like Serverless and we’ll keep you updated with more Teratips about it.








Juan Eduardo Castaño

DevOps Engineer

Teracloud







If you want to know more about our services, tips, blogs, or a free assessment

email our team member ben@teracloud.io


#Teracloud #aws #serverlessdeployment #TeraTips #awslatam #deployment #lambda #DynamoDB #S3Buckets #infraestructure