{"id":16370770,"url":"https://github.com/integralist/spurious-clojure-aws-sdk-helper","last_synced_at":"2026-03-08T22:30:16.897Z","repository":{"id":26740005,"uuid":"30197669","full_name":"Integralist/spurious-clojure-aws-sdk-helper","owner":"Integralist","description":"Helper for configuring the AWS SDK to use Spurious","archived":false,"fork":false,"pushed_at":"2022-05-31T12:05:30.000Z","size":18,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-31T13:43:17.530Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://github.com/spurious-io/spurious","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Integralist.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-02-02T17:02:14.000Z","updated_at":"2022-05-31T12:05:33.000Z","dependencies_parsed_at":"2022-09-01T12:40:26.469Z","dependency_job_id":null,"html_url":"https://github.com/Integralist/spurious-clojure-aws-sdk-helper","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Integralist%2Fspurious-clojure-aws-sdk-helper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Integralist%2Fspurious-clojure-aws-sdk-helper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Integralist%2Fspurious-clojure-aws-sdk-helper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Integralist%2Fspurious-clojure-aws-sdk-helper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Integralist","download_url":"https://codeload.github.com/Integralist/spurious-clojure-aws-sdk-helper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239906707,"owners_count":19716581,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-11T03:05:56.991Z","updated_at":"2026-03-08T22:30:16.833Z","avatar_url":"https://github.com/Integralist.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spurious Clojure AWS SDK Helper\n\nInspired by the original [Spurious Ruby AWS SDK Helper](https://github.com/spurious-io/ruby-awssdk-helper): which configures the AWS SDK to use [Spurious](https://github.com/spurious-io/spurious) (Spurious is a toolset allowing development against a subset of AWS resources, locally).\n\n## Usage\n\nYou can use this helper library from within either a standard Clojure application or via an application running within a [Docker](https://www.docker.com/) container ([here is an example application](https://github.com/integralist/spurious-clojure-example)).\n\nThe process is effectively the same; the only difference is that you'll need to pass a `:docker` keyword to the `configure` function instead of a `:app` keyword (see below for examples).\n\n### Step 1\n\nAdd the following dependency to your `profile.clj`:\n\n```clj\n{:dependencies [[spurious-aws-sdk-helper \"0.2.0\"]]}\n```\n\nThe link to the library on Clojars is [http://clojars.org/spurious-aws-sdk-helper](http://clojars.org/spurious-aws-sdk-helper).\n\nInternally the library uses the [Amazonica](https://github.com/mcohen01/amazonica/) library, as there is currently no official Clojure AWS SDK.\n\nYou'll see we also use Amazonica in the following example application repository: \nhttps://github.com/Integralist/spurious-clojure-example/ \n\n\u003e Note: your project doesn't *have* to use Amazonica; \n\u003e it just made creating the example application quicker/easier.\n\n### Step 2\n\nSomewhere in your code add:\n\n```clj\n(require '[spurious-aws-sdk-helper.core :as core])\n\n(core/configure :app {:s3  \"test-bucket\"\n                      :sqs \"test-queue\"\n                      :ddb (slurp \"./resources/config/schema.yaml\")})))\n```\n\nIt's worth mentioning that you don't have to specify all the different services. You can pick and choose which one's you pass to the `configure` function to create for you.\n\n\u003e Note: we load a DynamoDB schema from a `.yaml` file \n\u003e But feel free to inline the schema or load it from some other source\n\nIf your application is running within a Docker container then the `configure` function would be called like so:\n\n```clj\n(core/configure :docker {:s3  \"test-bucket\"\n                         :sqs \"test-queue\"\n                         :ddb (slurp \"./resources/config/schema.yaml\")})))\n```\n\nIf you already have a part of your application that creates AWS resources, then you'll not need the Spurious helper to create those resources; but you will want to make sure that you call the Spurious helper's `core/configure` function *before* that part of your application is executed. This will allow the helper to still configure settings that allow the AWS SDK to work with the Spurious services.\n\nThe `core/configure` function has multi-arity and so you can call it without the map data structure, like so:\n\n```clj\n(core/configure :app)\n```\n\n\u003e Note: the Java SDK, which Spurious utilises under the covers, requires that each SDK API function is passed the same auth credentials (access/secret keys and endpoint). This means your application will need to ensure it uses the right credentials (the example app linked to above shows that you can use `[spurious-aws-sdk-helper.utils :refer [endpoint cred]]` for dev mode)\n\n## Testing locally\n\nClone this repository, make changes and then run:\n\n```bash\nlein install\n```\n\n\u003e Note: this will install the library into your local `~/.m2` cache directory. \n\u003e Leiningen will look for dependencies in the cache first\n\nOnce installed, you can safely reference the changes within this library in your application\n\n## License\n\nCopyright © 2015 Integralist\n\nDistributed under the Eclipse Public License either version 1.0 or (at\nyour option) any later version.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintegralist%2Fspurious-clojure-aws-sdk-helper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fintegralist%2Fspurious-clojure-aws-sdk-helper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintegralist%2Fspurious-clojure-aws-sdk-helper/lists"}