Home > clj-aws

clj-aws

Clj-aws is a project mainly written in Clojure, based on the View license.

Clojure wrapper for the Amazon AWS SDK

clj-aws

Wrapper for the Amazon AWS SDK for Java.

Installing

A snapshot release is published on Clojars. It can be added to your Leiningen project.clj as:

    [clj-aws "0.0.1-SNAPSHOT"]

Supported APIs

This library is very much a work in progress. The following Amazon API's are currently supported:

  • Amazon Simple Email Service
  • Amazon Simple Notification Service

Usage

To use the Amazon API's you'll need your AWS credentials (access key and secret key). These are available in the AWS Console.

Create your credentials using the credentials function:

    (def creds (clj-aws.core/credentials "ACCESS_KEY" "SECRET_KEY"))

Simple Email Service

    (def client (clj-aws.ses/client creds))
    (def message (clj-aws.ses/message "Subject" "Hello, World!"))
    (def destination (clj-aws.ses/destination ["[email protected]" "[email protected]"]))
    (def sender "[email protected]")

    (clj-aws.ses/send-email client sender destination message)

Simple Notification Service

Firstly, create a client with your AWS credentials

    (def client (clj-aws.sns/client creds))

Next, it's necessary to define the topic for the set of notifications you would like to issue.

    (create-topic client "some_topic")

You can use list-topics to see all currently created topics (and their ARN).

Once you've defined a topic you can create a subscription to that topic. The library allows subscriptions to be defined with the following functions:

  • http-subscription
  • email-subscription
  • sqs-subscription

All subscriptions are tied to a topic's ARN. This can be found by calling list-topics:

    (.getTopicArn (first (list-topics client)))
    ;; "arn:aws:sns:us-east-1:121xxx:some_topic"

Then, subscriptions can be bound as follows:

    (subscribe client arn (http-subscription "https://my.site/testing"))

and an email subscription:

    (subscribe client arn (email-subscription "[email protected]"))

Notifications can then be posted as follows:

    (def topic-arn "arn:aws:sns:us-east-1:121xxx:some_topic")
    (publish client topic-arn "Test message!!")

License

Copyright © 2011 Paul Ingles

Distributed under the Eclipse Public License, the same as Clojure.

Previous:smsgateway