Infrastructure-as-code for ephemeral AWS ParallelCluster environments for bioinformatics
Project description
Daylily Ephemeral Cluster
DayEC is the operator control plane for short-lived AWS ParallelCluster environments that run Daylily analysis workloads on FSx for Lustre. The current data plane is DRA-first: the cluster starts with reference data mounted at /fsx/references, run folders are attached only when needed under /fsx/run_dir_mounts/<mount_id>, workflow outputs stay under /fsx/analysis_results/<executing_entity>/<analysis_id>, and completed analysis directories are exported through a temporary direct DRA to a chosen S3 analysis bucket.
The cluster is ephemeral. S3 buckets are durable. Verify the export receipt before deleting the cluster.
Supported Operator Contract
Use the checkout environment and the CLI, not historical helper-script paths:
source ./activatedyec preflightdyec createdyec headnode connectdyec samples stagefor sample-manifest inputs, ordyec mounts createfor run-folder inputsdyec workflow launchdyec export --source-path /fsx/analysis_results/<executing_entity>/<analysis_id> --destination-s3-uri s3://bucket/prefix/<executing_entity>/<analysis_id>/- inspect
fsx_export.yaml dyec delete --dry-rundyec delete
daylily-ec and dyec are the same entrypoint. The shorter dyec form is used in examples.
One Copy-Pasteable Lifecycle
source ./activate
export AWS_PROFILE=daylily-service-lsmc
export REGION=us-west-2
export REGION_AZ=us-west-2d
export CLUSTER_NAME=day-demo-$(date +%Y%m%d%H%M%S)
export DAY_EX_CFG="$HOME/.config/daylily/daylily_ephemeral_cluster.yaml"
export REF_S3_URI=s3://lsmc-dayoa-references-usw2
export CONTROL_DATA_S3_URI=s3://lsmc-dayoa-control-data-usw2
export STAGE_S3_URI=s3://lsmc-ssf-sequencing-data/staged_external_data
export ANALYSIS_BUCKET=s3://lsmc-dayoa-analysis-results-us-west-2
export EXECUTING_ENTITY="${USER:-ubuntu}"
export ANALYSIS_ID=dayoa
export ANALYSIS_SAMPLES=etc/analysis_samples_template.tsv
export STAGE_CFG_DIR="$PWD/tmp-stage-config/$CLUSTER_NAME"
export EXPORT_DIR="$PWD/tmp-export/$ANALYSIS_ID"
export EXPORT_S3_URI="$ANALYSIS_BUCKET/analysis_results/$EXECUTING_ENTITY/$ANALYSIS_ID/"
dyec preflight \
--profile "$AWS_PROFILE" \
--region-az "$REGION_AZ" \
--config "$DAY_EX_CFG"
dyec create \
--profile "$AWS_PROFILE" \
--region-az "$REGION_AZ" \
--config "$DAY_EX_CFG"
dyec headnode connect \
--profile "$AWS_PROFILE" \
--region "$REGION" \
--cluster "$CLUSTER_NAME"
dyec samples stage "$ANALYSIS_SAMPLES" \
--profile "$AWS_PROFILE" \
--region "$REGION" \
--reference-s3-uri "$REF_S3_URI" \
--control-data-s3-uri "$CONTROL_DATA_S3_URI" \
--stage-s3-uri "$STAGE_S3_URI" \
--config-dir "$STAGE_CFG_DIR"
dyec workflow launch \
--profile "$AWS_PROFILE" \
--region "$REGION" \
--cluster "$CLUSTER_NAME" \
--stage-dir "/fsx/staging/staged_external_sequencing_data/remote_stage_<timestamp>" \
--analysis-id "$ANALYSIS_ID" \
--executing-entity "$EXECUTING_ENTITY" \
--git-tag 2.0.5 \
--export-destination-s3-uri "$EXPORT_S3_URI" \
--export-trigger on-success
# For run-folder work, attach only the S3 prefix you need.
dyec --json mounts create "s3://sequencer-run-bucket/runs/RUN123/" \
--profile "$AWS_PROFILE" \
--region "$REGION" \
--cluster "$CLUSTER_NAME" \
--platform ILMN \
--read-only \
--wait
dyec --json mounts verify \
--profile "$AWS_PROFILE" \
--region "$REGION" \
--cluster "$CLUSTER_NAME" \
--mount-id RUN123
dyec workflow launch \
--profile "$AWS_PROFILE" \
--region "$REGION" \
--cluster "$CLUSTER_NAME" \
--run-context-file ./runs.tsv \
--analysis-id "<run-analysis-id>" \
--executing-entity "$EXECUTING_ENTITY" \
--git-tag 2.0.5 \
--dy-command "bin/day_run produce_illumina_run_qc --config run_context_file=config/runs.tsv -p -j 5 -k"
dyec export \
--profile "$AWS_PROFILE" \
--region "$REGION" \
--cluster "$CLUSTER_NAME" \
--source-path "/fsx/analysis_results/$EXECUTING_ENTITY/$ANALYSIS_ID" \
--destination-s3-uri "$EXPORT_S3_URI" \
--output-dir "$EXPORT_DIR"
cat "$EXPORT_DIR/fsx_export.yaml"
dyec delete --dry-run \
--profile "$AWS_PROFILE" \
--region "$REGION" \
--cluster "$CLUSTER_NAME"
dyec delete \
--profile "$AWS_PROFILE" \
--region "$REGION" \
--cluster "$CLUSTER_NAME"
Architecture At A Glance
flowchart LR
Ref["S3 reference bucket /data/"] -->|reference-data DRA| Data["/fsx/references"]
Run["S3 run prefix"] -->|ephemeral run DRA| Mount["/fsx/run_dir_mounts/<mount_id>"]
Data --> Workflow["DayOA workflow"]
Mount --> Workflow
Workflow --> Results["/fsx/analysis_results/..."]
Results --> Export["temporary direct export DRA on /analysis_results/<executing_entity>/<analysis_id>/"]
Export -->|EXPORT_TO_REPOSITORY| Analysis["S3 analysis bucket prefix /<executing_entity>/<analysis_id>/"]
Key rules:
/fsx/referencesis the reference-data DRA created with the cluster./fsx/run_dir_mounts/<mount_id>is for read-oriented run inputs and is not an export source./fsx/analysis_results/...is where workflow checkouts and outputs live.dyec exportcreates a temporary DRA on the exact completed analysis directory, runsEXPORT_TO_REPOSITORY, and detaches it withDeleteDataInFileSystem=false.fsx_export.yamlis the v3 export receipt to keep before teardown.
Pipeline Catalog
config/daylily_available_repositories.yaml is the source of truth for repositories and blessed launch profiles. The packaged copy under daylily_ec/resources/payload/config/ must match it.
The current DayOA pin is 2.0.5 for the repository default and every DayOA command. Catalog v2 separates:
sample_analysis: usesanalysis_samples.tsv, stages inputs, and writessamples.tsv/units.tsv.run_analysis: usesruns.tsv, requires a run DRA, and launches run-folder workflows such as Illumina run QC and BCL Convert.
What This Repo Ships
source ./activate: creates or repairs theDAY-ECenvironment and installs the checkout editabledyec/daylily-ec: preflight, create, headnode, sample, workflow, mount, export, delete, state, repository, pricing, and AWS validation commands- DRA-backed ParallelCluster templates under
config/day_cluster/ - packaged resources under
daylily_ec/resources/payload/ day-clonefor headnode repository checkouts- tests that guard the catalog, packaged resources, SSM behavior, DRA mounts, export receipts, and environment contract
Read This Next
- docs/dra_fsx_strategy.md: current DRA-enabled FSx strategy and diagrams
- docs/ultra_rapid_start.md: shortest current run path
- docs/quickest_start.md: guided walkthrough with checks
- docs/operations.md: day-2 operations
- docs/cli_reference.md: command reference
- docs/aws_setup.md: AWS prerequisites
- docs/monitoring_and_troubleshooting.md: failure triage
- docs/testing_and_debugging.md: local and AWS-backed validation
- docs/DAY_EC_ENVIRONMENT.md: environment contract
- docs/pip_install.md: pip install path
- docs/archive/README.md: historical material only
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file daylily_ephemeral_cluster-5.0.20.tar.gz.
File metadata
- Download URL: daylily_ephemeral_cluster-5.0.20.tar.gz
- Upload date:
- Size: 50.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ddc1bf869ea44f8cd0fd5dfeb55af1dc30e21034daa14d30403d1be6b635f89
|
|
| MD5 |
0aae6e897cf213f1e56f5cb97d977322
|
|
| BLAKE2b-256 |
42015b4a65573a11d3ffb66c45bbf68b159227d3466954798d4286a85d40c8c2
|
File details
Details for the file daylily_ephemeral_cluster-5.0.20-py3-none-any.whl.
File metadata
- Download URL: daylily_ephemeral_cluster-5.0.20-py3-none-any.whl
- Upload date:
- Size: 1.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c387fdb7320a8b530feb3f670b362f5cd948d4c0370a24bd0a4c8b6aa89f49c
|
|
| MD5 |
29dff598c5c79c6587e979e6fa49af4e
|
|
| BLAKE2b-256 |
7a2c93c447ad07bf9bc91781f7e60747adcbb76ad6cf158c2869af7984927ce8
|