<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Datomic Knowledgebase - Recent questions and answers in Ions</title>
<link>https://ask.datomic.com/index.php/qa/ions</link>
<description>Powered by Question2Answer</description>
<item>
<title>Answered: 500 errors from api gateway for large Ion responses</title>
<link>https://ask.datomic.com/index.php/1090/500-errors-from-api-gateway-for-large-ion-responses?show=1093#a1093</link>
<description>&lt;p&gt;For anyone getting opaque 500 errors for large responses through IONs in the future, in other words the problem that I was reporting here, in my case the problem was a response header was &amp;gt; 10k which exceeds this documented limit here...&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.aws.amazon.com/general/latest/gr/apigateway.html#limits_apigateway&quot;&gt;https://docs.aws.amazon.com/general/latest/gr/apigateway.html#limits_apigateway&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I hope this saves somebody some time. &lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1090/500-errors-from-api-gateway-for-large-ion-responses?show=1093#a1093</guid>
<pubDate>Thu, 15 May 2025 05:04:46 +0000</pubDate>
</item>
<item>
<title>Answered: http-direct configuation not working as per tutorials</title>
<link>https://ask.datomic.com/index.php/1018/http-direct-configuation-not-working-as-per-tutorials?show=1019#a1019</link>
<description>&lt;p&gt;Ugh! @phil Sorry that the screens have changed.  I am going to need some time to reproduce what you are looking at to try to figure out what has changed and where you need to go.  I think I probably have enough to go on here, but if there is any information you have not yet shared (perhaps because its not appropriate for this discourse) please feel free to forward into a support case at support@datomic.com.&lt;/p&gt;
&lt;p&gt;Cheers,&lt;br&gt;
Jaret&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1018/http-direct-configuation-not-working-as-per-tutorials?show=1019#a1019</guid>
<pubDate>Tue, 07 May 2024 19:51:47 +0000</pubDate>
</item>
<item>
<title>How to change the default 1 minute jetty async servlet timeout?</title>
<link>https://ask.datomic.com/index.php/939/how-to-change-the-default-minute-jetty-async-servlet-timeout</link>
<description>&lt;p&gt;We have some ring routes in our HTTP direct ring handler, which returns some Excel files, which are constructed on the fly.&lt;/p&gt;
&lt;p&gt;This handler sometimes runs for more than a minute, resulting in the following error:&lt;br&gt;
&lt;code&gt;HTTP ERROR 503 Async servlet timeout
URI:	/...
STATUS:	503
MESSAGE:	Async servlet timeout
SERVLET:	cognitect.http_endpoint.jetty.FnServlet-49bf6f8c
Powered by Jetty:// 9.4.48.v20220622&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;How can we raise this timeout to ~5minutes, which is the maximum timeout of AWS NLBs?&lt;/p&gt;
&lt;p&gt;(We are exposing the HTTP direct ion endpoint to the public internet via an AWS NLB, to avoid the 30s timeout and 10MB response payload limit of the AWS API Gateway)&lt;/p&gt;
&lt;p&gt;Multiple sources on the internet - eg. &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/ring-clojure/ring/issues/299&quot;&gt;https://github.com/ring-clojure/ring/issues/299&lt;/a&gt; - mention a &lt;code&gt;org.eclipse.jetty.server.HttpChannelState.DEFAULT_TIMEOUT&lt;/code&gt; Java property which is supposed to affect Jetty's async context timeout.&lt;/p&gt;
&lt;p&gt;Since the change of this property at runtime is not picked up by a running jetty instance, we have added provided it as a startup option, via the &lt;code&gt;OverrideSettings&lt;/code&gt; CloudFormation template parameter:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;`&lt;/code&gt;&lt;br&gt;
{:OverrideSettings&lt;br&gt;
 (str &quot;export JVM_FLAGS=\&quot;$JVM_FLAGS&quot;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  &quot; -Dclojure.server.repl=&quot;
  &quot;{:address,\\\&quot;0.0.0.0\\\&quot;,:port,50505,:accept,clojure.core.server/repl}&quot;
  &quot; -Dorg.eclipse.jetty.server.HttpChannelState.DEFAULT_TIMEOUT=300000&quot;
  &quot;\&quot;&quot;)}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;`&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;It is indeed observable within the ion JVM process:&lt;br&gt;
