<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: chiefbiiko</title>
    <description>The latest articles on DEV Community by chiefbiiko (@chiefbiiko).</description>
    <link>https://dev.to/chiefbiiko</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F273982%2Fe8aa5294-45ed-4d5e-85bf-a736b895a5b0.jpeg</url>
      <title>DEV Community: chiefbiiko</title>
      <link>https://dev.to/chiefbiiko</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chiefbiiko"/>
    <language>en</language>
    <item>
      <title>falcon-cli 4 post-quantum file sigs</title>
      <dc:creator>chiefbiiko</dc:creator>
      <pubDate>Sat, 02 Oct 2021 06:37:51 +0000</pubDate>
      <link>https://dev.to/chiefbiiko/falcon-cli-4-post-quantum-file-sigs-57oi</link>
      <guid>https://dev.to/chiefbiiko/falcon-cli-4-post-quantum-file-sigs-57oi</guid>
      <description>&lt;p&gt;Post-quantum cryptography is being developed, benchmarked, tested, discussed, and elaborated... Let me join in on that with a little practical software piece. &lt;a href="https://github.com/chiefbiiko/falcon-cli"&gt;&lt;code&gt;falcon-cli&lt;/code&gt;&lt;/a&gt; is a CLI tool to sign and verify files with the post-quantum signature scheme &lt;a href="https://falcon-sign.info/"&gt;FALCON&lt;/a&gt;, a round 3 finalist for digital signature algorithms in NIST's post-quantum cryptography standardization competition.&lt;/p&gt;

&lt;p&gt;The tool supports keygen, file sign and verify ops, as such it is complete and ready for common file signature use cases. Imagine - now you can sign your Github Releases with (probably) post-quantum safe signatures and chill (4ever)...&lt;/p&gt;

&lt;p&gt;Usage should be straightforward when glimpsin' over the &lt;a href="https://github.com/chiefbiiko/falcon-cli/blob/main/README.md"&gt;README&lt;/a&gt;. The default key location shouldn't be surprisin' as well: &lt;code&gt;~/.falcon-cli/(public|secret).key&lt;/code&gt;. Also, if explicit input or output files are omitted, the tool falls back to &lt;code&gt;stdin&lt;/code&gt; and &lt;code&gt;stdout&lt;/code&gt; for IO.&lt;/p&gt;

&lt;p&gt;In case of any issues get at me on &lt;a href="https://github.com/chiefbiiko/falcon-cli/issues"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>tooling</category>
      <category>opensource</category>
      <category>security</category>
    </item>
    <item>
      <title>cors with apigw</title>
      <dc:creator>chiefbiiko</dc:creator>
      <pubDate>Mon, 21 Dec 2020 08:02:48 +0000</pubDate>
      <link>https://dev.to/chiefbiiko/cors-with-apigw-4eip</link>
      <guid>https://dev.to/chiefbiiko/cors-with-apigw-4eip</guid>
      <description>&lt;h1&gt;
  
  
  cors with apigw
&lt;/h1&gt;

&lt;p&gt;🌐🔗🌒🐙&lt;/p&gt;

&lt;p&gt;lets assume a freshly mounted apigw with a resource &lt;code&gt;/pitbulls&lt;/code&gt; having two endpoints serving and accepting json:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;GET /pitbulls&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;POST /pitbulls&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;once you start hitting these from a browser they need to have cors enabled..&lt;/p&gt;

&lt;h2&gt;
  
  
  determining cors request types
&lt;/h2&gt;

&lt;p&gt;there are two types of cors requests: simple and non-simple - refer to these &lt;a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html"&gt;AWS docs&lt;/a&gt; &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Simple_requests"&gt;MDN docs&lt;/a&gt; 4 specifics.&lt;/p&gt;

&lt;p&gt;a simple requests has the following characteristics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;HEAD&lt;/code&gt;, or &lt;code&gt;POST&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;if &lt;code&gt;POST&lt;/code&gt; the request must include an origin header&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;request payload content type is &lt;code&gt;text/plain&lt;/code&gt;, &lt;code&gt;multipart/form-data&lt;/code&gt;, or &lt;code&gt;application/x-www-form-urlencoded&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;no custom headers&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  steps 2 enable cors
&lt;/h2&gt;

&lt;h3&gt;
  
  
  4 simple requests
