Deploy CUMULUS on AWS

NASA Cumulus deployment on AWS is very complex and error-prone. It is also expensive because it generates a huge amount of CloudTrail logs. This document explains common misstep

Step 1

  • Check out Source Codes
    • git clone https://github.com/nasa/cumulus.github
    • git pull
    • cd cumulus/example

Step 2

  • Setup node environment
    • . ~/.bash_profile
    • nvm use
    • npm update -g
    • npm install, This will modify package-lock.json

    • ash_profile should have the following: export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion Related articles

Step 3

  • Copy app/.env.sample to .env and edit app/.env.

Step 4

  • Edit app/config.yml
  • Check S3 Bucket Names for IAM role
    • Click IAM
    • Click a role that starts with sdt-cumulus-*. For example, sdt-cumulus-lambda-api-gateway
    • Expand a Policy.
    • Click S3.
    • Click ListBucket.
  • Modify buckets: section to match the buckets that are specified in IAM roles.
  • Set EBS volume in ElasticSearch
    • The file that you need to edit is node_modules/@cumulus/deployment/app/config.yml for permanent change or your own app/config.yml.
    • Edit es:volumeSize: 10.
    • See [2] for additional configuration tip.

    Volume size must be between 10 and 35 for t2.small.elasticsearch instance type and elasticsearch version 5.3 (Service: AWSElasticsearch; Status Code: 409; Error Code: LimitExceededException; Request ID: 052cf8de-5252-11e9-8b96-f7c2339e0758) es: null in config.yml will disable ElasticSearch.