libcluster_ec2 v0.3.0 ClusterEC2 View Source

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.1.0"}]
end

Link to this section Summary

Functions

Perform a DELETE request. See request/1 or request/2 for options definition

Perform a DELETE request. See request/1 or request/2 for options definition

Perform a DELETE request. See request/1 or request/2 for options definition

Perform a GET request. See request/1 or request/2 for options definition

Perform a GET request. See request/1 or request/2 for options definition

Perform a GET request. See request/1 or request/2 for options definition

Perform a HEAD request. See request/1 or request/2 for options definition

Perform a HEAD request. See request/1 or request/2 for options definition

Perform a HEAD request. See request/1 or request/2 for options definition

Queries the local EC2 instance metadata API to determine the aws resource region of the current instance

Queries the local EC2 instance metadata API to determine the instance ID of the current instance

Perform a OPTIONS request. See request/1 or request/2 for options definition

Perform a OPTIONS request. See request/1 or request/2 for options definition

Perform a OPTIONS request. See request/1 or request/2 for options definition

Perform a PATCH request. See request/1 or request/2 for options definition

Perform a PATCH request. See request/1 or request/2 for options definition

Perform a PATCH request. See request/1 or request/2 for options definition

Perform a POST request. See request/1 or request/2 for options definition

Perform a POST request. See request/1 or request/2 for options definition

Perform a POST request. See request/1 or request/2 for options definition

Perform a PUT request. See request/1 or request/2 for options definition

Perform a PUT request. See request/1 or request/2 for options definition

Perform a PUT request. See request/1 or request/2 for options definition

Perform a request. See request/2 for available options

Perform a request using client function

Perform a TRACE request. See request/1 or request/2 for options definition

Perform a TRACE request. See request/1 or request/2 for options definition

Perform a TRACE request. See request/1 or request/2 for options definition

Link to this section Types

Link to this type option() View Source
option() ::
  {:method, Tesla.Env.method()}
  | {:url, Tesla.Env.url()}
  | {:query, Tesla.Env.query()}
  | {:headers, Tesla.Env.headers()}
  | {:body, Tesla.Env.body()}
  | {:opts, Tesla.Env.opts()}

Link to this section Functions

Perform a DELETE request. See request/1 or request/2 for options definition.

Example

ExampleApi.delete("/users")

Perform a DELETE request. See request/1 or request/2 for options definition.

Example

myclient |> ExampleApi.delete("/users")
ExampleApi.delete("/users", query: [page: 1])
Link to this function delete(client, url, options) View Source

Perform a DELETE request. See request/1 or request/2 for options definition.

Example

myclient |> ExampleApi.delete("/users", query: [page: 1])

Perform a GET request. See request/1 or request/2 for options definition.

Example

ExampleApi.get("/users")

Perform a GET request. See request/1 or request/2 for options definition.

Example

myclient |> ExampleApi.get("/users")
ExampleApi.get("/users", query: [page: 1])

Perform a GET request. See request/1 or request/2 for options definition.

Example

myclient |> ExampleApi.get("/users", query: [page: 1])

Perform a HEAD request. See request/1 or request/2 for options definition.

Example

ExampleApi.head("/users")

Perform a HEAD request. See request/1 or request/2 for options definition.

Example

myclient |> ExampleApi.head("/users")
ExampleApi.head("/users", query: [page: 1])

Perform a HEAD request. See request/1 or request/2 for options definition.

Example

myclient |> ExampleApi.head("/users", query: [page: 1])
Link to this function instance_region() View Source
instance_region() :: binary()

Queries the local EC2 instance metadata API to determine the aws resource region of the current instance.

Link to this function local_instance_id() View Source
local_instance_id() :: binary()

Queries the local EC2 instance metadata API to determine the instance ID of the current instance.

Perform a OPTIONS request. See request/1 or request/2 for options definition.

Example

ExampleApi.options("/users")

Perform a OPTIONS request. See request/1 or request/2 for options definition.

Example

myclient |> ExampleApi.options("/users")
ExampleApi.options("/users", query: [page: 1])
Link to this function options(client, url, options) View Source

Perform a OPTIONS request. See request/1 or request/2 for options definition.

Example

myclient |> ExampleApi.options("/users", query: [page: 1])

Perform a PATCH request. See request/1 or request/2 for options definition.

Example

ExampleApi.patch("/users", %{name: "Jon"})

Perform a PATCH request. See request/1 or request/2 for options definition.

Example

myclient |> ExampleApi.patch("/users", %{name: "Jon"})
ExampleApi.patch("/users", %{name: "Jon"}, query: [scope: "admin"])

Perform a PATCH request. See request/1 or request/2 for options definition.

Example

myclient |> ExampleApi.patch("/users", %{name: "Jon"}, query: [scope: "admin"])

Perform a POST request. See request/1 or request/2 for options definition.

Example

ExampleApi.post("/users", %{name: "Jon"})

Perform a POST request. See request/1 or request/2 for options definition.

Example

myclient |> ExampleApi.post("/users", %{name: "Jon"})
ExampleApi.post("/users", %{name: "Jon"}, query: [scope: "admin"])

Perform a POST request. See request/1 or request/2 for options definition.

Example

myclient |> ExampleApi.post("/users", %{name: "Jon"}, query: [scope: "admin"])

Perform a PUT request. See request/1 or request/2 for options definition.

Example

ExampleApi.put("/users", %{name: "Jon"})

Perform a PUT request. See request/1 or request/2 for options definition.

Example

myclient |> ExampleApi.put("/users", %{name: "Jon"})
ExampleApi.put("/users", %{name: "Jon"}, query: [scope: "admin"])

Perform a PUT request. See request/1 or request/2 for options definition.

Example

myclient |> ExampleApi.put("/users", %{name: "Jon"}, query: [scope: "admin"])
Link to this function request(options) View Source
request([option()]) :: Tesla.Env.t()

Perform a request. See request/2 for available options.

Link to this function request(client, options) View Source
request(Tesla.Env.client(), [option()]) :: Tesla.Env.t()

Perform a request using client function

Options:

  • :method - the request method, one of [:head, :get, :delete, :trace, :options, :post, :put, :patch]
  • :url - either full url e.g. “http://example.com/some/path” or just “/some/path” if using Tesla.Middleware.BaseUrl
  • :query - a keyword list of query params, e.g. [page: 1, per_page: 100]
  • :headers - a keyworld list of headers, e.g. [{"content-type", "text/plain"}]
  • :body - depends on used middleware:

    • by default it can be a binary
    • if using e.g. JSON encoding middleware it can be a nested map
    • if adapter supports it it can be a Stream with any of the above
  • :opts - custom, per-request middleware or adapter options

Examples:

ExampleApi.request(method: :get, url: "/users/path")

You can also use shortcut methods like:

ExampleApi.get("/users/1")

or

myclient |> ExampleApi.post("/users", %{name: "Jon"})

Perform a TRACE request. See request/1 or request/2 for options definition.

Example

ExampleApi.trace("/users")

Perform a TRACE request. See request/1 or request/2 for options definition.

Example

myclient |> ExampleApi.trace("/users")
ExampleApi.trace("/users", query: [page: 1])

Perform a TRACE request. See request/1 or request/2 for options definition.

Example

myclient |> ExampleApi.trace("/users", query: [page: 1])