Alt Text
Alt Text

Shorten Long URL Using CDK And Serverless

- There are many web apps provide the service of shortening your long url (free or charged). This ariticle introduces the way of using serverless with Cloud development toolkit (CDK)

Vu Dao
3 min readFeb 10, 2021

--

- CDK helps to create this project by coding (python language), What’s its benefits?

+ Infra structure as code

+ Update lambda function code and just need to execute cdk deploy, all the code and modules will be up-to-date

+ Create and destroy the structure quickly, and we can manage the structure by separate stacks such dynamodb stack, IAM stack, lambda stack and API Gateway stack.

Alt Text
Alt Text

What’s In This Document

🚀 Init CDK project

⚡ $ mkdir shorten-url
⚡ $ cd shorten-url
⚡ $ cdk init -l python

🚀 Create source code

⚡ $ tree
.
├── app.py
├── create_src
│ └── createShortUrl.py
├── README.md
├── redirect_src
│ └── redirectUrl.py
├── requirements.txt
├── setup.py
├── shorten_url
│ ├── __init__.py
│ └── shorten_url_stack.py
  • Add python boto3 module for lambda function sources
⚡ $ pip install boto3 -t create_src
⚡ $ pip install boto3 -t redirect_src
  • Cdk synth to check cdk valid
⚡ $ cdk synth
Successfully synthesized to ~/shorten-url/cdk.out
Supply a stack id (ShortenUrlDDB, ShortenUrlIAMRole, ShortenURLCreateLambda, ShortenURLRedirectLambda, ShortenURLApiGW) to display its template.
  • List stacks
⚡ $ cdk ls
ShortenUrlDDB
ShortenUrlIAMRole
ShortenURLCreateLambda
ShortenURLRedirectLambda
ShortenURLApiGW

🚀 Deploy stacks

⚡ $ cdk deploy '*'
  • Full stacks created in cloudformation:
Alt Text
Alt Text
  • Lambda functions:
Alt Text
Alt Text
  • Lambda function: create url
Alt Text
Alt Text
  • Lambda function: redirect url
Alt Text
Alt Text
  • API Gateway
Alt Text
Alt Text
Alt Text
Alt Text

🚀 Demo

  • POST a long url (here is not actually long)
⚡ $ curl -L -X POST 'https://s.cloudopz.co/shortenUrl' -H 'Content-Type: application/json' --data-raw '{"url": "https://hashnode.com/@vumdao"}'
"{\"short_url\": \"https://s.cloudopz.co/dVkiBRM\"}"
  • Check dynamodb table
Alt Text
Alt Text
  • Note that I add expiry_date attribute for TTL = 7 days
  • Click on the short URL
Alt Text
Alt Text

:stars: Blog · Github · Web · Linkedin · Group · Page · Twitter :stars:

--

--

Vu Dao
Vu Dao

Written by Vu Dao

Awesome Devops || CloudOpz

No responses yet