From 394b68fa29ea54108db74cf818bf73dfcd1fa2b9 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Wed, 30 Aug 2023 15:40:48 +0100 Subject: [PATCH] Automate deployment to AWS lambda (cheaper than Netlify) --- .github/workflows/deploy-aws.yml | 37 +++++ serverless.yml | 266 ++++++++++++++++++------------- 2 files changed, 195 insertions(+), 108 deletions(-) create mode 100644 .github/workflows/deploy-aws.yml diff --git a/.github/workflows/deploy-aws.yml b/.github/workflows/deploy-aws.yml new file mode 100644 index 0000000..ec5e151 --- /dev/null +++ b/.github/workflows/deploy-aws.yml @@ -0,0 +1,37 @@ +name: 🚀 Deploy to AWS + +on: + workflow_dispatch: + push: + branches: + - master + tags: + - '*' + paths: + - api/** + - serverless.yml + - package.json + +jobs: + deploy-api: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup Node.js + uses: actions/setup-node@v1 + with: + node-version: 16 + + - name: Install Serverless CLI and dependencies + run: | + yarn add -g serverless + yarn + - name: Deploy to AWS + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + run: serverless deploy + diff --git a/serverless.yml b/serverless.yml index 45854e8..d5ea00d 100644 --- a/serverless.yml +++ b/serverless.yml @@ -6,35 +6,17 @@ provider: region: us-east-1 functions: - dnssec: - handler: api/dnssec.handler + archives: + handler: api/archives.handler events: - http: - path: api/dnssec + path: api/archives method: get - linkedPages: - handler: api/linked-pages.handler + blockLists: + handler: api/block-lists.handler events: - http: - path: api/linked-pages - method: get - robotsTxt: - handler: api/robots-txt.handler - events: - - http: - path: api/robots-txt - method: get - ssl: - handler: api/ssl.handler - events: - - http: - path: api/ssl - method: get - whois: - handler: api/whois.handler - events: - - http: - path: api/whois + path: api/block-lists method: get carbon: handler: api/carbon.handler @@ -42,138 +24,206 @@ functions: - http: path: api/carbon method: get - features: - handler: api/features.handler - events: - - http: - path: api/features - method: get - mailConfig: - handler: api/mail-config.handler - events: - - http: - path: api/mail-config - method: get - screenshot: - handler: api/screenshot.handler - events: - - http: - path: api/screenshot - method: get - status: - handler: api/status.handler - events: - - http: - path: api/status - method: get cookies: handler: api/cookies.handler events: - http: path: api/cookies method: get - getIp: - handler: api/get-ip.handler - events: - - http: - path: api/get-ip - method: get - ports: - handler: api/ports.handler - events: - - http: - path: api/ports - method: get - securityTxt: - handler: api/security-txt.handler - events: - - http: - path: api/security-txt - method: get - techStack: - handler: api/tech-stack.handler - events: - - http: - path: api/tech-stack - method: get dnsServer: handler: api/dns-server.handler events: - http: path: api/dns-server method: get - headers: - handler: api/headers.handler - events: - - http: - path: api/headers - method: get - quality: - handler: api/quality.handler - events: - - http: - path: api/quality - method: get - sitemap: - handler: api/sitemap.handler - events: - - http: - path: api/sitemap - method: get - traceRoute: - handler: api/trace-route.handler - events: - - http: - path: api/trace-route - method: get dns: handler: api/dns.handler events: - http: path: api/dns method: get + dnssec: + handler: api/dnssec.handler + events: + - http: + path: api/dnssec + method: get + features: + handler: api/features.handler + events: + - http: + path: api/features + method: get + firewall: + handler: api/firewall.handler + events: + - http: + path: api/firewall + method: get + getIp: + handler: api/get-ip.handler + events: + - http: + path: api/get-ip + method: get + headers: + handler: api/headers.handler + events: + - http: + path: api/headers + method: get hsts: handler: api/hsts.handler events: - http: path: api/hsts method: get + httpSecurity: + handler: api/http-security.handler + events: + - http: + path: api/http-security + method: get + legacyRank: + handler: api/legacy-rank.handler + events: + - http: + path: api/legacy-rank + method: get + linkedPages: + handler: api/linked-pages.handler + events: + - http: + path: api/linked-pages + method: get + mailConfig: + handler: api/mail-config.handler + events: + - http: + path: api/mail-config + method: get + ports: + handler: api/ports.handler + events: + - http: + path: api/ports + method: get + quality: + handler: api/quality.handler + events: + - http: + path: api/quality + method: get + rank: + handler: api/rank.handler + events: + - http: + path: api/rank + method: get redirects: handler: api/redirects.handler events: - http: path: api/redirects method: get + robotsTxt: + handler: api/robots-txt.handler + events: + - http: + path: api/robots-txt + method: get + screenshot: + handler: api/screenshot.handler + events: + - http: + path: api/screenshot + method: get + securityTxt: + handler: api/security-txt.handler + events: + - http: + path: api/security-txt + method: get + sitemap: + handler: api/sitemap.handler + events: + - http: + path: api/sitemap + method: get socialTags: handler: api/social-tags.handler events: - http: path: api/social-tags method: get + ssl: + handler: api/ssl.handler + events: + - http: + path: api/ssl + method: get + status: + handler: api/status.handler + events: + - http: + path: api/status + method: get + techStack: + handler: api/tech-stack.handler + events: + - http: + path: api/tech-stack + method: get + threats: + handler: api/threats.handler + events: + - http: + path: api/threats + method: get + tls: + handler: api/tls.handler + events: + - http: + path: api/tls + method: get + traceRoute: + handler: api/trace-route.handler + events: + - http: + path: api/trace-route + method: get txtRecords: handler: api/txt-records.handler events: - http: path: api/txt-records method: get + whois: + handler: api/whois.handler + events: + - http: + path: api/whois + method: get plugins: - # - serverless-webpack - - serverless-domain-manager - - serverless-offline + - serverless-webpack + # - serverless-domain-manager + # - serverless-offline custom: webpack: webpackConfig: 'api/_common/aws-webpack.config.js' - includeModules: true + includeModules: false + packagerOptions: + noInstall: true - customDomain: - domainName: example.com - basePath: 'api' - stage: ${self:provider.stage} - createRoute53Record: true + # customDomain: + # domainName: example.com + # basePath: 'api' + # stage: ${self:provider.stage} + # createRoute53Record: true - serverless-offline: - prefix: '' - httpPort: 3000 + # serverless-offline: + # prefix: '' + # httpPort: 3000