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

Entradas recientes
Archivo
Buscar por tags
No hay tags aún.
Síguenos
  • Twitter Basic Square

Follow us

  • Icono negro LinkedIn
  • Negro Facebook Icono
  • Negro Twitter Icono
  • Negro del icono de Instagram

Info@teracloud.io
447 Broadway, New York, USA

Copyright © 2021 Teracloud LLC. - All Rights Reserved. All trademarks are property of their legal owners.