&lt;code&gt;(Long/getLong &quot;org.eclipse.jetty.server.HttpChannelState.DEFAULT_TIMEOUT&quot;)
=&amp;gt; 300000&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Yet we are getting a 503 timeout response from the &lt;code&gt;cognitect.http_endpoint.jetty.FnServlet-49bf6f8c&lt;/code&gt; servlet after 1 minute still.&lt;/p&gt;
&lt;p&gt;Request, which take less then a minute work as expected.&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/939/how-to-change-the-default-minute-jetty-async-servlet-timeout</guid>
<pubDate>Thu, 10 Aug 2023 16:01:07 +0000</pubDate>
</item>
<item>
<title>Answered: Is there only one deployment target for ions?</title>
<link>https://ask.datomic.com/index.php/890/is-there-only-one-deployment-target-for-ions?show=902#a902</link>
<description>&lt;p&gt;Hi Phil!&lt;/p&gt;
&lt;p&gt;When you create a primary compute group or query group, you associate it with a Code Deploy application. The &lt;code&gt;:app-name&lt;/code&gt; in your ion-config.edn connects your code to a Code Deploy application and determines which compute groups you can deploy to.  &lt;/p&gt;
&lt;p&gt;If you are interested in deploying multiple Ions to the same &quot;system&quot; you could spin up a dedicated query group per &lt;code&gt;app-name&lt;/code&gt; and deploy to those targets.&lt;/p&gt;
&lt;p&gt;Cheers,&lt;br&gt;
Jaret&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/890/is-there-only-one-deployment-target-for-ions?show=902#a902</guid>
<pubDate>Fri, 19 May 2023 13:35:34 +0000</pubDate>
</item>
<item>
<title>Answered: Is there documentation for the AWS Permissions required for push and deploy ?</title>
<link>https://ask.datomic.com/index.php/869/there-documentation-for-permissions-required-push-deploy?show=885#a885</link>
<description>&lt;p&gt;For now there is no such a thing, sadly. This is also &lt;a rel=&quot;nofollow&quot; href=&quot;https://ask.datomic.com/index.php/465/bind-ions-iam-roles-separate-from-their-ambient-compute-role?show=465#q465&quot;&gt;why this feature request&lt;/a&gt; was issued a while ago.&lt;/p&gt;
&lt;p&gt;For now you'll have to use a dedicated IAM role/user with the built-in Administrator and PowerUser policies (as per &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/cloud/operation/access-control.html#datomic-administrator-policy&quot;&gt;Access Control&lt;/a&gt; docs section).&lt;/p&gt;
&lt;p&gt;Assigning just the &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/cloud/getting-started/configure-access.html&quot;&gt;Datomic Administrator Policy&lt;/a&gt;  (&lt;code&gt;datomic-admin-...&lt;/code&gt;) and &lt;code&gt;datomic-code-...&lt;/code&gt; permissions will result in the following error upon Push:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:message
 &quot;Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 2YP8M87C0385R93H; S3 Extended Request ID: +dHQtObBUaq/T7BH7lWKNALPOCNULLd1uYy0PkXoVCeQ9A8hmilVo3KpNhtnGSOxbXB/NhPzQCI=; Proxy: null)&quot;,
 :class AmazonS3Exception}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That said, you are forced to leak access keys with a full DB administrator control to all your system developers and CI/CD operators, which is not that &quot;least privileged&quot; as one would probably like. Or I may be missing something here...&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/869/there-documentation-for-permissions-required-push-deploy?show=885#a885</guid>