&lt;/h3&gt;

&lt;p&gt;scenario: &lt;code&gt;GET /pitbulls&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;the backend response must include an &lt;code&gt;Access-Control-Allow-Origin&lt;/code&gt; header granting access to the request's origin domain. Note that one should specify protocol, domain, and port when defining the origin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;backend response to a simple cors request&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;statusCode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;access-control-allow-origin&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://your.domain:443&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;content-type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;[{"name":"dogo"}]&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4 non-simple requests
&lt;/h3&gt;

&lt;p&gt;scenario: &lt;code&gt;POST /pitbulls&lt;/code&gt; with request payload &lt;code&gt;content-type: application/json&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;our &lt;code&gt;pitbulls&lt;/code&gt; resource needs to expose an &lt;code&gt;OPTIONS&lt;/code&gt; method that responds to cors preflight requests with the following cors headers: &lt;code&gt;Access-Control-Allow-Methods&lt;/code&gt; &lt;code&gt;Access-Control-Allow-Headers&lt;/code&gt; &lt;code&gt;Access-Control-Allow-Origin&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;cors options method snippet in cloudformation&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;CorsMethod&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;AWS::ApiGateway::Method&lt;/span&gt;
  &lt;span class="na"&gt;Properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;AuthorizationType&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;NONE&lt;/span&gt;
    &lt;span class="na"&gt;RestApiId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;!Ref&lt;/span&gt; &lt;span class="s"&gt;RestApi&lt;/span&gt;
    &lt;span class="na"&gt;ResourceId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;!Ref&lt;/span&gt; &lt;span class="s"&gt;PitbullsResource&lt;/span&gt;
    &lt;span class="na"&gt;HttpMethod&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;OPTIONS&lt;/span&gt;
    &lt;span class="na"&gt;Integration&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;MOCK&lt;/span&gt;
      &lt;span class="na"&gt;IntegrationResponses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;StatusCode&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt;
          &lt;span class="na"&gt;ResponseParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;method.response.header.Access-Control-Allow-Headers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;'content-type'"&lt;/span&gt;
            &lt;span class="na"&gt;method.response.header.Access-Control-Allow-Methods&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;'OPTIONS,GET,POST'"&lt;/span&gt;
            &lt;span class="na"&gt;method.response.header.Access-Control-Allow-Origin&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;!If&lt;/span&gt;
              &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;IsProd&lt;/span&gt;
              &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;'https://your.domain:443'"&lt;/span&gt;
              &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;'*'"&lt;/span&gt;
          &lt;span class="na"&gt;ResponseTemplates&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;application/json&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;'&lt;/span&gt;
      &lt;span class="na"&gt;PassthroughBehavior&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;WHEN_NO_MATCH&lt;/span&gt;
      &lt;span class="na"&gt;RequestTemplates&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;application/json'&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;{"statusCode":200}'&lt;/span&gt;
    &lt;span class="na"&gt;MethodResponses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;StatusCode&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt;
        &lt;span class="na"&gt;ResponseModels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;application/json&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Empty&lt;/span&gt;
        &lt;span class="na"&gt;ResponseParameters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;method.response.header.Access-Control-Allow-Headers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;False&lt;/span&gt;
          &lt;span class="na"&gt;method.response.header.Access-Control-Allow-Methods&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;False&lt;/span&gt;
          &lt;span class="na"&gt;method.response.header.Access-Control-Allow-Origin&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;False&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Additionally, the backend, lambdas, ec2s or whatever, need to also respond with the three cors headers listed above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;backend responding to a non-simple cors request with mandated headers&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;statusCode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;201&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;access-control-allow-headers&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;content-type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;access-control-allow-methods&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;OPTIONS,POST&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;access-control-allow-origin&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://your.domain:443&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🐙🌐🔗🌒 ~ AWS API Gateway CORS&lt;/p&gt;

