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
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 request. See request/2
for available options
Perform a request using client function
Link to this section Types
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")
delete(Tesla.Env.client(), Tesla.Env.url()) :: Tesla.Env.t()
delete(Tesla.Env.url(), [option()]) :: Tesla.Env.t()
Perform a DELETE request.
See request/1
or request/2
for options definition.
Example
myclient |> ExampleApi.delete("/users")
ExampleApi.delete("/users", query: [page: 1])
delete(Tesla.Env.client(), Tesla.Env.url(), [option()]) :: Tesla.Env.t()
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")
get(Tesla.Env.client(), Tesla.Env.url()) :: Tesla.Env.t()
get(Tesla.Env.url(), [option()]) :: Tesla.Env.t()
Perform a GET request.
See request/1
or request/2
for options definition.
Example
myclient |> ExampleApi.get("/users")
ExampleApi.get("/users", query: [page: 1])
get(Tesla.Env.client(), Tesla.Env.url(), [option()]) :: Tesla.Env.t()
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")
head(Tesla.Env.client(), Tesla.Env.url()) :: Tesla.Env.t()
head(Tesla.Env.url(), [option()]) :: Tesla.Env.t()
Perform a HEAD request.
See request/1
or request/2
for options definition.
Example
myclient |> ExampleApi.head("/users")
ExampleApi.head("/users", query: [page: 1])
head(Tesla.Env.client(), Tesla.Env.url(), [option()]) :: Tesla.Env.t()
Perform a HEAD request.
See request/1
or request/2
for options definition.
Example
myclient |> ExampleApi.head("/users", query: [page: 1])
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.
Example
ExampleApi.options("/users")
options(Tesla.Env.client(), Tesla.Env.url()) :: Tesla.Env.t()
options(Tesla.Env.url(), [option()]) :: Tesla.Env.t()
Perform a OPTIONS request.
See request/1
or request/2
for options definition.
Example
myclient |> ExampleApi.options("/users")
ExampleApi.options("/users", query: [page: 1])
options(Tesla.Env.client(), Tesla.Env.url(), [option()]) :: Tesla.Env.t()
Perform a OPTIONS request.
See request/1
or request/2
for options definition.
Example
myclient |> ExampleApi.options("/users", query: [page: 1])
patch(Tesla.Env.url(), Tesla.Env.body()) :: Tesla.Env.t()
Perform a PATCH request.
See request/1
or request/2
for options definition.
Example
ExampleApi.patch("/users", %{name: "Jon"})
patch(Tesla.Env.client(), Tesla.Env.url(), Tesla.Env.body()) :: Tesla.Env.t()
patch(Tesla.Env.url(), Tesla.Env.body(), [option()]) :: Tesla.Env.t()
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"])
patch(Tesla.Env.client(), Tesla.Env.url(), Tesla.Env.body(), [option()]) :: Tesla.Env.t()
Perform a PATCH request.
See request/1
or request/2
for options definition.
Example
myclient |> ExampleApi.patch("/users", %{name: "Jon"}, query: [scope: "admin"])
post(Tesla.Env.url(), Tesla.Env.body()) :: Tesla.Env.t()
Perform a POST request.
See request/1
or request/2
for options definition.
Example
ExampleApi.post("/users", %{name: "Jon"})
post(Tesla.Env.client(), Tesla.Env.url(), Tesla.Env.body()) :: Tesla.Env.t()
post(Tesla.Env.url(), Tesla.Env.body(), [option()]) :: Tesla.Env.t()
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"])
post(Tesla.Env.client(), Tesla.Env.url(), Tesla.Env.body(), [option()]) :: Tesla.Env.t()
Perform a POST request.
See request/1
or request/2
for options definition.
Example
myclient |> ExampleApi.post("/users", %{name: "Jon"}, query: [scope: "admin"])
put(Tesla.Env.url(), Tesla.Env.body()) :: Tesla.Env.t()
Perform a PUT request.
See request/1
or request/2
for options definition.
Example
ExampleApi.put("/users", %{name: "Jon"})
put(Tesla.Env.client(), Tesla.Env.url(), Tesla.Env.body()) :: Tesla.Env.t()
put(Tesla.Env.url(), Tesla.Env.body(), [option()]) :: Tesla.Env.t()
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"])
put(Tesla.Env.client(), Tesla.Env.url(), Tesla.Env.body(), [option()]) :: Tesla.Env.t()
Perform a PUT request.
See request/1
or request/2
for options definition.
Example
myclient |> ExampleApi.put("/users", %{name: "Jon"}, query: [scope: "admin"])
Perform a request. See request/2
for available options.
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 usingTesla.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")
trace(Tesla.Env.client(), Tesla.Env.url()) :: Tesla.Env.t()
trace(Tesla.Env.url(), [option()]) :: Tesla.Env.t()
Perform a TRACE request.
See request/1
or request/2
for options definition.
Example
myclient |> ExampleApi.trace("/users")
ExampleApi.trace("/users", query: [page: 1])
trace(Tesla.Env.client(), Tesla.Env.url(), [option()]) :: Tesla.Env.t()
Perform a TRACE request.
See request/1
or request/2
for options definition.
Example
myclient |> ExampleApi.trace("/users", query: [page: 1])