Examples
Examples
Real-world examples to help you get started with samstacks pipelines.
Complete Application Pipeline
The examples/
directory contains a comprehensive pipeline demonstrating all samstacks features including security-focused output masking:
Features Demonstrated
- S3 bucket notifications to SQS - Event-driven architecture
- Lambda processing - Serverless file processing
- Stack output dependencies - Dynamic parameter passing
- Centralized SAM configuration - Shared deployment settings
- Conditional deployment - Environment-based logic
- Post-deployment scripts - Custom automation
- Summary reporting - Deployment insights
- Expression evaluation - Mathematical and logical operations
- Security-focused masking - Protect sensitive data in outputs
Pipeline Structure
examples/pipeline.yml
pipeline_name: File Processing System
pipeline_description: S3 → SQS → Lambda processing pipeline
stacks:
- id: storage
dir: stacks/storage/
- id: processor
dir: stacks/processor/
params:
BucketName: ${{ stacks.storage.outputs.BucketName }}
QueueUrl: ${{ stacks.storage.outputs.QueueUrl }}
Try the Examples
Basic Multi-Stack Pipeline
# Clone and deploy the basic example
git clone https://github.com/dev7a/samstacks.git
cd samstacks/examples
# Deploy the basic pipeline
uvx samstacks deploy pipeline.yml
Multi-Environment External Configuration
# Deploy to different environments
uvx samstacks deploy multi-pipeline.yml --input environment=dev
uvx samstacks deploy multi-pipeline.yml --input environment=prod
# Or use SAM CLI directly with generated configs
cd configs/dev/processor && sam deploy
cd configs/prod/processor && sam deploy
Common Patterns
External Configuration for Multi-Environment
external-config.yml
pipeline_settings:
inputs:
environment:
type: string
default: dev
stacks:
- id: api
dir: stacks/api/
config: configs/${{ inputs.environment }}/api/
params:
Environment: ${{ inputs.environment }}
LogLevel: ${{ inputs.environment == 'prod' && 'WARN' || 'DEBUG' }}
InstanceType: ${{ inputs.environment == 'prod' && 't3.large' || 't3.micro' }}
Traditional Multi-Environment Deployment
multi-env.yml
stacks:
- id: app
dir: ./app
if: ${{ env.ENVIRONMENT == 'production' }}
params:
InstanceType: t3.large
- id: app-dev
dir: ./app
if: ${{ env.ENVIRONMENT == 'development' }}
params:
InstanceType: t3.micro
Cross-Stack References
cross-stack.yml
stacks:
- id: network
dir: ./infrastructure/network
- id: database
dir: ./infrastructure/database
params:
VpcId: ${{ stacks.network.outputs.VpcId }}
SubnetIds: ${{ stacks.network.outputs.PrivateSubnetIds }}
Secure Deployment with Masking
secure-pipeline.yml
pipeline_settings:
output_masking:
enabled: true
categories:
account_ids: true
api_endpoints: true
database_endpoints: true
stacks:
- id: api
dir: ./api
# Account IDs, endpoints automatically masked in outputs
Next Steps
- Manifest Reference - Complete configuration guide
- CLI Reference - Command-line options