AWS Overview
For the following examples we will assume that the Furnace Instance has been called furninst
and that the stack being deployed is called furnstak
.
Ignite Resources
The following resources are created by the bootstrap process when running furnace ignite
:
S3 Buckets
furninst-{region}-furnace-artifacts-{uid}
stores the stack functions/modules when a stack is deployedfurninst-{region}-furnace-bootstrap-{uid}
stores thedeployExec
anddeployTrigger
function templates
API Gateway (
Deploy API
)Used as an endpoint by the GitHub webhook
Lambda Function (
furninst-deployTrigger
)Used to process the messages sent to the Deploy API
Uses an API Gateway trigger
Sends output to an SNS Queue
furninst-FurnaceStackUpdates
SNS Queue (
furninst-FurnaceStackUpdates
)Recieves messages from the
furninst-deployTrigger
lambdaInvokes lambda function
furninst-deployExec
to deploy stacks
Lambda Function (
furninst-deployExec
)Triggered by messages on the
furninst-FurnaceStackUpdates
SNS QueueStarts the deployment ECS container
stackUpdater
ECS Cluster and Task Definition
Task Definition
furninst-stackUpdaterTask
stores the definition for the container which handles the deployment of stacksstackUpdater
Invoked by the
furninst-deployExec
LambdaPulls a container from Docker Hub
projectfurnace/deploy
Container source code can be found here https://github.com/ProjectFurnace/deploy
Note: at present we are using a single machine ECS Cluster however we will be moving to Fargate as soon as it's supported in all regions
AWS Secrets (Various)
furninst/apiKeySecret
Used to secure the API Gatewayfurninst/GitHookSecret
Used to secure the Github Webhookfurninst/GitToken
Used to update Github with status information
Networking resources
Furnace will create it's own VPC and associated resources to handle deployments within it's own network
IAM
Furnace will create various IAM roles, groups and policies to manage deployments
Most of these resources are deployed by a CloudFormation template which is called the same name as your Furnace instance furninst
in this case
Deployment Resources
Deployment resources will be dependant upon how you craft your stack, but typically the following will be deployed:
Sources
Usually a Kinesis Stream, naming convention is {stack name}-{source name}-{environment} so if we deployed our example stack to
dev
with a source namedsource1
our Kinesis Stream would be calledfurnstak-source1-dev
Taps
Taps will be backed by a function/module, naming convention is {stack name}-{source name}-{environment} so if our tap was called
tap1
we would getfurnstak-tap1-dev
A tap will create an output Kinesis Stream or SQS named as per the tap but with
out
appended to it ie.furnstak-tap1-dev-out
Pipelines
Pipelines will follow the same naming convention as Taps for both the Lambda and output Kinesis Stream or SQS Queue.
Sinks
Sinks are typically an S3 Bucket, Kinesis Stream or Kinesis Firehose depending on how you've configured it.
Log Locations
All AWS logs are stored in CloudWatch. A log group will be created for each Lambda used by both your Furnace Instance and your Stacks. Typically you will want to check the ECS Stack Updater Task log for tracking down issues during a deployment. This log is found under the log group /ecs/{stack name}-stackUpdaterTask
Log groups for Lambdas are only created when the lambda is first invoked. If you are not seeing a log group for your Lambda check to make sure it's being triggered.
Last updated