<pubDate>Tue, 04 Apr 2023 11:09:08 +0000</pubDate>
</item>
<item>
<title>Answered: Support Multi-value parameters with Ions</title>
<link>https://ask.datomic.com/index.php/466/support-multi-value-parameters-with-ions?show=853#a853</link>
<description>&lt;p&gt;I was just bitten by this too.&lt;/p&gt;
&lt;p&gt;I reduced my problem to defining a &lt;code&gt;[:http-direct :handler-fn]&lt;/code&gt;, like this:&lt;/p&gt;
&lt;pre&gt;
  (constantly
    {:status  200
     :headers {&quot;x&quot; [&quot;1&quot; &quot;2&quot;]}
     :body    &quot;&quot;})
&lt;/pre&gt;
&lt;p&gt;the response I get is just&lt;/p&gt;
&lt;pre&gt;
HTTP/2 500 
date: Mon, 31 Oct 2022 22:34:23 GMT
content-type: text/plain
content-length: 12
server: Jetty(9.4.44.v20210927)
apigw-requestid: a5EJajRaSQ0EMtQ=

Server Error
&lt;/pre&gt;
&lt;p&gt;and the error in the &lt;code&gt;datomic-{SystemName}&lt;/code&gt; log group is simply:&lt;/p&gt;
&lt;pre&gt;
{
    &quot;Msg&quot;: &quot;http-endpoint respond failed: http://&amp;lt;custom-api-gw-domain&amp;gt;:8184/&quot;,
    &quot;Ex&quot;: {
        &quot;Via&quot;: [
            {
                &quot;Type&quot;: &quot;java.lang.ClassCastException&quot;
            }
        ],
        &quot;Trace&quot;: []
    },
    &quot;Type&quot;: &quot;Alert&quot;,
    &quot;Tid&quot;: 18,
    &quot;Timestamp&quot;: 1667255663263
}
&lt;/pre&gt;
&lt;p&gt;without any stack trace, so it took awhile to narrow down to this minimal repro-case :(&lt;/p&gt;
&lt;p&gt;I think it would be really helpful to mention this limitation in the documentation, at least.&lt;/p&gt;
&lt;p&gt;Maybe adding a note about &quot;Server Error&quot; to &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/cloud/troubleshooting.html&quot;&gt;https://docs.datomic.com/cloud/troubleshooting.html&lt;/a&gt; would help too.&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/466/support-multi-value-parameters-with-ions?show=853#a853</guid>
<pubDate>Mon, 31 Oct 2022 22:44:55 +0000</pubDate>
</item>
<item>
<title>Answered: Error on ion {:op :push} for redef of abs</title>
<link>https://ask.datomic.com/index.php/715/error-on-ion-op-push-for-redef-of-abs?show=716#a716</link>
<description>&lt;p&gt;I updated the ~/.clojure/deps.edn version and this seems to resolve this issue.&lt;/p&gt;
&lt;p&gt;   :ion-dev&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:deps {com.datomic/ion-dev {:mvn/version &quot;1.0.306&quot;}}
 :main-opts [&quot;-m&quot; &quot;datomic.ion.dev&quot;]}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;from &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/cloud/operation/howto.html#ion-dev&quot;&gt;https://docs.datomic.com/cloud/operation/howto.html#ion-dev&lt;/a&gt;&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/715/error-on-ion-op-push-for-redef-of-abs?show=716#a716</guid>
