Skip to content

Files

Latest commit

 

History

History
121 lines (101 loc) · 3.99 KB

README.md

File metadata and controls

121 lines (101 loc) · 3.99 KB

Serverless - Shorten Long URL

Serverless - Shorten Long URL

- 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)

- 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

What’s In This Document

⚡ $ mkdir shorten-url
⚡ $ cd shorten-url
⚡ $ cdk init -l python
⚡ $ 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
⚡ $ cdk deploy '*'
  • Full stacks created in cloudformation: Alt Text

  • Lambda functions: Alt Text

  • Lambda function: create url Alt Text

  • Lambda function: redirect url Alt Text

  • API Gateway 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

    • Note that I add expiry_date attribute for TTL = 7 days
  • Click on the short URL Alt Text