@cumulus/logger
Advanced tools
Changelog
[v1.21.0] 2020-03-30
messageConsumer
for sns
and kinesis
-type rules now fetches
the collection information from the message. You should ensure that your rule's collection
name and version match what is in the message for these ingest messages to be processed.
If no matching rule is found, an error will be thrown and logged in the
messageConsumer
Lambda function's log group.CUMULUS-1629`
PrivateApiLambda()
which is configured to not require authentication. This Lambda is not connected to an API gateway@cumulus/api-client
with functions for use by workflow lambdas to call the API when neededCUMULUS-1732
PythonReferenceSpec
) to test cumulus-message-adapter-python
and cumulus-process-py
integration.CUMULUS-1795
deploy_to_ngap
flag is truemessageConsumer
for sns
and kinesis
-type rules now fetches the collection
information from the message.granulesApi
, rulesApi
, emsApi
, executionsAPI
from @cumulus/integration-test/api
in favor of code moved to @cumulus/api-client
@cumulus/api/models/Granule.createGranulesFromSns()
@cumulus/api/models/Granule.removeGranuleFromCmr()
@cumulus/common/aws
:
apigateway()
buildS3Uri()
calculateS3ObjectChecksum()
cf()
cloudwatch()
cloudwatchevents()
cloudwatchlogs()
createAndWaitForDynamoDbTable()
createQueue()
deleteSQSMessage()
describeCfStackResources()
downloadS3File()
downloadS3Files()
DynamoDbSearchQueue
classdynamodbstreams()
ec2()
ecs()
fileExists()
findResourceArn()
fromSfnExecutionName()
getFileBucketAndKey()
getJsonS3Object()
getQueueUrl()
getObjectSize()
getS3ObjectReadStream()
getSecretString()
getStateMachineArn()
headObject()
isThrottlingException()
kinesis()
lambda()
listS3Objects()
promiseS3Upload()
publishSnsMessage()
putJsonS3Object()
receiveSQSMessages()
s3CopyObject()
s3GetObjectTagging()
s3Join()
S3ListObjectsV2Queue
classs3TagSetToQueryString()
s3PutObjectTagging()
secretsManager()
sendSQSMessage()
sfn()
sns()
sqs()
sqsQueueExists()
toSfnExecutionName()
uploadS3FileStream()
uploadS3Files()
validateS3ObjectChecksum()
@cumulus/common/CloudFormationGateway
class@cumulus/common/concurrency/Mutex
class@cumulus/common/errors
@cumulus/common/sftp
@cumulus/common/string.unicodeEscape
@cumulus/cmrjs/cmr-utils.getGranuleId()
@cumulus/cmrjs/cmr-utils.getCmrFiles()
@cumulus/cmrjs/cmr/CMR
class@cumulus/cmrjs/cmr/CMRSearchConceptQueue
class@cumulus/cmrjs/utils.getHost()
@cumulus/cmrjs/utils.getIp()
@cumulus/cmrjs/utils.hostId()
@cumulus/cmrjs/utils/ummVersion()
@cumulus/cmrjs/utils.updateToken()
@cumulus/cmrjs/utils.validateUMMG()
@cumulus/ingest/aws.getEndpoint()
@cumulus/ingest/aws.getExecutionUrl()
@cumulus/ingest/aws/invoke()
@cumulus/ingest/aws/CloudWatch
class@cumulus/ingest/aws/ECS
class@cumulus/ingest/aws/Events
class@cumulus/ingest/aws/SQS
class@cumulus/ingest/aws/StepFunction
class@cumulus/ingest/util.normalizeProviderPath()
@cumulus/integration-tests/index.listCollections()
@cumulus/integration-tests/index.listProviders()
@cumulus/integration-tests/index.rulesList()
@cumulus/integration-tests/api/api.addCollectionApi()
Changelog
[v1.20.0] 2020-03-12
record
and the type of event under event
. Messages with deleted
events will have the record that was deleted with a deletedAt
timestamp. Options for event
are Create | Update | Delete
deploy_to_ngap
is now a required variable for the tf-modules/cumulus
module. For those deploying to NGAP environments, this variable should always be set to true
.CUMULUS-1739 - You can now exclude Elasticsearch from your tf-modules/data-persistence
deployment (via include_elasticsearch = false
) and your tf-modules/cumulus
module will still deploy successfully.
CUMULUS-1769 - If you set deploy_to_ngap = true
for the tf-modules/archive
Terraform module, you can only deploy your archive API gateway as PRIVATE
, not EDGE
.
@cumulus/aws-client/S3.getS3ObjectReadStreamAsync()
to deal with S3 eventual consistency issues by checking for the existence an S3 object with retries before getting a readable stream for that object.deploy_to_ngap
boolean variable for the tf-modules/cumulus
and tf-modules/archive
Terraform modules. This variable is required. For those deploying to NGAP environments, this variable should always be set to true
.AccessToken.get()
now enforces strongly consistent reads from DynamoDBtf-modules/data-persistence
to make Elasticsearch alarm resources and outputs conditional on the include_elasticsearch
variable@cumulus/aws-client/S3.getObjectSize
to include automatic retries for any failures from S3.headObject
@cumulus/api/lib/DistributionEvent.remoteIP()
to parse the IP address in an S3 access log from the A-sourceip
query parameter if present, otherwise fallback to the original parsing behavior.stats/summary
endpoint reports the distinct collections for the number of granules reportedCUMULUS-1739 - Fixed the tf-modules/cumulus
and tf-modules/archive
modules to make these Elasticsearch variables truly optional:
elasticsearch_domain_arn
elasticsearch_hostname
elasticsearch_security_group_id
CUMULUS-1768
stats/
endpoint so that data is correctly filtered by timestamp and processingTime
is calculated correctly.CUMULUS-1769
tf-modules/archive
Terraform module, the lifecycle
block ignoring changes to the policy
of the archive API gateway is now only enforced if deploy_to_ngap = true
. This fixes a bug where users deploying outside of NGAP could not update their API gateway's resource policy when going from PRIVATE
to EDGE
, preventing their API from being accessed publicly.CUMULUS-1775
stats/histogram
and stats/average
. All advanced stats needs should be acquired from Cloud Metrics or similarly configured ELK stack.Changelog
[v1.19.0] 2020-02-28
CUMULUS-1736
@cumulus/discover-granules
task now sets the dataType
of discovered
granules based on the name
of the configured collection, not the
dataType
.@cumulus/discover-granules
task now requires that
collections contain a version
.@cumulus/sync-granule
task will set the dataType
and version
of a
granule based on the configured collection if those fields are not already
set on the granule. Previously it was using the dataType
field of the
configured collection, then falling back to the name
field of the
collection. This update will just use the name
field of the collection to
set the dataType
field of the granule.CUMULUS-1446
@cumulus/integration-tests/api/executions.getExecution()
function to parse the response and return the execution, rather than return
the full API response.CUMULUS-1672
cumulus
Terraform module in previous releases set a
Deployment = var.prefix
tag on all resources that it managed. In this
release, a tags
input variable has been added to the cumulus
Terraform
module to allow resource tagging to be customized. No default tags will be
applied to Cumulus-managed resources. To replicate the previous behavior,
set tags = { Deployment: var.prefix }
as an input variable for the
cumulus
Terraform module.CUMULUS-1684 Migration Instructions
<prefix>-ProviderSecretsMigration
, which will re-encrypt existing
provider credentials to use KMS. After this release has been deployed, you
will need to manually invoke that Lambda function using either the AWS CLI
or AWS Console. It should only need to be successfully run once.<prefix>-VerifyProviderSecretsMigration
Lambda function as part of the
deployment, which will cause the deployment to fail if the migration
Lambda has not been run.CUMULUS-1718
@cumulus/sf-sns-report
task for reporting mid-workflow updates has been retired.
This task was used as the PdrStatusReport
task in our ParsePdr example workflow.
If you have a ParsePdr or other workflow using this task, use @cumulus/sf-sqs-report
instead.
Trying to deploy the old task will result in an error as the cumulus module no longer exports sf_sns_report_task
."Resource": "${module.cumulus.sf_sns_report_task.task_arn}"
to
"Resource": "${module.cumulus.sf_sqs_report_task.task_arn}"
CUMULUS-1755
thin_egress_jwt_secret_name
variable for the tf-modules/cumulus
Terraform module is now required. This variable is passed on to the Thin Egress App in tf-modules/distribution/main.tf
, which uses the keys stored in the secret to sign JWTs. See the Thin Egress App documentation on how to create a value for this secret.CUMULUS-1446
@cumulus/common/FileUtils.readJsonFile()
function@cumulus/common/FileUtils.readTextFile()
function@cumulus/integration-tests/api/collections.createCollection()
function@cumulus/integration-tests/api/collections.deleteCollection()
function@cumulus/integration-tests/api/collections.getCollection()
function@cumulus/integration-tests/api/providers.getProvider()
function@cumulus/integration-tests/index.getExecutionOutput()
function@cumulus/integration-tests/index.loadCollection()
function@cumulus/integration-tests/index.loadProvider()
function@cumulus/integration-tests/index.readJsonFilesFromDir()
functionCUMULUS-1672
tags
input variable to the archive
Terraform moduletags
input variable to the cumulus
Terraform moduletags
input variable to the cumulus_ecs_service
Terraform moduletags
input variable to the data-persistence
Terraform moduletags
input variable to the distribution
Terraform moduletags
input variable to the ingest
Terraform moduletags
input variable to the s3-replicator
Terraform moduleCUMULUS-1707
CUMULUS-1684
@cumulus/aws-client/KMS
library of KMS-related functions@cumulus/aws-client/S3.getTextObject()
@cumulus/sftp-client
packageProviderSecretsMigration
Lambda functionVerifyProviderSecretsMigration
Lambda functionCUMULUS-1548
CUMULUS-1702
CUMULUS-1459
CUMULUS-1717
@cumulus/aws-client/deleteAndWaitForDynamoDbTableNotExists
, which
deletes a DynamoDB table and waits to ensure the table no longer existspublishGranules
Lambda to handle publishing granule messages to SNS when granule records are written to DynamoDB@cumulus/api/models/Granule.storeGranulesFromCumulusMessage
to store granules from a Cumulus message to DynamoDBCUMULUS-1718
@cumulus/sf-sqs-report
task to allow mid-workflow reporting updates.stepfunction_event_reporter_queue_url
and sf_sqs_report_task
outputs to the cumulus
module.publishPdrs
Lambda to handle publishing PDR messages to SNS when PDR records are written to DynamoDB.@cumulus/api/models/Pdr.storePdrFromCumulusMessage
to store PDRs from a Cumulus message to DynamoDB.@cumulus/aws-client/parseSQSMessageBody
to parse an SQS message body string into an object.Ability to set custom backend API url in the archive module
api_url
definition in tf-modules/cumulus/archive.tf
archive_api_url
variable in tf-modules/cumulus/variables.tf
CUMULUS-1741
elasticsearch_security_group_ids
variable to the
data-persistence
Terraform module to allow additional security groups to
be assigned to the Elasticsearch Domain.CUMULUS-1752
@cumulus/integration-tests/api/distribution.invokeTEADistributionLambda
to simulate a request to the Thin Egress App by invoking the Lambda and getting a response payload.@cumulus/integration-tests/api/distribution.getTEARequestHeaders
to generate necessary request headers for a request to the Thin Egress App@cumulus/integration-tests/api/distribution.getTEADistributionApiFileStream
to get a response stream for a file served by Thin Egress App@cumulus/integration-tests/api/distribution.getTEADistributionApiRedirect
to get a redirect response from the Thin Egress AppCUMULUS-1755
@cumulus/aws-client/CloudFormation.describeCfStack()
to describe a Cloudformation stack@cumulus/aws-client/CloudFormation.getCfStackParameterValues()
to get multiple parameter values for a Cloudformation stackCUMULUS-1725
granuleFilesCacheUpdater
.CUMULUS-1736
collections
model in the API package now determines the name of a
collection based on the name
property, rather than using dataType
and
then falling back to name
.@cumulus/integration-tests.loadCollection()
function no longer appends
the postfix to the end of the collection's dataType
.@cumulus/integration-tests.addCollections()
function no longer appends
the postfix to the end of the collection's dataType
.CUMULUS-1672
retryOptions
parameter to the @cumulus/aws-client/S3.headObject
function, which will retry if the object being queried does not exist.CUMULUS-1446
@cumulus/integration-tests/api.addCollectionApi()
function as
deprecated@cumulus/integration-tests/index.listCollections()
function as
deprecated@cumulus/integration-tests/index.listProviders()
function as
deprecated@cumulus/integration-tests/index.rulesList()
function as
deprecatedCUMULUS-1672
cumulus
module defaulted to setting a
Deployment = var.prefix
tag on all resources that it managed. In this
release, the cumulus
module will now accept a tags
input variable that
defines the tags to be assigned to all resources that it manages.data-persistence
module defaulted to setting a
Deployment = var.prefix
tag on all resources that it managed. In this
release, the data-persistence
module will now accept a tags
input
variable that defines the tags to be assigned to all resources that it
manages.distribution
module defaulted to setting a
Deployment = var.prefix
tag on all resources that it managed. In this
release, the distribution
module will now accept a tags
input variable
that defines the tags to be assigned to all resources that it manages.ingest
module defaulted to setting a
Deployment = var.prefix
tag on all resources that it managed. In this
release, the ingest
module will now accept a tags
input variable that
defines the tags to be assigned to all resources that it manages.s3-replicator
module defaulted to setting a
Deployment = var.prefix
tag on all resources that it managed. In this
release, the s3-replicator
module will now accept a tags
input variable
that defines the tags to be assigned to all resources that it manages.CUMULUS-1684
CUMULUS-1717
cwSfExecutionEventToDb
Lambda to cwSfEventToDbRecords
cwSfEventToDbRecords
to write granule records to DynamoDB from the incoming Cumulus messageCUMULUS-1718
cwSfEventToDbRecords
to sfEventSqsToDbRecords
due to architecture change to being a consumer of an SQS queue of Step Function Cloudwatch events.sfEventSqsToDbRecords
to write PDR records to DynamoDB from the incoming Cumulus messagedata-cookbooks/sns.md
to data-cookbooks/ingest-notifications.md
and updated it to reflect recent changes.CUMULUS-1748
CUMULUS-1752
@cumulus/api/lib/DistributionEvent.js
DistributionEvent
to properly parse S3 access logs generated by requests from the Thin Egress AppCUMULUS-1753 - Changes to @cumulus/ingest/HttpProviderClient.js
:
HttpProviderClient.list()
that was used to return only files with an extension between 1 and 4 characters long. HttpProviderClient.list()
will now return all files linked from the HTTP provider host.CUMULUS-1755
tf-modules/distribution/main.tf
to build 61. See the release notes.CUMULUS-1757
CUMULUS-1684
@cumulus/common/key-pair-provider/S3KeyPairProvider
@cumulus/common/key-pair-provider/S3KeyPairProvider.encrypt()
@cumulus/common/key-pair-provider/S3KeyPairProvider.decrypt()
@cumulus/common/kms/KMS
@cumulus/common/kms/KMS.encrypt()
@cumulus/common/kms/KMS.decrypt()
@cumulus/common/sftp.Sftp
CUMULUS-1717
@cumulus/api/models/Granule.createGranulesFromSns
CUMULUS-1718
@cumulus/sf-sns-report
.
@cumulus/sf-sqs-report
instead. This was done because there is no longer an SNS topic to which to publish, and no consumers to listen to it.CUMULUS-1748
@cumulus/ingest/util.normalizeProviderPath
CUMULUS-1752
@cumulus/integration-tests/api/distribution.getDistributionApiFileStream
@cumulus/integration-tests/api/distribution.getDistributionApiRedirect
@cumulus/integration-tests/api/distribution.invokeApiDistributionLambda
CUMULUS-1684
CUMULUS-1768
stats/histogram
and stats/average
. All advanced stats needs should be acquired from Cloud Metrics or similarly configured ELK stack.Fix default values for urs_url in variables.tf files
/
from default urs_url
values.CUMULUS-1610 - Add the Elasticsearch security group to the EC2 security groups
CUMULUS-1740 - cumulus_meta.workflow_start_time
is now set in Cumulus
messages
CUMULUS-1753 - Fixed @cumulus/ingest/HttpProviderClient.js
to properly handle HTTP providers with:
<a>
) per line of source code<A>
)<a href="/path/to/file.txt">
). These files will be returned from HTTP file discovery as the file name only (e.g. file.txt
).CUMULUS-1768
@cumulus/api
to send back stats for the correct typeChangelog
[v1.18.0] 2020-02-03
CUMULUS-1686
ecs_cluster_instance_image_id
is now a required variable of the cumulus
module, instead of optional.CUMULUS-1698
saml_launchpad_metadata_path
to saml_launchpad_metadata_url
in the tf-modules/cumulus
Terraform module.CUMULUS-1703
forceDownload
option from the sync-granule
tasks's config@cumulus/ingest/granule.Discover
class@cumulus/ingest/granule.Granule
class@cumulus/ingest/pdr.Discover
class@cumulus/ingest/pdr.Granule
class@cumulus/ingest/parse-pdr.parsePdr
functionCUMULUS-1040
@cumulus/aws-client
package to provide utilities for working with AWS services and the Node.js AWS SDK@cumulus/errors
package which exports error classes for use in Cumulus workflow code@cumulus/integration-tests/sfnStep
to provide utilities for parsing step function execution historiesCUMULUS-1102
addCollections
, addExecutions
, addGranules
, addPdrs
, addProviders
, and addRules
.eraseDataStack
function to local API server code allowing resetting of local datastack for testing (ES and DynamoDB).CUMULUS-1697
@cumulus/tf-inventory
package that provides command line utilities for managing Terraform resources in your AWS accountCUMULUS-1703
@cumulus/aws-client/S3.createBucket
function@cumulus/aws-client/S3.putFile
function@cumulus/common/string.isNonEmptyString
function@cumulus/ingest/FtpProviderClient
class@cumulus/ingest/HttpProviderClient
class@cumulus/ingest/S3ProviderClient
class@cumulus/ingest/SftpProviderClient
class@cumulus/ingest/providerClientUtils.buildProviderClient
function@cumulus/ingest/providerClientUtils.fetchTextFile
functionCUMULUS-1731
thin_egress_cookie_domain
- Valid domain for Thin Egress App cookiethin_egress_domain_cert_arn
- Certificate Manager SSL Cert ARN for Thin
Egress App if deployed outside NGAP/CloudFrontthin_egress_download_role_in_region_arn
- ARN for reading of Thin Egress
App data buckets for in-region requeststhin_egress_jwt_algo
- Algorithm with which to encode the Thin Egress
App JWT cookiethin_egress_jwt_secret_name
- Name of AWS secret where keys for the Thin
Egress App JWT encode/decode are storedthin_egress_lambda_code_dependency_archive_key
- Thin Egress App - S3
Key of packaged python modules for lambda dependency layerCUMULUS-1733
discovery-filtering
operator doc to document previously undocumented functionality.CUMULUS-1737
cumulus-test-cleanup
module to run a nightly cleanup on resources left over from the integration tests run from the example/spec
directory.CUMULUS-1102
@cumulus/api/auth/testAuth
to use JWT instead of random tokens.CUMULUS-1622
@cumulus/common/concurrency
and will be removed in a future release.CUMULUS-1686
ecs_cluster_instance_image_id
to be a required variable of the cumulus
module and removed the default value.
The default was not available across accounts and regions, nor outside of NGAP and therefore not particularly useful.CUMULUS-1688
@cumulus/aws.receiveSQSMessages
not to replace message.Body
with a parsed object. This behavior was undocumented and confusing as received messages appeared to contradict AWS docs that state message.Body
is always a string.sf_watcher
CloudWatch rule from cloudwatch-events.tf
with an EventSourceMapping on sqs2sf
mapped to the start_sf
SQS queue (in event-sources.tf
).sqs2sf
with an EventSourceMapping handler and unit test.CUMULUS-1698
saml_launchpad_metadata_path
to saml_launchpad_metadata_url
in the tf-modules/cumulus
Terraform module.@cumulus/api/launchpadSaml
to download launchpad IDP metadata from configured location when the metadata in s3 is not valid, and to work with updated IDP metadata and SAML response.CUMULUS-1731
CUMULUS-1664
dbIndexer
Lambda to remove hardcoded references to DynamoDB table names.CUMULUS-1733
process
config and output from PostToCmr as it was not required by the task nor downstream steps, and should still be in the output message's meta
regardless.@cumulus/common/CloudFormationGateway
-> @cumulus/aws-client/CloudFormationGateway
@cumulus/common/DynamoDb
-> @cumulus/aws-client/DynamoDb
@cumulus/common/errors
-> @cumulus/errors
@cumulus/common/StepFunctions
-> @cumulus/aws-client/StepFunctions
@cumulus/commmon/aws
(moved into @cumulus/aws-client
), except:
@cumulus/common/aws/isThrottlingException
-> @cumulus/errors/isThrottlingException
@cumulus/common/aws/improveStackTrace
(not deprecated)@cumulus/common/aws/retryOnThrottlingException
(not deprecated)@cumulus/common/sfnStep/SfnStep.parseStepMessage
-> @cumulus/integration-tests/sfnStep/SfnStep.parseStepMessage
@cumulus/common/sfnStep/ActivityStep
-> @cumulus/integration-tests/sfnStep/ActivityStep
@cumulus/common/sfnStep/LambdaStep
-> @cumulus/integration-tests/sfnStep/LambdaStep
@cumulus/common/string/unicodeEscape
-> @cumulus/aws-client/StepFunctions.unicodeEscape
@cumulus/common/util/setErrorStack
-> @cumulus/aws-client/util/setErrorStack
@cumulus/ingest/aws/invoke
-> @cumulus/aws-client/Lambda/invoke
@cumulus/ingest/aws/CloudWatch.bucketSize
@cumulus/ingest/aws/CloudWatch.cw
@cumulus/ingest/aws/ECS.ecs
@cumulus/ingest/aws/ECS
@cumulus/ingest/aws/Events.putEvent
-> @cumulus/aws-client/CloudwatchEvents.putEvent
@cumulus/ingest/aws/Events.deleteEvent
-> @cumulus/aws-client/CloudwatchEvents.deleteEvent
@cumulus/ingest/aws/Events.deleteTarget
-> @cumulus/aws-client/CloudwatchEvents.deleteTarget
@cumulus/ingest/aws/Events.putTarget
-> @cumulus/aws-client/CloudwatchEvents.putTarget
@cumulus/ingest/aws/SQS.attributes
-> @cumulus/aws-client/SQS.getQueueAttributes
@cumulus/ingest/aws/SQS.deleteMessage
-> @cumulus/aws-client/SQS.deleteSQSMessage
@cumulus/ingest/aws/SQS.deleteQueue
-> @cumulus/aws-client/SQS.deleteQueue
@cumulus/ingest/aws/SQS.getUrl
-> @cumulus/aws-client/SQS.getQueueUrlByName
@cumulus/ingest/aws/SQS.receiveMessage
-> @cumulus/aws-client/SQS.receiveSQSMessages
@cumulus/ingest/aws/SQS.sendMessage
-> @cumulus/aws-client/SQS.sendSQSMessage
@cumulus/ingest/aws/StepFunction.getExecutionStatus
-> @cumulus/aws-client/StepFunction.getExecutionStatus
@cumulus/ingest/aws/StepFunction.getExecutionUrl
-> @cumulus/aws-client/StepFunction.getExecutionUrl
Changelog
[v1.17.0] - 2019-12-31
@cumulus/cmrjs.publish2CMR
function expects that the value of its
creds.password
parameter is a plaintext password.cmr_password
environment
variable, the @cumulus/cmrjs.updateCMRMetadata
function now looks for an
environment variable called cmr_password_secret_name
and fetches the CMR
password from that secret in AWS Secrets Manager.@cumulus/post-to-cmr
task now expects a
config.cmr.passwordSecretName
value, rather than config.cmr.password
.
The CMR password will be fetched from that secret in AWS Secrets Manager.CUMULUS-630
/replays
endpoint to the operator API for triggering replays.Replay Kinesis Messages
documentation to Operator Docs.manualConsumer
lambda function to consume a Kinesis stream. Used by the replay AsyncOperation.CUMULUS-1687
/asyncOperations
description
and operationType
. operationType
can be one of the following. [Bulk Delete
, Bulk Granules
, ES Index
, Kinesis Replay
]CUMULUS-1626
CUMULUS-1498
Changelog
[v1.14.5] - 2019-12-30 - [BACKPORT]
Changelog
[v1.16.1] - 2019-12-6
Please note:
region
argument to the cumulus
Terraform module has been removed. You may see a warning or error if you have that variable populated.cumulus-message-adapter-js
version 1.0.10+cumulus-message-adapter-python
version 1.1.1+cumulus-message-adapter-java
version 1.2.11+data-persistence
module no longer manages the creation of an Elasticsearch service-linked role for deploying Elasticsearch to a VPC. Follow the deployment instructions on preparing your VPC for guidance on how to create the Elasticsearch service-linked role manually.distribution_api_gateway_stage
variable for the tf-modules/cumulus
Terraform module that will be used as the API gateway stage name used for the distribution API (Thin Egress App)urs_url
variable is now https://uat.urs.earthdata.nasa.gov/
in the tf-modules/cumulus
and tf-modules/archive
Terraform modules. So deploying the cumulus
module without a urs_url
variable set will integrate your Cumulus deployment with the UAT URS environment.CUMULUS-1563
custom_domain_name
variable to tf-modules/data-persistence
moduleCUMULUS-1654
@cumulus/common/execution-history
:
getStepExitedEvent()
returns the TaskStateExited
event in a workflow execution history after the given step completion/failure eventgetTaskExitedEventOutput()
returns the output message for a TaskStateExited
event in a workflow execution historyCUMULUS-1578
CUMULUS-1579
match
instead of term
. term
had been analyzing the terms and not supporting -
in the field values.CUMULUS-1619
@cumulus/logger
to display granules, parentArn, asyncOperationId, and stackName.cumulus-message-adapter-js
version 1.0.10+. Cumulus tasks updated to use this version.CUMULUS-1654
@cumulus/common/SfnStep.parseStepMessage()
to a static class methodCUMULUS-1641
meta.retries
and meta.visibilityTimeout
properties to sqs-type rule. To create sqs-type rule, you're required to configure a dead-letter queue on your queue.sqsMessageRemover
lambda which removes the message from SQS queue upon successful workflow execution.sqsMessageConsumer
lambda to not delete message from SQS queue, and to retry the SQS message for configured number of times.Removed create_service_linked_role
variable from tf-modules/data-persistence
module.
CUMULUS-1321
region
argument to the cumulus
Terraform module has been removedpublishReports
Lambda not including workflow execution error information for failed workflows with a single steptf-modules/cumulus
module so that the urs_url
variable is passed on to its invocation of the tf-modules/archive
moduleChangelog
[v1.16.0] - 2019-11-15
CUMULUS-1321
deploy_distribution_s3_credentials_endpoint
variable has been added to
the cumulus
Terraform module. If true, the NGAP-backed S3 credentials
endpoint will be added to the Thin Egress App's API. Default: trueCUMULUS-1544
/granules/bulk
endpoint to correctly query Elasticsearch when
granule ids are not provided.CUMULUS-1580
/granules/bulk
endpoint to @cumulus/api
to perform bulk actions on granules given either a list of granule ids or an Elasticsearch query and the workflow to perform.CUMULUS-1561
region
input variable from the s3_access_test
Terraform moduleaws_profile
and aws_region
input variables from the
s3-replicator
Terraform moduleCUMULUS-1639
NoSuchKey
response even if that object has been created. The
@cumulus/common/aws.getS3Object()
function has been updated to support
retries if a NoSuchKey
response is returned by S3. This behavior can be
enabled by passing a retryOptions
object to that function. Supported
values for that object can be found here:
https://github.com/tim-kos/node-retry#retryoperationoptionslogToSharedDestination
has been migrated to the Terraform deployment as log_api_gateway_to_cloudwatch
and will ONLY apply to egress lambdas.
Due to the differences in the Terraform deployment model, we cannot support a global log subscription toggle for a configurable subset of lambdas.
However, setting up your own log forwarding for a Lambda with Terraform is fairly simple, as you will only need to add SubscriptionFilters to your Terraform configuration, one per log group.
See the Terraform documentation for details on how to do this.
An empty FilterPattern ("") will capture all logs in a group.Changelog
[v1.15.0] - 2019-11-04
CUMULUS-1644 - When a workflow execution begins or ends, the workflow
payload is parsed and any new or updated PDRs or granules referenced in that
workflow are stored to the Cumulus archive. The defined interface says that a
PDR in payload.pdr
will be added to the archive, and any granules in
payload.granules
will also be added to the archive. In previous releases,
PDRs found in meta.pdr
and granules found in meta.input_granules
were also
added to the archive. This caused unexpected behavior and has been removed.
Only PDRs from payload.pdr
and granules from payload.granules
will now be
added to the Cumulus archive.
CUMULUS-1449 - Cumulus now uses a universal workflow template when
starting a workflow that contains general information specific to the
deployment, but not specific to the workflow. Workflow task configs must be
defined using AWS step function parameters. As part of this change,
CumulusConfig
has been retired and task configs must now be defined under
the cma.task_config
key in the Parameters section of a step function
definition.
Migration instructions:
NOTE: These instructions require the use of Cumulus Message Adapter v1.1.x+.
Please ensure you are using a compatible version before attempting to migrate
workflow configurations. When defining workflow steps, remove any
CumulusConfig
section, as shown below:
ParsePdr:
CumulusConfig:
provider: "{$.meta.provider}"
bucket: "{$.meta.buckets.internal.name}"
stack: "{$.meta.stack}"
Instead, use AWS Parameters to pass task_config
for the task directly into
the Cumulus Message Adapter:
ParsePdr:
Parameters:
cma:
event.$: "$"
task_config:
provider: "{$.meta.provider}"
bucket: "{$.meta.buckets.internal.name}"
stack: "{$.meta.stack}"
In this example, the cma
key is used to pass parameters to the message
adapter. Using task_config
in combination with event.$: '$'
allows the
message adapter to process task_config
as the config
passed to the Cumulus
task. See example/workflows/sips.yml
in the core repository for further
examples of how to set the Parameters.
Additionally, workflow configurations for the QueueGranules
and QueuePdrs
tasks need to be updated:
queue-pdrs
config changes:
parsePdrMessageTemplateUri
replaced with parsePdrWorkflow
, which is
the workflow name (i.e. top-level name in config.yml
, e.g. 'ParsePdr').internalBucket
and stackName
configs now required to look up
configuration from the deployment. Brings the task config in line with
that of queue-granules
.queue-granules
config change: ingestGranuleMessageTemplateUri
replaced
with ingestGranuleWorkflow
, which is the workflow name (e.g.
'IngestGranule').CUMULUS-1396 - Workflow steps at the beginning and end of a workflow
using the SfSnsReport
Lambda have now been deprecated (e.g. StartStatus
,
StopStatus
) and should be removed from your workflow definitions. These
steps were used for publishing ingest notifications and have been replaced by
an implementation using Cloudwatch events for Step Functions to trigger a
Lambda that publishes ingest notifications. For further detail on how ingest
notifications are published, see the notes below on CUMULUS-1394. For
examples of how to update your workflow definitions, see our
example workflow definitions.
CUMULUS-1470
AWS::ApplicationAutoScaling::ScalableTarget
,
AWS::ApplicationAutoScaling::ScalingPolicy
, and AWS::CloudWatch::Alarm
resources should be defined in a kes overrides file. See
this example
for an example.CUMULUS-1100
CUMULUS-1396
@cumulus/common/sfnStep
:
LambdaStep
- A class for retrieving and parsing input and output to Lambda steps in AWS Step FunctionsActivityStep
- A class for retrieving and parsing input and output to ECS activity steps in AWS Step FunctionsCUMULUS-1574
GET /token
endpoint for SAML authorization when cumulus is protected by Launchpad.
This lets a user retrieve a token by hand that can be presented to the API.CUMULUS-1625
sf_start_rate
variable to the ingest
Terraform module, equivalent to sqs_consumer_rate
in the old model, but will not be automatically applied to custom queues as that was.CUMULUS-1513
sqs
-type rule support in the Cumulus API @cumulus/api
sqsMessageConsumer
lambda which processes messages from the SQS queues configured in the sqs
rules.CUMULUS-1639
NoSuchKey
response even if that object has been created. The
@cumulus/common/aws.getS3Object()
function will now retry up to 10 times
if a NoSuchKey
response is returned by S3. This can behavior can be
overridden by passing { retries: 0 }
as the retryOptions
argument.CUMULUS-1449
queue-pdrs
& queue-granules
config changes. Details in breaking changes section.CumulusConfig
to a task_config
AWS Parameter.CUMULUS-1452
devicemapper
CUMULUS-1453
@cumulus/sf-sns-report
task@cumulus/sf-sns-report
to always assume that it is running as an intermediate step in a workflow, not as the first or last stepCumulusConfig
as part of step function definitions, as this is an artifact of the way Kes parses workflow definitions that was not possible to migrate to Terraform. Use AWS Parameters and the task_config
key instead. See change note above.CUMULUS-1620 - Fixed bug where message_adapter_version
does not correctly inject the CMA
CUMULUS-1396 - Updated @cumulus/common/StepFunctions.getExecutionHistory()
to recursively fetch execution history when nextToken
is returned in response
CUMULUS-1571 - Updated @cumulus/common/DynamoDb.get()
to throw any errors encountered when trying to get a record and the record does exist
CUMULUS-1452
devicemapper