kyleaa/libcluster_ec2

Elixir

102

71 commits

updated Aug 12, 2026

See the code

README

ClusterEC2

This is an EC2 clustering strategy for libcluster. It currently supports identifying nodes based on EC2 tags.

The default Tags strategy uses ex_aws to query the EC2 DescribeInstances API endpoint. Access to this API should be granted to the EC2 instance profile. See the ExAws docs for additional configuration options.

config :libcluster,
  topologies: [
    example: [
      strategy: ClusterEC2.Strategy.Tags,
      config: [
        ec2_tagname: "elasticbeanstalk:environment-name"
      ],
    ]
  ]

Installation

The package can be installed by adding libcluster_ec2 to your list of dependencies in mix.exs:

def deps do
  [{:libcluster_ec2, "~> 0.5"}]
end

AWS IAM Requirements

Instances must have an instance role attached. There are two permissions required:

  • ec2:DescribeInstances - Required to determine tag values of the current running instance. Can be restricted by Resource to the current instance running the application
  • ec2:DescribeTags - Required to identify other instances with the same tags
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeTags"
            ],
            "Resource": "*"
        }
    ]
}

Contributors

kyleaa

51 commits

seantanly

5 commits

flupke

2 commits

kyleaa/libcluster_ec2

Elixir

102

71 commits

updated Aug 12, 2026

See the code

README

ClusterEC2

This is an EC2 clustering strategy for libcluster. It currently supports identifying nodes based on EC2 tags.

The default Tags strategy uses ex_aws to query the EC2 DescribeInstances API endpoint. Access to this API should be granted to the EC2 instance profile. See the ExAws docs for additional configuration options.

config :libcluster,
  topologies: [
    example: [
      strategy: ClusterEC2.Strategy.Tags,
      config: [
        ec2_tagname: "elasticbeanstalk:environment-name"
      ],
    ]
  ]

Installation

The package can be installed by adding libcluster_ec2 to your list of dependencies in mix.exs:

def deps do
  [{:libcluster_ec2, "~> 0.5"}]
end

AWS IAM Requirements

Instances must have an instance role attached. There are two permissions required:

  • ec2:DescribeInstances - Required to determine tag values of the current running instance. Can be restricted by Resource to the current instance running the application
  • ec2:DescribeTags - Required to identify other instances with the same tags
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeTags"
            ],
            "Resource": "*"
        }
    ]
}

Contributors

kyleaa

51 commits

seantanly

5 commits

flupke

2 commits

Languages

Elixir

100.0%