service: web-check-api

provider:
  name: aws
  runtime: nodejs14.x
  region: us-east-1
  # environment:
  #   GOOGLE_CLOUD_API_KEY: ${ssm:GOOGLE_CLOUD_API_KEY~true, ''}
  #   TORRENT_IP_API_KEY: ${ssm:TORRENT_IP_API_KEY~true, ''}
  #   SECURITY_TRAILS_API_KEY: ${ssm:SECURITY_TRAILS_API_KEY~true, ''}
  #   BUILT_WITH_API_KEY: ${ssm:BUILT_WITH_API_KEY~true, ''}
  #   URL_SCAN_API_KEY: ${ssm:URL_SCAN_API_KEY~true, ''}
  #   TRANCO_USERNAME: ${ssm:TRANCO_USERNAME~true, ''}
  #   TRANCO_API_KEY: ${ssm:TRANCO_API_KEY~true, ''}
  #   CLOUDMERSIVE_API_KEY: ${ssm:CLOUDMERSIVE_API_KEY~true, ''}
  #   CHROME_PATH: ${ssm:CHROME_PATH~true, ''}
  #   API_TIMEOUT_LIMIT: ${ssm:API_TIMEOUT_LIMIT~true, ''}
  #   API_CORS_ORIGIN: ${ssm:API_CORS_ORIGIN~true, ''}
  iamRoleStatements:
    - Effect: Allow
      Action:
        - ssm:GetParameter
      Resource:
        - arn:aws:ssm:us-east-1:${env:AWS_ACCOUNT_ID}:parameter/GOOGLE_CLOUD_API_KEY
        - arn:aws:ssm:us-east-1:${env:AWS_ACCOUNT_ID}:parameter/TORRENT_IP_API_KEY
        - arn:aws:ssm:us-east-1:${env:AWS_ACCOUNT_ID}:parameter/SECURITY_TRAILS_API_KEY
        - arn:aws:ssm:us-east-1:${env:AWS_ACCOUNT_ID}:parameter/BUILT_WITH_API_KEY
        - arn:aws:ssm:us-east-1:${env:AWS_ACCOUNT_ID}:parameter/URL_SCAN_API_KEY
        - arn:aws:ssm:us-east-1:${env:AWS_ACCOUNT_ID}:parameter/TRANCO_USERNAME
        - arn:aws:ssm:us-east-1:${env:AWS_ACCOUNT_ID}:parameter/TRANCO_API_KEY
        - arn:aws:ssm:us-east-1:${env:AWS_ACCOUNT_ID}:parameter/CLOUDMERSIVE_API_KEY
        - arn:aws:ssm:us-east-1:${env:AWS_ACCOUNT_ID}:parameter/CHROME_PATH
        - arn:aws:ssm:us-east-1:${env:AWS_ACCOUNT_ID}:parameter/API_TIMEOUT_LIMIT
        - arn:aws:ssm:us-east-1:${env:AWS_ACCOUNT_ID}:parameter/API_CORS_ORIGIN
functions:
  archives:
    handler: api/archives.handler
    events:
      - http:
          path: api/archives
          method: get
  blockLists:
    handler: api/block-lists.handler
    events:
      - http:
          path: api/block-lists
          method: get
  carbon:
    handler: api/carbon.handler
    events:
      - http:
          path: api/carbon
          method: get
  cookies:
    handler: api/cookies.handler
    events:
      - http:
          path: api/cookies
          method: get
  dnsServer:
    handler: api/dns-server.handler
    events:
      - http:
          path: api/dns-server
          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

custom:
  webpack:
    webpackConfig: 'api/_common/aws-webpack.config.js'
    includeModules: false
    packagerOptions:
      noInstall: true 

  # customDomain:
  #   domainName: example.com
  #   basePath: 'api'
  #   stage: ${self:provider.stage}
  #   createRoute53Record: true

  # serverless-offline:
  #   prefix: ''
  #   httpPort: 3000
