Invokes AWS Elastic Container Service (ECS) tasks when objects are created in S3 buckets.
With git installed, pull down the source code and move into the newly created directory:
git clone https://github.com/RockefellerArchiveCenter/digitized_image_trigger.git
cd digitized_image_trigger
This repository is intended to be deployed as a Lambda script in AWS infrastructure.
The script is designed to consume messages from an AWS S3 Bucket or an AWS Simple Notifications Service (SNS) queue.
SNS messages are expected have the following attributes:
format
- the format of the package (audio or video)refid
- the ArchivesSpace refid associated with the packageservice
- the service which produced the messageoutcome
- the outcome of the service (usuallySUCCESS
orFAILURE
, but may also beCOMPLETE
)message
- - a detailed message about the service outcome (optional)rights_ids
- rights IDs associated with the package (optional)
The script takes the following actions:
- S3 events:
- PutObject events trigger the
digitized_image_validation
ECS task.
- PutObject events trigger the
- SNS events:
- from
validation
service:- messages with outcome
SUCCESS
scale updigitized_image_qc
ECS service if necessary.
- messages with outcome
- from
qc
service:- messages with outcome
SUCCESS
trigger thedigitized_image_packaging
ECS task. - messages with outcome
COMPLETE
scale downdigitized_image_qc
ECS service.
- messages with outcome
- from
This code is released under the MIT License.
This is an open source project and we welcome contributions! If you want to fix a bug, or have an idea of how to enhance the application, the process looks like this:
- File an issue in this repository. This will provide a location to discuss proposed implementations of fixes or enhancements, and can then be tied to a subsequent pull request.
- If you have an idea of how to fix the bug (or make the improvements), fork the repository and work in your own branch. When you are done, push the branch back to this repository and set up a pull request. Automated unit tests are run on all pull requests. Any new code should have unit test coverage, documentation (if necessary), and should conform to the Python PEP8 style guidelines.
- After some back and forth between you and core committers (or individuals who have privileges to commit to the base branch of this repository), your code will probably be merged, perhaps with some minor changes.
This repository contains a configuration file for git pre-commit hooks which help ensure that code is linted before it is checked into version control. It is strongly recommended that you install these hooks locally by installing pre-commit and running pre-commit install
.
New code should have unit tests. Tests can be run using tox.