Local or remote system with access to the AWS API.
- CLI environment (developed on Linux, should be portable to Mac and WSL)
- Python >=3.7
- pip3 >=20.0.2
- pipenv >=2018.11.26
pip3 install --user pipenv==2018.11.26
Note: pipenv will install additional runtimes and dependencies in a dedicated, virtual Python environment.
- IAM User/Role
- With sufficient permissions to manage the AWS resources defined by the CloudFormation templates.
- AWS Access Keys, temporary or long-term, exported to environment variables
- Best Practices for Managing AWS Access Keys
- Environment Variables To Configure the AWS CLI
- Use of aws-vault is recommended.
# Show all available make targets
make
-
Accept the terms and conditions of the NVIDIA AMI
- Log into the AWS console.
- Go to the NVIDIA Deep Learning AMI product in the AWS Marketplace.
- Click Continue to Subscribe.
- Read through the terms. If you agree, click Accept Terms.
-
Review the main Sceptre configuration:
-
project_code
Project code, eg.
myproject
. -
region
Configure the AWS Region to deploy to.
Note: Sceptre configurations may be cascaded for multi-Region deployments.
-
-
Review and update the CloudFormation Parameters and configuration.
# Deploy all stacks
make stack=fah launch
# Deploy the network stack
make stack=fah/network launch
Note: Sceptre figures out dependencies between stacks at runtime.
Note: Additional to creating non-existing stacks, launch
applies pending updates (if any) to stacks which already exists.
# Update all
make stack=fah launch
# Update the network stack
make stack=fah/network launch
# Get status of all stacks
make stack=fah status
# Get status of the network stack and its dependencies
make stack=fah/network status
Destroy all AWS resources of one or many stacks:
Note: Stacks which depend on the targeted stacks will be deleted as well.
# Delete the network stack, as well as stacks which depend on it.
make stack=fah/network delete
This repository implements the Sceptre tool to facilitate CloudFormation deployments.
Tip: To learn how to use the config/
and templates/
subdirectories, read up on Sceptre's online resources:
For context, see Sceptre Directory Structure.
cfn/ # Sceptre root
├── config/ # CloudFormation Parameter values, Tags
│ ├── config.yaml # AWS Profile, AWS Region, Project Code
│ └── fah/ # StackGroup root
│ ├── network.yaml # Configuration for eg. VPC, gateways, ...
│ └── ...
└── templates/ # CloudFormation templates
└── fah/ # StackGroup root
│ ├── network.yaml # Template for eg. VPC, gateways, ...
│ └── ...
Sceptre resolves dependencies between stacks at runtime. If required, it will update stacks on which the targeted stack
relies.
As a result, the lint
step does not know beforehand which stacks will receive updates. For this reason, the lint
step lints all CloudFormation templates and Lambda payloads regardless of the targeted stack
.