{"id":32191535,"url":"https://github.com/polymeris/cljs-aws","last_synced_at":"2025-10-22T01:42:24.341Z","repository":{"id":62435319,"uuid":"151974328","full_name":"polymeris/cljs-aws","owner":"polymeris","description":"Unofficial AWS client for Clojurescript on Node.js or in the browser","archived":false,"fork":false,"pushed_at":"2018-10-26T00:35:53.000Z","size":73,"stargazers_count":24,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-22T01:42:24.039Z","etag":null,"topics":["aws","aws-sdk","clojurescript"],"latest_commit_sha":null,"homepage":"","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/polymeris.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":"2018-10-07T18:51:28.000Z","updated_at":"2023-12-06T09:28:57.000Z","dependencies_parsed_at":"2022-11-01T21:16:16.342Z","dependency_job_id":null,"html_url":"https://github.com/polymeris/cljs-aws","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/polymeris/cljs-aws","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polymeris%2Fcljs-aws","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polymeris%2Fcljs-aws/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polymeris%2Fcljs-aws/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polymeris%2Fcljs-aws/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/polymeris","download_url":"https://codeload.github.com/polymeris/cljs-aws/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polymeris%2Fcljs-aws/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280365578,"owners_count":26318385,"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","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["aws","aws-sdk","clojurescript"],"created_at":"2025-10-22T01:42:22.677Z","updated_at":"2025-10-22T01:42:24.333Z","avatar_url":"https://github.com/polymeris.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cljs-aws\n\nUnofficial AWS client for Clojurescript using core.async on Node or in the browser.\n\nTested and working, but still to be considered in **alpha** stage, any interfaces might change.\n\n[![Clojars](https://img.shields.io/clojars/v/cljs-aws.svg?style=flat)](https://clojars.org/cljs-aws)\n[![CircleCI](https://circleci.com/gh/polymeris/cljs-aws.svg?style=svg)](https://circleci.com/gh/polymeris/cljs-aws)\n\n## Usage\n\n[:book: API Reference at cljdoc](https://cljdoc.org/d/cljs-aws/cljs-aws/CURRENT/api/cljs-aws)|\n-----------------------------------------------------------------------------------|\n\n```clojure\n(ns example\n  (:require [cljs.core.async :refer [go \u003c!]]\n            [cljs-aws.s3 :as s3]))\n            \n(go (\u003c! (s3/create-bucket {:bucket                      \"examplebucket\"\n                           :create-bucket-configuration {:location-constraint \"eu-west-1\"}})))\n;=\u003e {:location \"http://examplebucket.s3.amazonaws.com/\"}\n; or\n;=\u003e {:error \"msg\"}\n```\n\n### Authentication\n\nFor node, use the underlying\n[node authentication mechanism](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials-node.html),\nin practice most likely setting your credentials using environment variables like `AWS_PROFILE` or `AWS_ACCESS_KEY_ID`\nand `AWS_SECRET_ACCESS_KEY`. \n\nFor the browser, use a Cognito identity pool, and load the credentials as follows:\n```clojure\n(aws-cljs.base.config/load-credentials! :cognito-identity-credentials {:identity-pool-id \"\u003cid\u003e\"})\n```\n\n### Examples\n\nThe [`node-examples`](node-examples/src/cljs_aws) and [`browser-examples`](browser-examples/src/cljs_aws) directories contains a few examples on how to use different AWS services.\n\n#### Node\n \nTo run Node examples, first set your AWS credentials, e.g.:\n```\nexport AWS_PROFILE=myprofile\nexport AWS_REGION=us-east-1\n```\nThen, build and run:\n```\ncd node-examples\nlein cljsbuild once dynamodb        # or another example\nnode target/dynamodb.js \n```\n\n#### Browser\n\nTo run browser examples, follow [the first step in this tutorial](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/getting-started-browser.html)\nto create a Cognito Identity Pool, then give the IAM role associated with unauthenticated users permissions to access the\nservice you are testing.\n\nEdit the example code to use your Cognito Identity Pool ID, and run figwheel:\n```\ncd browser-examples\nlein figwheel lambda\n```\n\n### A note on naming, parameters and return values\n\nThe names of the functions in each namespace are generated automatically from the PascalCase'd operation names,\nso for instance DynamoDB's [`PutItem`](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#putItem-property)\noperation becomes `dynamodb/put-item`.\nParameters and return values are also converted between camel-case and PascalCase for you, so for instance, in \n`(dynamodb/describe-table {:table-name \"mytable\"})`, the parameter will become `{\"TableName\": \"mytable\"}`.\n\nHowever, there are cases were that's not desirable. In particular, when using DynamoDB, the schema might contain\nall lower-case or all upper-case named columns, and some types are also indicated by all upper-case strings, like\n`BS`, `NS`, `SS`.\n\ncljs-aws doesn't try to be clever about those special cases (let's leave that for a higher level library), but instead\nallows you to pass string keys, which (unlike keywords) will not be re-cased or transformed in any way:\n```clojure\n(dyanmodb/put-item {:table-name \"mytable\"\n                    :item       {\"id\"         {\"S\" \"foo\"}       ; \"id\" *not* re-cased to \"Id\"\n                                 :numbers-set {\"NS\" #{}}}})     ; :numbers-set *is* PascalCased'd, but \"NS\" is not  \n```\n\n## Development\n\nInstall the AWS SDK via npm:\n```\nlein npm install\n```\n\nThe tests are ran with doo:\n```\nlein doo node test-node auto            # or \"once\"\nlein doo phantom test-browser auto\n```\n\nIf you have modified the root library and try to run the examples you will get an error similar to\n`Could not find artifact cljs-aws:cljs-aws:jar:x.y.z-DIRTY in central`, since the modified version does not exist\nin the maven repositories. Install a local copy of the library by running:\n```\nlein download-deps\nlein install\n```\n\nDeployment to clojars is handled by the CI/CD pipeline, and, if the tests pass, will run for any git tag starting with\n`v`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolymeris%2Fcljs-aws","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpolymeris%2Fcljs-aws","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolymeris%2Fcljs-aws/lists"}