Releases: CDLUC3/dmsp_aws_prototype
Releases · CDLUC3/dmsp_aws_prototype
v1.4.3
- Added new DynamoDB Table to store copies of data from other systems (e.g. ROR, re3Data, SPX, etc.) #84
- Switched use of homegrown
!ssm_parameter
resolver to the community managed!ssm
resolver in Sceptre configs. #152 - Extracted AWS SAM Lambda code and most scripts into the new dmsp_api_prototype repo
v1.4.2
Changes to add support for the GET /dmps
API endpoint #144
Additional documentation on the functionality new API endpoint can be found on the API Wiki page
Changes
-
Uc3DmpDynamo gem
- Updated to allow the initializer to accept an incoming table name to support calls against our Index Dynamo Table (temp replacement for OpenSearch)
-
DmpIndexer Lambda function
- Make it a little more DRY
- Added a few new attributes (was originally just the DMP PK):
modified
date to support sortingtitle
to support sorting and searchabstract
to support search
- Switch to use
PERSON_INDEX
andAFFILIATION_INDEX
instead ofORCID_INDEX
andROR_INDEX
to more accurately represent the fact that they can be based on emails and Crossref org/funder ids as well
-
Dynamo seed script
-
Removed old Augmenter records that are no longer used.
-
Update the
dynamo_seed
script to add a"org_access_level": "all"
attribute to the provenance record. This allows the DMPTool to query for all Orgs. API integrations will use"org_access_level": "restricted"
along with a list of approved ROR ids that will be stored in SSM -
Uc3DmpProvenance gem changes
- Update to fetch the approved list of ROR ids from SSM for the system making the call and append it to the JSON fetched from the Dynamo table record
- Will be adding the
org_access_level
flag and SSM for_list updates to the Add Api Client PR that sets up the pilot partner API access
-
Uc3DmpId gem changes
- Updated the
finder
class to support searching by affilaition, funder, and person. The results are combined so, for example, if the request asks for a specific org and funder the results set will only return results that include both the specified funder and specified org
- Updated the
-
GetDmps API Lambda function changes
- Updated to do a security check using the changes made to the Uc3DmpProvenance gem so that we allow a caller whose
org_access_level
is set toall
can query anyorg
and if not, they can only query RORs that are in their new SSM parameterror_list
. If they do not specify an org it will use all of the RORs that are in that SSM parameter - Updated to pass the
org
,funder
andowner
params through to the Uc3DmpIdfinder
- Updated to support search by
title
andabstract
- Updated to sort by
title
ormodified
(default is bymodified
datedesc
) - Updated to allow
page
andper_page
pagination (default ispage
1 andper_page
25 with a max of 100) - Updated response to include
total_items
,total_pages
along withfirst
,prev
,next
,last
(when appropriate) to help make it easier for callers to paginate through results
- Updated to do a security check using the changes made to the Uc3DmpProvenance gem so that we allow a caller whose
-
Pilot partner API clients
- Added a new CloudFormation template to support the creation of Cognito User Pool Clients with permissions to access the API
- Added Sceptre config for our 3 initial partners
- Added SSM parameters to store the ROR ids for each corresponding Cognito client
-
Swagger docs
- Updated the Swagger site to include the new GetDmps function
Deploying
- To deploy the API Clients into Cognito:
sceptre create [env]/regional/api-clients/[name].yaml
- To deploy the DmpIndexer Lambda:
cd src/lambdas/indexers/dmp && ruby sam_build_deploy.rb [env] true true [log_level]
- To deploy the gems and GetDmp Lambda changes:
cd src/sam && ruby sam_build_deploy.rb [env] true true [log_level]
- Run the seed_dynamo script to update the DMPTool provenance record with the new
org_access_level
attribute:cd src/scripts && ./seed_dynamo [env] dmptool dmptool.org
- Rebuild the Index table:
cd src/scripts && ruby recreate_dmp_index.rb [env] [index table name]
- Don't forget to run Sceptre updates for each of the API Clients to add their ROR lists to SSM. These can be found in the Add Api Client PR
- Rerun the Harvesters to update their findings with the
domain
for the interaction with the DMPTool pilot project pages:ruby reharvest-related-works.rb prd [table_name] [event_bus_arn]
v1.4.1
Fix for DMPTool issue #626
- Update to Uc3DmpId gem to correct issue with saving changed to the approval status of related works found by a harvester
- Update to the DataCiteHarvester Lambda to include the
domain
in the metadata about the related work so that it can properly be tied back to theHARVESTER_MODS
record when the update occurs
v1.4
- Update the uc3-dmp-id gem so that it does not overwrite the dmproadmap_related_identifiers array which contains the PDF narrative download
- Update LambdaLayer dependencies
- Update DMP landing pages
- Fix issue with URLs being used when the value is not a URL (e.g. role 'other')
- Fix issue with Grant ID being displayed twice
- Updated Funding status to use whatever was sent in rather than attempting to determine it based on the existence of the GrantID
v1.3
v1.2
v1.1
- Added a new Dynamo table to act as a temporary index until we get OpenSearch in a stable situation and have determined if we want to run individual clusters per app or have a single shared cluster with indexes for each app
- Enabled point in time recovery for Dynamo tables as part of #97
- Added initial OpenSearch template and config. We are not using it ATM, but we can use it as our basis when we implement OS
- Added a lambda-iam template to help manage IAM resources needed by our Lambdas (part of our larger effort to make the SAM managed resources more atomic)
- Removed old public subnet info from the Sceptre templates since those subnets were deleted
- Added a DmpIndexer lambda that is triggered by the Dynamo stream to manage our DMP indices (This lambda has its own build script which is part of our larger effort to make the SAM managed resources more atomic)
- Added a HarvestableDmps lambda that is triggered by a scheduled EventBridge job. This lambda finds DMPs that we need to search for related works for out on the inter-webs. It groups the DMPs by their organizational affiliation and then publishes a message on EventBridge to signal individual harvesters to go out and search (This lambda has its own build script which is part of our larger effort to make the SAM managed resources more atomic)
- Added a DataCiteHarvester lambda that is triggered by a message from the HarvestableDmps lambda. This lambda communicates with the DataCite REST API in an effort to find related works. (This lambda has its own build script which is part of our larger effort to make the SAM managed resources more atomic)
- Added a new LambdaLayer. Its build script will rebuild dependent lambdas. (part of our larger effort to make the SAM managed resources more atomic)
- Some refactoring of our awards API search lambdas to address issues with how we were mapping the results from the various funder APIs
- Update to the PostCitations lambda to handle scenarios where the owner of the DOI does not provide a BibTex citation format
- Removed the old DmpIndexer function because we replaced with the independent version noted above (part of our larger effort to make the SAM managed resources more atomic)
- Updated the EZID publisher to stop using people's emails as the identifier when an ORCID is not available
- Fix for the uc3-dmp-citation gem to address an issue where we were not using the URL
- Updated the uc3-dmp-external-api gem so that it can be passed a timeout value. The default is 10 seconds.
- Updates to the uc3-dmp-id gem's Comparator class to do a better job in detecting matches between a DMP and a related work. These changes were informed by our testing wit the pilot project
- Updated the uc3-dmp-id Finder and Helper classes to attach any harvester findings to the DMP in the
dmphub_modifications
array - Added a lot of helper scripts to
src/scripts