- 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)
+ 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.
⚡ $ mkdir shorten-url
⚡ $ cd shorten-url
⚡ $ cdk init -l python
- Source: shorten-url
⚡ $ 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 '*'
🚀 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\"}"