@cumulus/deployment
Version:
Deployment templates for cumulus
335 lines (288 loc) • 9.05 kB
YAML
default:
prefix: change-me-cumulus
stackName: '{{prefix}}'
prefixNoDash: ChangeMeCumulus
dbStackName: '{{prefix}}-db'
urs_url: https://uat.urs.earthdata.nasa.gov/
cmaDir: '/opt/'
non_complete_execution_payload_timeout: 30 ## days
complete_execution_payload_timeout: 10 ## days
complete_execution_payload_disable: false
non_complete_execution_payload_disable: false
oauth:
provider: earthdata
userGroup: N/A
samlConfig:
entityID: 'YourEntityId'
assertionConsumerService: 'https://example.com/saml/auth'
idpLogin: 'https://example.gov/affwebservices/public/saml2sso'
launchpadMetadataPath: 's3://{{buckets.internal.name}}/{{prefix}}/launchpad/launchpad-sbx-metadata.xml'
## lambda function that returns temporary credentials
sts_credentials_lambda: gsfc-ngap-sh-s3-sts-get-keys
api_lambda_memory: 512
repo_owner: nasa
message_adapter_repo: cumulus-message-adapter
message_adapter_filename: cumulus-message-adapter.zip
customCompilation: true
injectWorkflowLambdaAliases: true
DLQDefaultTimeout: 60
DLQDefaultMessageRetentionPeriod: 1209600 ## 14 days, the maximum currently allowed for SQS
processDefaultDeadLetterQueues: true
deployDistributionApi: false
nested_templates:
CumulusApiDistribution:
cfFile: node_modules/@cumulus/deployment/app/cumulus_api.template.yml
configFile: node_modules/@cumulus/deployment/app/cumulus_api_distribution.config.yml
CumulusApiBackend:
cfFile: node_modules/@cumulus/deployment/app/cumulus_api.template.yml
configFile: node_modules/@cumulus/deployment/app/cumulus_api_backend.config.yml
WorkflowLambdaVersions:
cfFile: node_modules/@cumulus/deployment/app/workflow_lambda_versions.template.yml
configFile: node_modules/@cumulus/deployment/app/workflow_lambda_versions.config.yml
# if not specified the value of the apigatewy backend endpoint is used
# api_backend_url: https://apigateway-url-to-api-backend/
# if not specified the value of the apigateway dist url is used
# api_distribution_url: https://apigateway-url-to-distribution-app/
params:
- name: CmrPassword
value: '{{CMR_PASSWORD}}' # this has to be set in .env
- name: LaunchpadPassphrase
value: '{{LAUNCHPAD_PASSPHRASE}}' # set in .env if needed
shared_data_bucket: 'cumulus-data-shared'
system_bucket: '{{buckets.internal.name}}'
buckets:
internal:
name: change-me
type: internal
private:
name: change-me
type: private
protected:
name: change-me
type: protected
public:
name: change-me
type: public
iams:
ecsRoleArn: 'arn:aws:iam::{{AWS_ACCOUNT_ID}}:role/{{prefix}}-ecs'
lambdaApiGatewayRoleArn: 'arn:aws:iam::{{AWS_ACCOUNT_ID}}:role/{{prefix}}-lambda-api-gateway'
lambdaProcessingRoleArn: 'arn:aws:iam::{{AWS_ACCOUNT_ID}}:role/{{prefix}}-lambda-processing'
stepRoleArn: 'arn:aws:iam::{{AWS_ACCOUNT_ID}}:role/{{prefix}}-steprole'
instanceProfile: 'arn:aws:iam::{{AWS_ACCOUNT_ID}}:instance-profile/{{prefix}}-ecs'
distributionRoleArn: 'arn:aws:iam::{{AWS_ACCOUNT_ID}}:role/{{prefix}}-distribution-api-lambda'
scalingRoleArn: 'arn:aws:iam::{{AWS_ACCOUNT_ID}}:role/{{prefix}}-scaling-role'
migrationRoleArn: 'arn:aws:iam::{{AWS_ACCOUNT_ID}}:role/{{prefix}}-migration-processing'
cmr:
oauthProvider: earthdata
username: CmrUser
provider: CUMULUS
clientId: CUMULUS
password: cmrPassword
cmrEnvironment: UAT
cmrLimit: 100
cmrPageSize: 50
launchpad:
api: launchpadApi
certificate: launchpad.pfx
passphrase: launchpadPassphrase
ems:
provider: CUMULUS
host: change-ems-host
port: 22
path: /
username: cumulus
privateKey: ems-private.pem
dataSource: UAT
submitReport: false
retentionInDays: 30
# this whole section has to be updated in each deployment section
vpc:
vpcId: '{{VPC_ID}}' # this has to be set in .env
subnets:
- '{{AWS_SUBNET}}' # this has to be set in .env
securityGroup: '{{SECURITY_GROUP}}'
ecs:
restartTasksOnDeploy: false
container_stop_timeout: 2m
amiid: ami-03e7dd4efa9b91eda
instanceType: change-ecs-instanceType
volumeSize: 50
availabilityZone: 'us-east-1b'
minInstances: 1
desiredInstances: 1
maxInstances: 2
clusterAutoscaling:
scaleInThresholdPercent: 25
scaleInAdjustmentPercent: -5
scaleOutThresholdPercent: 75
scaleOutAdjustmentPercent: 10
tasks:
AsyncOperation:
image: cumuluss/async-operation:26
cpu: 400
memory: 700
count: 1
envs:
AWS_REGION:
function: Fn::Sub
value: '${AWS::Region}'
docker:
# Allowed registry values are 'dockerhub' and 'ecr'
registry: dockerhub
storageDriver: devicemapper
es:
name: es5vpc
elasticSearchMapping: 8
# defining the APIs. Each item will include a separate endpoint
apiStage: dev
logToSharedDestination:
dynamos: !!files ['node_modules/@cumulus/api/config/tables.yml']
dynamo2ElasticSearch:
batchSize: 10
startingPosition: TRIM_HORIZON
lambda: dbIndexer
tables:
- CollectionsTable
- RulesTable
- ProvidersTable
- GranulesTable
- PdrsTable
- ExecutionsTable
# set to true to activate pointInTime on all tables
enablePointInTime: false
AutoScalingPolicyConfiguration:
targetValue: 30
scaleInCooldown: 0
scaleOutCooldown: 0
sns:
# This topic receives errored kinesis messages and tries them again.
kinesisFallback:
subscriptions:
lambda:
endpoint:
function: Fn::GetAtt
array:
- fallbackConsumerLambdaFunction
- Arn
protocol: lambda
reportExecutions:
subscriptions:
lambda:
endpoint:
function: Fn::GetAtt
array:
- reportExecutionsLambdaFunction
- Arn
protocol: lambda
reportGranules:
subscriptions:
lambda:
endpoint:
function: Fn::GetAtt
array:
- reportGranulesLambdaFunction
- Arn
protocol: lambda
reportPdrs:
subscriptions:
lambda:
endpoint:
function: Fn::GetAtt
array:
- reportPdrsLambdaFunction
- Arn
protocol: lambda
backgroundQueueName: backgroundProcessing
sqs_consumer_rate: 500
sqs:
startSF:
visibilityTimeout: 60
retry: 30
consumer:
- lambda: sqs2sf
schedule: rate(1 minute)
messageLimit: '{{sqs_consumer_rate}}'
state: ENABLED
backgroundProcessing:
visibilityTimeout: 60
retry: 30
maxExecutions: 5
consumer:
- lambda: sqs2sfThrottle
schedule: rate(1 minute)
messageLimit: '{{sqs_consumer_rate}}'
state: ENABLED
triggerLambdaFailure:
MessageRetentionPeriod: 1209600
visibilityTimeout: 60
kinesisFailure:
visibilityTimeout: 20
rules:
dailyEmsProductMetadataReport:
schedule: cron(0 4 * * ? *)
state: ENABLED
targets:
- lambda: EmsProductMetadataReport
dailyEmsIngestReport:
# run at 5:00am GMT daily
schedule: cron(0 5 * * ? *)
state: ENABLED
targets:
- lambda: EmsIngestReport
dailyEmsDistributionReport:
schedule: cron(0 8 * * ? *)
state: ENABLED
targets:
- lambda: EmsDistributionReport
dailyExecutionPayloadCleanup:
# run at 0400 GMT daily
schedule: cron(0 4 * * ? *)
state: ENABLED
targets:
- lambda: cleanExecutions
sfSemaphoreDown:
eventPattern:
source:
- aws.states
detail-type:
- "Step Functions Execution Status Change"
detail:
status:
- "ABORTED"
- "FAILED"
- "SUCCEEDED"
- "TIMED_OUT"
state: ENABLED
targets:
- lambda: sfSemaphoreDown
publishReports:
eventPattern:
source:
- aws.states
detail-type:
- "Step Functions Execution Status Change"
state: ENABLED
targets:
- lambda: publishReports
sqsMessageConsumer:
schedule: rate(1 minute)
state: ENABLED
targets:
- lambda: sqsMessageConsumer
input:
messageLimit: '{{sqs_consumer_rate}}'
timeLimit: 60
useWorkflowLambdaVersions: true
stepFunctions: !!files ['workflows.yml']
lambdas: !!files [
'lambdas.yml',
'node_modules/@cumulus/api/config/lambdas.yml',
'node_modules/@cumulus/api/config/workflowLambdas.yml'
]
workflowLambdas: !!files [
'lambdas.yml',
'node_modules/@cumulus/api/config/workflowLambdas.yml'
]
dashboard: !!files [
'node_modules/@cumulus/deployment/app/cloudwatchDashboard.yml'
]