Git Product home page Git Product logo

amazon-ecs-agent's Introduction

Amazon ECS Container Agent

The Amazon ECS Container Agent is software developed for the Amazon EC2 Container Service.

It runs on Container Instances and starts containers on behalf of Amazon ECS.

Basic Usage

Docker Image

The Amazon ECS Container Agent should be run in a docker container and may be downloaded from our Docker Hub Repository. Documentation on running it properly may be found on the Repository page.

tl;dr: On an Amazon ECS Container Instance

  1. touch /etc/ecs/ecs.config
  2. mkdir -p /var/log/ecs
  3. docker run --name ecs-agent -d -v /var/run/docker.sock:/var/run/docker.sock -v /var/log/ecs:/log -p 127.0.0.1:51678:51678 --env-file /etc/ecs/ecs.config -e ECS_LOGFILE=/log/ecs-agent.log amazon/amazon-ecs-agent.

See also the Advanced Usage section below.

Building and Running from source

Please note, running the Amazon ECS Container Agent outside of Amazon EC2 is not supported

Docker Image

The Amazon ECS Container Agent may be built by simply typing make with the Docker daemon running.

This will produce an image tagged amazon/ecs-container-agent:development which you may run as described above.

Standalone

The Amazon ECS Container Agent may also be run outside of a docker container as a go binary. This is not recommended for production, but it can be useful for development or easier integration with your local Go tools.

The following commands will run it outside of Docker:

make gobuild
./out/amazon-ecs-agent

Make Targets

The following targets are available. Each may be run with make <target>.

Make Target Description
release (Default) release builds the agent within a docker container and and packages it into a scratch-based image
gobuild gobuild runs a normal go build of the agent and stores the binary in ./out/amazon-ecs-agent
static static runs go build to produce a static binary in ./out/amazon-ecs-agent
test test runs all tests using go test
test-in-docker test-in-docker runs all tests inside a docker container
clean clean removes build artifacts. Note: this does not remove docker images

Advanced Usage

The Amazon ECS Container Agent supports a number of configuration options, most of which should be set through environment variables.

Environment Variables

The following environment variables are available. All of them are optional. They are listed in a general order of likelihood that a user may want to configure them as something other than the defaults.

Environment Key Example Value(s) Description Default Value
ECS_CLUSTER clusterName The cluster this agent should check into. default
ECS_RESERVED_PORTS [22, 80, 5000, 8080] An array of ports that should be marked as unavailable for scheduling on this Container Instance. [22, 2375, 2376, 51678]
AWS_DEFAULT_REGION <us-west-2>|<us-east-1>|… The region to be used in API requests as well as to infer the correct backend host. Taken from EC2 Instance Metadata
AWS_ACCESS_KEY_ID AKIDEXAMPLE The Access Key used by the agent for all calls. Taken from EC2 Instance Metadata
AWS_SECRET_ACCESS_KEY EXAMPLEKEY The Secret Key used by the agent for all calls. Taken from EC2 Instance Metadata
DOCKER_HOST unix:///var/run/docker.sock Used to create a connection to the Docker daemon; behaves similarly to this environment variable as used by the Docker client unix:///var/run/docker.sock
ECS_LOGLEVEL <crit> | <error> | <warn> | <info> | <debug> What level to log at on stdout. warn
ECS_LOGFILE /ecs-agent.log The path to output full debugging info to. If blank, no logs will be written to file. If set, logs at debug level (regardless of ECS_LOGLEVEL) will be written to that file. blank
ECS_BACKEND_HOST ecs.us-east-1.amazonaws.com The host to make backend api calls against. ecs.REGION.amazonaws.com
ECS_BACKEND_PORT 443 The associated port to make backend api calls with. 443
AWS_SESSION_TOKEN The Session Token used for temporary credentials. Taken from EC2 Instance Metadata

Flags

The agent also supports the following flags:

  • -k — The agent will not requre valid SSL certificates for the services it communicates with.
  • -loglevel — Options: [<crit>|<error>|<warn>|<info>|<debug>]. The agent will output on stdout at the given level. This is overridden by the ECS_LOGLEVEL environment variable, if present.

Contributing

Contributions and feedback are welcome! Proposals and Pull Requests will be considered and responded to.

License

The Amazon ECS Container Agent is licensed under the Apache 2.0 License.

amazon-ecs-agent's People

Contributors

euank avatar samuelkarp avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.