</description>
      <category>aws</category>
      <category>apigateway</category>
      <category>cors</category>
      <category>cloudformation</category>
    </item>
    <item>
      <title>lambda-wasmtime - Running WebAssembly on AWS Lambda</title>
      <dc:creator>chiefbiiko</dc:creator>
      <pubDate>Mon, 18 Nov 2019 05:55:16 +0000</pubDate>
      <link>https://dev.to/chiefbiiko/lambda-wasmtime-running-webassembly-on-aws-lambda-51gi</link>
      <guid>https://dev.to/chiefbiiko/lambda-wasmtime-running-webassembly-on-aws-lambda-51gi</guid>
      <description>&lt;p&gt;With &lt;a href="https://github.com/chiefbiiko/lambda-wasmtime"&gt;&lt;code&gt;lambda-wasmtime&lt;/code&gt;&lt;/a&gt; we have a &lt;a href="https://wasmtime.dev/"&gt;&lt;code&gt;wasmtime&lt;/code&gt;&lt;/a&gt;-powered custom AWS Lambda runtime for running WebAssembly, including futuristic stuff like &lt;a href="https://wasi.dev/"&gt;WASI (WebAssembly System Interface)&lt;/a&gt; and &lt;a href="https://github.com/WebAssembly/interface-types/blob/master/proposals/interface-types/Explainer.md"&gt;WAIT (WebAssembly Interface Types)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To run in the AWS Lambda execution environment we need to build a WebAssembly module that exports a function capable of accepting and returning &lt;code&gt;JSON&lt;/code&gt; strings. The remainder of this post demonstrates just that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building a WebAssembly Lambda
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Make&lt;/strong&gt; sure to have &lt;a href="https://github.com/bytecodealliance/cargo-wasi"&gt;&lt;code&gt;cargo-wasi&lt;/code&gt;&lt;/a&gt; installed: &lt;code&gt;cargo install cargo-wasi&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Setup&lt;/strong&gt; a new project: &lt;code&gt;cargo new &amp;lt;project_name&amp;gt; --lib&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Craft&lt;/strong&gt; &lt;code&gt;Cargo.toml&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;specify the crate type as &lt;code&gt;cdylib&lt;/code&gt; to make this a &lt;code&gt;C&lt;/code&gt;-ish shared library&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;include a recent &lt;code&gt;wasm-bindgen&lt;/code&gt; (tested with &lt;code&gt;0.2.54&lt;/code&gt;)&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[lib]&lt;/span&gt;
&lt;span class="py"&gt;crate-type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;["cdylib"]&lt;/span&gt;

&lt;span class="nn"&gt;[dependencies]&lt;/span&gt;
&lt;span class="py"&gt;wasm-bindgen&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"0.2.54"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Define&lt;/strong&gt; a handler in &lt;code&gt;src/lib.rs&lt;/code&gt; and &lt;code&gt;#[wasm_bindgen]&lt;/code&gt; it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;wasm_bindgen&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nn"&gt;prelude&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;wasm_bindgen&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nd"&gt;#[wasm_bindgen]&lt;/span&gt;
&lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c"&gt;// lambda-wasmtime passes the event and context as JSON&lt;/span&gt;
    &lt;span class="c"&gt;// context looks like: { function_arn, deadline_ms, request_id, trace_id }&lt;/span&gt;
    &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="nf"&gt;.to_string&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note that you can name your handler whatever you want. The &lt;code&gt;lambda-wasmtime&lt;/code&gt; runtime determines the actual handler name from the environment variable &lt;code&gt;_HANDLER&lt;/code&gt; which is user-defined in AWS Lambda.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build&lt;/strong&gt; the &lt;code&gt;.wasm&lt;/code&gt; binary: &lt;code&gt;cargo wasi build --release&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For now, when using wasm-bindgen &lt;code&gt;--release&lt;/code&gt; mode is required to build binaries with interface types ~strings&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Zipup&lt;/strong&gt; a lambda bundle: &lt;code&gt;zip -j &amp;lt;project&amp;gt;/lambda.zip &amp;lt;project&amp;gt;/target/wasm32-wasi/release/&amp;lt;project_name&amp;gt;.wasm&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploy&lt;/strong&gt; the lambda bundle on AWS with the &lt;code&gt;lambda-wasmtime&lt;/code&gt; runtime layer - get its latest release from &lt;a href="https://github.com/chiefbiiko/lambda-wasmtime/releases/latest"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If your handler performs non-trivial computations you probably need to provision the lambda with extra memory. Also note that currently all of this is in MVP state and experimental.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>lambda</category>
      <category>webassembly</category>
      <category>runtime</category>
    </item>
  </channel>
</rss>
