All Projects → libertymutual → herman

libertymutual / herman

Licence: other
Herman is a tool to simplify deployment of AWS Services using ECS and Lambda, and the provisioning of various AWS services.

Programming Languages

java
68154 projects - #9 most used programming language
FreeMarker
481 projects

Projects that are alternatives of or similar to herman

Awesome Aws
A curated list of awesome Amazon Web Services (AWS) libraries, open source repos, guides, blogs, and other resources. Featuring the Fiery Meter of AWSome.
Stars: ✭ 9,895 (+29884.85%)
Mutual labels:  lambda, s3, ecs, rds
Awstaghelper
AWS bulk tagging tool
Stars: ✭ 98 (+196.97%)
Mutual labels:  lambda, s3, rds
Komiser
☁️ Cloud Environment Inspector 👮🔒 💰
Stars: ✭ 2,684 (+8033.33%)
Mutual labels:  lambda, rds
s3bundler
ARCHIVED - see https://aws.amazon.com/about-aws/whats-new/2019/04/Amazon-S3-Introduces-S3-Batch-Operations-for-Object-Management/ Amazon S3 Bundler downloads billions of small S3 objects, bundles them into archives, and uploads them back into S3.
Stars: ✭ 26 (-21.21%)
Mutual labels:  s3, ecs
terraform-aws-efs-backup
Terraform module designed to easily backup EFS filesystems to S3 using DataPipeline
Stars: ✭ 40 (+21.21%)
Mutual labels:  lambda, s3
Designing Cloud Native Microservices On Aws
Introduce a fluent way to design cloud native microservices via EventStorming workshop, this is a hands-on workshop. Contains such topics: DDD, Event storming, Specification by example. Including the AWS product : Serverless Lambda , DynamoDB, Fargate, CloudWatch.
Stars: ✭ 131 (+296.97%)
Mutual labels:  lambda, ecs
Eventstormingworkshop
EventStorming workshop, this is a hands-on workshop. Contains such topics: DDD, Event storming, Specification by example. Including the AWS product : Serverless Lambda , DynamoDB, Fargate, CloudWatch.
Stars: ✭ 184 (+457.58%)
Mutual labels:  lambda, ecs
Hands-On-Serverless-Applications-with-Go
Hands-On Serverless Applications with Go, published by Packt.
Stars: ✭ 92 (+178.79%)
Mutual labels:  lambda, s3
S3 To Lambda Patterns
Example applications for the S3-to-Lambda patterns series in the AWS Compute Blog and learning path. Questions? @jbesw.
Stars: ✭ 95 (+187.88%)
Mutual labels:  lambda, s3
aws-backup-lambda
A utility AWS lambda function to manage EBS and RDS snapshot backups.
Stars: ✭ 60 (+81.82%)
Mutual labels:  lambda, rds
tech1-temple-aws
AWS Proofs of Concepts repository. No Longer Supported
Stars: ✭ 32 (-3.03%)
Mutual labels:  lambda, s3
gozeit
GoZeit
Stars: ✭ 19 (-42.42%)
Mutual labels:  lambda, s3
Node Acme Lambda
Use AWS Lambda to manage SSL certificates for ACME providers like Let's Encrypt.
Stars: ✭ 120 (+263.64%)
Mutual labels:  lambda, s3
Diamondb
[WIP] DiamonDB: Rebuild of time series database on AWS.
Stars: ✭ 98 (+196.97%)
Mutual labels:  lambda, s3
Aws Mobile React Native Starter
AWS Mobile React Native Starter App https://aws.amazon.com/mobile
Stars: ✭ 2,247 (+6709.09%)
Mutual labels:  lambda, s3
go-localstack
Go Wrapper for using localstack
Stars: ✭ 56 (+69.7%)
Mutual labels:  lambda, s3
s3-db
Document DB API for AWS S3
Stars: ✭ 97 (+193.94%)
Mutual labels:  lambda, s3
Neardb
Simple document db made for infinitely scalable globally distributed reads.
Stars: ✭ 92 (+178.79%)
Mutual labels:  lambda, s3
Aws Cli Cheatsheet
☁️ AWS CLI + JQ = Make life easier
Stars: ✭ 94 (+184.85%)
Mutual labels:  lambda, rds
s3-monitoring
No description or website provided.
Stars: ✭ 14 (-57.58%)
Mutual labels:  lambda, s3

Herman: AWS ECS Runtime and Deployment (Docker-on-AWS)

Join us on Slack!

Build Status Download

Background

Herman was created due to a need to deploy Docker containers to ECS for a team within Liberty Mutual group. Herman is a Bamboo plugin that provides a standard way for teams to deploy containers to ECS and provision AWS resources (such as RDS instances, S3 buckets, etc) using a deployment task in Bamboo. Herman will read a deployment configuration YML file and handle making calls to AWS APIs to create or modify resources as needed. For example:

cluster: ${ecs.cluster}
appName: ${bamboo.maven.artifactId}-${bamboo.deploy.environment}
service:
  instanceCount: ${instance.count}
  urlPrefixOverride: ${bamboo.deploy.environment}-${aws.region}-${bamboo.maven.artifactId}
  urlSuffix: ${url.suffix}
  healthCheck:
    target: "/health"
containerDefinitions:
- memory: 512
  portMappings:
  - hostPort: 0
    containerPort: 8443
  environment:
  - name: spring.profiles.active
    value: ${bamboo.deploy.environment}
  image: 892823.dkr.ecr.us-east-1.amazonaws.com/${bamboo.maven.artifactId}:${bamboo.maven.version}

Setup

Plugin Setup

Teams must add organization-specific configuration files to an S3 bucket before using Herman in each unique AWS account. See: Plugin configuration

Broker Setup

There are four broker services that need to be deployed before Herman is operational:

Supported Workload Types

ECS supports three basic styles of container workloads:

  • web (keep my app running, and give it a URL)
  • daemon (keep my app running, but no url required)
  • batch (run this task, shut down when done)

See: Task Definition Conventions

Cluster Deployment

Herman supports deploying and managing ECS clusters. See: Cluster Deployment

Application Identity (AWS "IAM")

As part of deployment, your application will get provisioned an identity to be used when accessing other AWS resources such as RDS, SQS, and S3.  By convention, this IAM Role will match the appName field in your deployment manifest YML/JSON.

Permissions are limited to start with to follow the "least privilege" model.  More details found on the IAM page, as well as specific examples for brokered services on their pages.

see: IAM Roles

Operational Services

  • Application logs are centrally collected into Splunk per region - no application changes are required
  • NewRelic is available for performance monitoring.   Some app config required, but labels and naming is injected automatically.

Provisioned Resources ("Brokered Services")

Commonly used application resources are able to be provisioned via your deployment YML. For more information, see the page on brokered services.

Standalone Brokered Services

Some AWS services can be used outside of the ECS context, and Herman provides a way to leverage its brokering capabilities without requiring an ECS deployment. These brokers include:

New Relic Monitoring and Alerting

New Relic is commonly used for application monitoring and alerting. Herman will inform New Relic of a new deployment and your application will be able to send metrics assuming the New Relic agent is configured in your app code. To go along with this, Herman will register alert conditions and notification channels for your application as well. For more information, see New Relic.

Contributing

See CONTRIBUTING.md

Credits

Herman was created through the hard work of a small, dynamic community within Liberty Mutual. Original authors:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].