<pubDate>Fri, 22 Apr 2022 22:22:03 +0000</pubDate>
</item>
<item>
<title>Troubleshooting :deploy-status &quot;FAILED&quot;, :code-deploy-status &quot;SUCCEEDED&quot;</title>
<link>https://ask.datomic.com/index.php/706/troubleshooting-deploy-status-failed-deploy-status-succeeded</link>
<description>&lt;p&gt;After a few days of attempting to launch Datomic Ion on AWS following the &lt;strong&gt;Ion Tutorial&lt;/strong&gt; [0], this appears to be the best I can do:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:deploy-status &quot;FAILED&quot;, :code-deploy-status &quot;SUCCEEDED&quot;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Searching CloudWatch for “Alert - Alert” reveals no events.&lt;/p&gt;
&lt;p&gt;I did not modify the &lt;code&gt;ion-starter&lt;/code&gt; codebase except for configuring the correct &lt;code&gt;:endpoint&lt;/code&gt; and &lt;code&gt;:app-name&lt;/code&gt;. (I believe this was done correctly because I completed all steps in “Develop at the REPL”[1] without a hitch.)&lt;/p&gt;
&lt;p&gt;[0]: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/cloud/ions/ions-tutorial.html&quot;&gt;https://docs.datomic.com/cloud/ions/ions-tutorial.html&lt;/a&gt;&lt;br&gt;
[1]: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/cloud/ions/ions-tutorial.html#repl&quot;&gt;https://docs.datomic.com/cloud/ions/ions-tutorial.html#repl&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thank you for any pointers.&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/706/troubleshooting-deploy-status-failed-deploy-status-succeeded</guid>
<pubDate>Mon, 21 Feb 2022 13:33:43 +0000</pubDate>
</item>
<item>
<title>Answered: Mismatch between expected release dependencies and &quot;dependency conflicts&quot;</title>
<link>https://ask.datomic.com/index.php/702/mismatch-between-expected-dependencies-dependency-conflicts?show=704#a704</link>
<description>&lt;p&gt;Hi Jacob!&lt;/p&gt;
&lt;p&gt;The cloud-deps.edn in ion-dev does not match the cloud-deps.edn that is actually running in your version of Datomic cloud.  We understand this is a problem and we are working on it but you can ignore the dependency conflict map reported from a &lt;code&gt;push&lt;/code&gt;.  &lt;/p&gt;
&lt;p&gt;Hope you are well!&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/702/mismatch-between-expected-dependencies-dependency-conflicts?show=704#a704</guid>
<pubDate>Fri, 11 Feb 2022 20:07:52 +0000</pubDate>
</item>
<item>
<title>How datomic.client.api/connect work?</title>
<link>https://ask.datomic.com/index.php/683/how-datomic-client-api-connect-work</link>
<description>&lt;p&gt;I interested how connection work.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;When connection is open? (all time or when we call him)&lt;/li&gt;
&lt;li&gt;Can we hold connection opened all time ?  Is this good or bad?&lt;/li&gt;
&lt;li&gt;When we execute any transaction is it updated connection?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;maybe the questions are simple, but I would like to better understand how it works.&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/683/how-datomic-client-api-connect-work</guid>
<pubDate>Mon, 15 Nov 2021 14:46:44 +0000</pubDate>
</item>
<item>
<title>Answered: Is it possible to use Leiningen when deploying with ions&gt;</title>
<link>https://ask.datomic.com/index.php/667/is-it-possible-to-use-leiningen-when-deploying-with-ions?show=670#a670</link>
<description>&lt;p&gt;For ion deployment it is expected that your dependencies are managed in a &lt;code&gt;deps.edn&lt;/code&gt; file. &lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/667/is-it-possible-to-use-leiningen-when-deploying-with-ions?show=670#a670</guid>
<pubDate>Thu, 30 Sep 2021 20:57:55 +0000</pubDate>
</item>
<item>
<title>Answered: How to properly configure access to IonApiGateway?</title>
<link>https://ask.datomic.com/index.php/646/how-to-properly-configure-access-to-ionapigateway?show=647#a647</link>
<description>&lt;p&gt;Can you provide details about what problem you are trying to solve. What do you mean by &quot;properly configure access to IonApiGateway&quot;?&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/646/how-to-properly-configure-access-to-ionapigateway?show=647#a647</guid>
<pubDate>Fri, 23 Jul 2021 13:19:37 +0000</pubDate>
</item>
<item>
<title>Answered: Can I perform blocking IO during an Ion request?</title>
<link>https://ask.datomic.com/index.php/610/can-i-perform-blocking-io-during-an-ion-request?show=611#a611</link>
<description>&lt;p&gt;Kind of opposite answer, pedestal ions do not support &quot;async requests&quot;&lt;/p&gt;
&lt;p&gt;Once you can't return an async channel, the only other way to do IO is blocking IO&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/pedestal/pedestal.ions#caveats&quot;&gt;https://github.com/pedestal/pedestal.ions#caveats&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;http://pedestal.io/reference/request-map#_description&quot;&gt;http://pedestal.io/reference/request-map#_description&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I agree with you that it should be explicit on docs&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/610/can-i-perform-blocking-io-during-an-ion-request?show=611#a611</guid>
<pubDate>Thu, 20 May 2021 01:04:11 +0000</pubDate>
</item>
<item>
<title>Answered: Ion deploy says Function not found</title>
<link>https://ask.datomic.com/index.php/597/ion-deploy-says-function-not-found?show=598#a598</link>
<description>&lt;p&gt;Finally I tested a hunch that if I just used different lambda names, I'd be in the situation where the system will no longer expect this particular lambda to exist so bad that it fails deploying my app. This hunch turned out to be true.&lt;/p&gt;
&lt;p&gt;My old name still appears in each deployment's list of lambdas to delete, but since I no more use the name, my deployments won't fail because of it.&lt;/p&gt;
&lt;p&gt;I still wonder, though, how I could make it so that the system understands once for all that this lambda no more exists.&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/597/ion-deploy-says-function-not-found?show=598#a598</guid>
<pubDate>Fri, 05 Mar 2021 14:51:55 +0000</pubDate>
</item>
<item>
<title>Answered: How do I use datomic.ion/cast to log on my development machine?</title>
<link>https://ask.datomic.com/index.php/556/how-do-i-use-datomic-ion-cast-to-log-on-my-development-machine?show=574#a574</link>
<description>&lt;p&gt;You can redirect to a file&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(cast/initialize-redirect cast-file)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;or to stdout&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(cast/initialize-redirect :stdout)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;See &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/cloud/ions/ions-monitoring.html#local-workflow&quot;&gt;https://docs.datomic.com/cloud/ions/ions-monitoring.html#local-workflow&lt;/a&gt;&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/556/how-do-i-use-datomic-ion-cast-to-log-on-my-development-machine?show=574#a574</guid>
<pubDate>Fri, 08 Jan 2021 16:17:23 +0000</pubDate>
</item>
<item>
<title>Answered: Is there a way in Datomic Cloud Ions to know what git hash is being run?</title>
<link>https://ask.datomic.com/index.php/571/is-there-way-in-datomic-cloud-ions-know-what-git-hash-being-run?show=573#a573</link>
<description>&lt;p&gt;It is in the description of the CodeDeploy deployment.  You should be able to get it from the AWS CodeDeploy API.&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/571/is-there-way-in-datomic-cloud-ions-know-what-git-hash-being-run?show=573#a573</guid>
<pubDate>Fri, 08 Jan 2021 16:12:54 +0000</pubDate>
</item>
<item>
<title>How do I initialize core.async connections in Datomic Cloud?</title>
<link>https://ask.datomic.com/index.php/539/how-do-i-initialize-core-async-connections-in-datomic-cloud</link>
<description>&lt;p&gt;I need to &quot;hook up&quot; a core.async channel to a thread on system initialization. How might I go about doing this, or doing any initialization tasks?&lt;/p&gt;
&lt;p&gt;Thanks,&lt;br&gt;
Hadil&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/539/how-do-i-initialize-core-async-connections-in-datomic-cloud</guid>
<pubDate>Sat, 28 Nov 2020 23:53:01 +0000</pubDate>
</item>
<item>
<title>Answered: Quote string values in result of Ions `{:op :deploy}`</title>
<link>https://ask.datomic.com/index.php/467/quote-string-values-in-result-of-ions-op-deploy?show=538#a538</link>
<description>&lt;p&gt;Yup, ran into this today, killed my poor babashka script &lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/467/quote-string-values-in-result-of-ions-op-deploy?show=538#a538</guid>
<pubDate>Thu, 26 Nov 2020 20:37:35 +0000</pubDate>
</item>
<item>
<title>How can I get a ring-like request in ionized web handlers?</title>
<link>https://ask.datomic.com/index.php/537/how-can-i-get-a-ring-like-request-in-ionized-web-handlers</link>
<description>&lt;p&gt;Hello! After hearing the talks and reading the tutorial and documentation, I was under the impression that ions receive their requests in a ring-like format, and that we can &quot;wire a web handler to a single function, using a routing library such as Compojure or pedestal.&quot;&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/cloud/ions/ions-tutorial.html#conclusion&quot;&gt;1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On one hand, this seems to be true with standard ion lambdas, but these are not exposed to the web. OTOH if we want to expose our web service, we need to write a web handler that we'll ionize. When we do that, the requests coming in lose their ring-like shape, and only expose the following keys:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; :headers
 :server-name
 :body
 :datomic.ion.edn.api-gateway/json
 :datomic.ion.edn.api-gateway/data
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With that, our router (reitit backed by ring) fails.&lt;/p&gt;
&lt;p&gt;I have seen different examples on the web where some router is exposed behind a single web handler, the most promising of which being probably &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/markbastian/replion&quot;&gt;Replion (look at the code)&lt;/a&gt; (and he uses reitit and ring and seems to have more success than us) and &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/pedestal/pedestal-ions-sample&quot;&gt;Pedestal Ions Sample&lt;/a&gt; (but Pedestal works in a relaxed ring context).&lt;/p&gt;
&lt;p&gt;So my question is: is there something obvious that I don't understand? Are there more working examples? Some people seem to write adapters to transform the requests to make them more ring-like. Are they doing the right thing, or are we all missing something?&lt;/p&gt;
&lt;p&gt;For example, here's a very naive adapter:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(defn get-path [req]
  (let [s (get-in req [:datomic.ion.edn.api-gateway/data :requestContext :stage] &quot;stg&quot;)
        p (get-in req [:datomic.ion.edn.api-gateway/data :requestContext :http :path] &quot;/&quot;)]
    (get (str/split p (re-pattern (str &quot;/&quot; s))) 1 &quot;/&quot;))) ; get rid of stage leading path!

