🎯 Issue Summary
Add AWS S3 integration to store pipeline execution artifacts (logs, outputs, reports).
📋 Current Behavior
Pipeline outputs are stored in-memory or locally, with no persistent artifact storage.
Current Limitations:
- No artifact persistence
- No centralized storage
- Limited to local filesystem
✨ Proposed Solution
Integrate AWS S3 for:
- Storing execution logs
- Saving pipeline outputs/artifacts
- Archiving historical execution data
- Generating presigned URLs for artifact access
🔧 Technical Requirements
1. AWS SDK Setup
2. S3 Client
3. Artifact Management
4. API Integration
5. Configuration
📝 Acceptance Criteria
- ✅ Execution logs uploaded to S3 automatically
- ✅ Artifacts accessible via presigned URLs
- ✅ S3 bucket organized by pipeline/execution
- ✅ API returns artifact URLs
- ✅ Configurable retention period
💡 Implementation Example
# backend/integrations/s3.py [6](#header-6)
import boto3
from datetime import timedelta
class S3ArtifactStore:
def __init__(self, bucket: str, region: str):
self.s3 = boto3.client('s3', region_name=region)
self.bucket = bucket
async def upload_artifact(self, pipeline_id: str, execution_id: str,
filename: str, content: bytes):
key = f"pipelines/{pipeline_id}/executions/{execution_id}/{filename}"
self.s3.put_object(Bucket=self.bucket, Key=key, Body=content)
return key
def generate_presigned_url(self, key: str, expiration: int = 3600):
return self.s3.generate_presigned_url(
'get_object',
Params={'Bucket': self.bucket, 'Key': key},
ExpiresIn=expiration
)
📚 Resources
[Boto3 Documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)
[S3 Presigned URLs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html)
🎯 Issue Summary
Add AWS S3 integration to store pipeline execution artifacts (logs, outputs, reports).
📋 Current Behavior
Pipeline outputs are stored in-memory or locally, with no persistent artifact storage.
Current Limitations:
✨ Proposed Solution
Integrate AWS S3 for:
🔧 Technical Requirements
1. AWS SDK Setup
boto3to requirements.txtbackend/integrations/s3.py2. S3 Client
S3ArtifactStoreclassupload_artifact()download_artifact()generate_presigned_url()3. Artifact Management
s3://bucket/pipelines/{id}/executions/{exec_id}/4. API Integration
GET /api/executions/{id}/artifactsendpoint5. Configuration
S3_BUCKET,AWS_REGIONto config📝 Acceptance Criteria
💡 Implementation Example