https://github.com/jmb12686/serverless-ddns
Simple Dynamic DNS (DDNS) utilizing serverless architecture and framework for hosting on AWS. AWS Services utilized include API Gateway, Lambda, and Route 53.
https://github.com/jmb12686/serverless-ddns
aws aws-apigateway aws-lambda aws-route53 ddns serverless serverless-framework
Last synced: 7 months ago
JSON representation
Simple Dynamic DNS (DDNS) utilizing serverless architecture and framework for hosting on AWS. AWS Services utilized include API Gateway, Lambda, and Route 53.
- Host: GitHub
- URL: https://github.com/jmb12686/serverless-ddns
- Owner: jmb12686
- Created: 2019-03-25T18:10:03.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2021-04-29T20:14:26.000Z (over 4 years ago)
- Last Synced: 2025-02-28T12:33:31.873Z (7 months ago)
- Topics: aws, aws-apigateway, aws-lambda, aws-route53, ddns, serverless, serverless-framework
- Language: JavaScript
- Homepage:
- Size: 25.4 KB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# serverless-ddns
[](http://www.serverless.com)
## Prerequisites
Make sure you have the following installed before starting:
* [nodejs](https://nodejs.org/en/download/)
* [npm](https://www.npmjs.com/get-npm?utm_source=house&utm_medium=homepage&utm_campaign=free%20orgs&utm_term=Install%20npm)
* [serverless](https://serverless.com/framework/docs/providers/aws/guide/installation/)## Installation
```bash
git clone https://github.com/jmb12686/serverless-ddns
cd serverless-ddns
npm install
```## Configuration
Modify the following configuration parameters in config.json:
`apiDomainName` - URL to host on API Gateway. Must have matching AWS Certificate Manager and own domain in Route53
`ddnsHostName` - Domain name, owned in Route 53, that you want to keep updated with a dynamic IP.
`notificationTopicARN` - TopicARN, in SNS, that you wish to receive notifications on. Notifications are sent upon a successful DDNS update or failed attempt.
## Deployment
First, create the custom domain in API Gateway and route53 (corresponds to the `apiDomainName` config variable):
```bash
serverless create_domain
```Now, deploy the serverless stack:
```bash
serverless deploy
```NOTE: Use `--stage prod` to deploy to prod
## Usage
Usage instructions for interacting with the ddns API
### Fetch caller IP
Fetch current caller IP, similar to 'what's my ip':
`$ curl https://apiDomainName`
### Update DNS with new IP
POST 'homeIp' JSON to API endpoint with AWS IAM Signature. User api user is created upon stack deployment. Use [aws-authenticated-curl-utility](https://github.com/jmb12686/aws-authenticated-curl-utility) to properly sign authenticated requests
`$ post_it.sh -credentials : -url -region us-east-1 -service execute-api -body "'{\"homeIp\":\"$ip\"}'"`
## TODO
1) Eliminate topicARN requirement, and instead send to arbitrary email and/or SMS