(defn req-&amp;gt;ring-req [req]
  (assoc req
         :protocol (get-in req
                           [:datomic.ion.edn.api-gateway/data :requestContext :http :protocol] &quot;HTTP/1.1&quot;)
         :remote-addr (get-in req [:headers &quot;host&quot;] &quot;example.com&quot;)
         :request-method (keyword
                          (str/lower-case
                           (get-in req [:datomic.ion.edn.api-gateway/data :requestContext :http :method] &quot;GET&quot;)))
         :uri (get-path req)))

(defn app
  &quot;Web handler that returns the app's responses for each web request.&quot;
  [arg]
  (let [sta (start! arg)
        req (req-&amp;gt;ring-req arg)
        ret ((handler/app) req)]
    ret))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Another related question is: what is the &lt;code&gt;:integration&lt;/code&gt; key on &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/cloud/ions/ions-reference.html#lambda-config&quot;&gt;lambda configurations&lt;/a&gt;? Why does &quot;nobody&quot; use it, except Stu's slack event handler? What does it do? We tried setting it and didn't seem to observe an impact.&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/537/how-can-i-get-a-ring-like-request-in-ionized-web-handlers</guid>
<pubDate>Thu, 26 Nov 2020 19:04:57 +0000</pubDate>
</item>
<item>
<title>Answered: How can I get rid of reflection warnings in cognitect/hmac_authn ?</title>
<link>https://ask.datomic.com/index.php/507/how-can-get-rid-of-reflection-warnings-cognitect-hmacauthn?show=513#a513</link>
<description>&lt;p&gt;Hi Matt,&lt;/p&gt;
&lt;p&gt;First, I'd confirm you are on the latest clj tools deps: &lt;/p&gt;
&lt;p&gt;&lt;code&gt;brew upgrade clojure/tools/clojure&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Then can you let me know what version you are on with:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;clojure -Sdescribe&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If you still see it on the latest, could I see your java version:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;(System/getProperty &quot;java.version&quot;)&lt;/code&gt;&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/507/how-can-get-rid-of-reflection-warnings-cognitect-hmacauthn?show=513#a513</guid>
<pubDate>Mon, 16 Nov 2020 20:14:38 +0000</pubDate>
</item>
<item>
<title>Answered: Is there an example of using something like ring with ions http-direct?</title>
<link>https://ask.datomic.com/index.php/505/there-example-using-something-like-ring-with-ions-http-direct?show=510#a510</link>
<description>&lt;p&gt;I found  &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/pedestal/pedestal-ions-sample&quot;&gt;https://github.com/pedestal/pedestal-ions-sample&lt;/a&gt; that might be worth looking into.&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/505/there-example-using-something-like-ring-with-ions-http-direct?show=510#a510</guid>
<pubDate>Wed, 11 Nov 2020 17:23:25 +0000</pubDate>
</item>
<item>
<title>Bind Ions to IAM roles separate from their ambient compute role</title>
<link>https://ask.datomic.com/index.php/465/bind-ions-iam-roles-separate-from-their-ambient-compute-role</link>
<description>&lt;p&gt;Right now Ions run under the role of the underlying compute resources that they are deployed to. It would be nice to be able to give Ions a role independent of the ambient compute. This can be managed by the Ion runtime machinery by calling AssumeRole in the background, and supplying those creds to the Ions&lt;/p&gt;
&lt;p&gt;This is important so that Ions don't have to run with the permissions of all the other ions running in the same compute.&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/465/bind-ions-iam-roles-separate-from-their-ambient-compute-role</guid>
<pubDate>Sun, 25 Oct 2020 19:58:49 +0000</pubDate>
</item>
<item>
<title>Bind Ions to IAM roles separate from their ambient compute role</title>
<link>https://ask.datomic.com/index.php/421/bind-ions-iam-roles-separate-from-their-ambient-compute-role</link>
<description>&lt;p&gt;Right now Ions run under the role of the underlying compute resources that they are deployed to. It would be nice to be able to give Ions a role independent of the ambient compute. This can be managed by the Ion runtime machinery by calling AssumeRole in the background, and supplying those creds to the Ions&lt;/p&gt;
&lt;p&gt;This is important so that Ions don't have to run with the permissions of all the other ions running in the same compute.&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/421/bind-ions-iam-roles-separate-from-their-ambient-compute-role</guid>
<pubDate>Thu, 22 Oct 2020 17:28:02 +0000</pubDate>
</item>
<item>
<title>Allow users to redirect each type of Datomic.ion.cast message to different targets in local dev environment</title>
<link>https://ask.datomic.com/index.php/422/users-redirect-datomic-message-different-targets-environment</link>
<description>&lt;p&gt;Ability to direct each ion.cast type (Event, alert, dev, metric) to specific targets in local dev.&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/422/users-redirect-datomic-message-different-targets-environment</guid>
<pubDate>Thu, 22 Oct 2020 17:06:23 +0000</pubDate>
</item>
</channel>
</rss>