abitdodgy
I wrote an IAM service module for ExAws. You can find it on GitHub.
It’s a work in progress, but I think I have the internal API figured out. Currently, the following services are supported:
* CreateAccessKey
* CreateUser
* DeleteAccessKey
* DeleteUser
* GetAccessKeyLastUsed
* GetUser
* ListAccessKeys
* ListUsers
* UpdateAccessKey
* UpdateUser
The API aims to be easy to use. For example:
- You can pass params as atoms and the lib converts them into the AWS IAM query format.
- Each operation has its own parser that translates the XML response into its equivalent map in Elixir.
- Helper functions are available to convert some responses into a data structure.
op = Iam.create_user("my_user", path: "/my/path/")
IO.inspect(op)
%ExAws.Operation.Query{
action: "CreateUser",
params: %{
"Action" => "CreateUser",
"Path" => "/my/path/",
"UserName" => "my_user",
"Version" => "2010-05-08"
},
parser: &ExAws.Iam.Parsers.User.create/2,
path: "/my/path/",
service: :iam
}
user = op |> ExAws.request() |> Iam.to_user()
IO.inspect(user)
%ExAws.Iam.User{
arn: "arn:aws:iam::085326204011:user/my/path/my_user",
create_date: "2018-10-18T15:47:08Z",
path: "/my/path/",
user_id: "AIDAIH3RMDWGIGEXAMPLE",
username: "my_user"
}
Extending the library is straightforward. For example, adding a new operation is as easy as:
def create_group(name, opts \\ []) do
:create_group
|> to_params(opts, [group_name: name])
|> to_op()
end
Iam.create_group("my_group", path: "/my/path/")
You may need to write a parser, and, obviously, some tests, but it’s as easy as that.
I’ve not released the lib yet as I’d like to wait for some feedback before doing so.
Trending in Announcing
Hey everyone!
Req is an HTTP client for Elixir that I’ve been working on for quite some time. There is already a lot of HTTP clients out...
New
Samly can be used to enable SAML 2.0 Single Sign On in a Plug/Phoenix application.
This library uses Erlang esaml to provide
plug enabl...
New
Flop is an Elixir library that applies filtering, ordering and pagination parameters to your Ecto queries.
offset-based pagination with...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Hi there! We created Gust: A task orchestrator inspired by Airflow.
For those who have never heard about Aiflow, it’s a Python-based wor...
New
Hi all!
I want to present a small library which provides a mix task for generating an Entity-Relationship Diagram for Ecto schemas.
You...
New
Hello
Published a new library - ProcessHub!
ProcessHub is a library designed to manage process distribution within the Elixir cluster. ...
New
Other Trending Topics
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
I am seeing a lot of aplications of Argumentum ad Vericundiam in software discussions. They do link some piece of writing and point us to...
New
Hey folks,
I just published a post about Hologram’s funding and where the project goes next - the short version:
Curiosum as Main Spons...
New
This showed up on my feed.. anyone heard of it? Just hype?
Ox Alpha is a reasoning model designed for coding, sustained ag...
New
It’s not that it’s vocabulary is too advanced. It’s something worse.
I get lost trying to follow even a paragraph written by Claude. It’...
New
Today we’re releasing Oban for Python. Not an Oban client in Python. Not a pythonx wrapper embedded in Elixir. Nope, it’s a fully operati...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixirconf-us
- #elixir-ls
- #ai
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming









