The Hesburgh Libraries and Snite Museum of Art at the University of Notre Dame received a grant from The Andrew W. Mellon Foundation in December 2017 to develop a unified online collections platform to encourage comparative research, innovative joint exhibitions, and deeper integration of artwork, rare books, archival resources, and cultural artifacts into University teaching. For more information about Marble visit https://innovation.library.nd.edu/marble.
This repository contains the "Infrastructure as Code" for deploying all pieces of the Marble project into AWS. It will contain AWS Cloud Formation Templates, Ansible playbooks, deploy scripts, etc for all components of the new system.
The project was designed as a set of independent components, ex: IIIF Image Service, IIIF Image Viewer Webcomponent, etc. This separation is also reflected in this repository, giving each component it's own independent set of infrastructure and deployment pipelines. To do this we use a combination of multi-layered and service-oriented architectures. There are a set of lower level stacks, such as the app-infrastructure and network stacks in the diagram below, that must be created before you can create a component:
For more information on this type of organization see Organize Your Stacks By Lifecycle and Ownership
Before you begin, check that you have the following:
- A role with permissions to deploy CDK Templates. In most cases, this will also require permissions to create IAM roles/policies (see Permissions Required to Access IAM Resources)
- If you can use Route53, we provide a template for managing the certificate and DNS record sets for you. If not, make sure you have the ability to manage DNS for your organization to validate certificates (see Use DNS to Validate Domain Ownership)
- Must have the awscli installed if using the example deploy commands
- Must have the awscdk installed for deploying components that require it
- If you are contributing to this project, it is highly recommended you use https://github.com/awslabs/git-secrets to prevent pushing AWS secrets to the repo
- You will need to adjust your AWS service limits as follows:
- Policies per Role: 20
- Shared Infrastructure - All components will require creating a set of shared infrastructure, so begin here.
- IIIF Image Service - A scalable IIIF image service using AWS Lambda. See nulib/serverless-iiif
- IIIF Image Viewer - A IIIF Viewer WebComponent based on UniversalViewer. See ndlib/marble-image-viewer
- IIIF Manifest Pipeline - A IIIF Manifest and Image processing pipeline. See ndlib/marble-manifest-pipeline
- Website - The main front end for the project. See ndlib/marble-website
- Primo Passthrough - Proxies queries for the Website to a Primo server. See ndlib/marble-passthrough-primo