如何从 Clojure 项目或 jar 创建 AWS Lambda 函数?

How to create an AWS Lambda function from a Clojure project or a jar?

AWS Lambda API (link) 的 Amazonica 测试显示了从 Javascript blob(role 是一个 ARN可以创建 Lambda 的角色的字符串):

(def handler "exports.helloWorld = function(event, context) {
                  console.log('value1 = ' + event.key1)
                  console.log('value2 = ' + event.key2)
                  console.log('value3 = ' + event.key3)
                  context.done(null, 'Hello World')
                }")

(create-function :role role :function handler)

有谁知道 create-function 是否可以从 jar 创建 Lambda?简单地将文件流或 jar 的二进制字符串传递给 create-function 是不是一个坏主意,即使它确实有效?

我想我可以使用 AWS CLI 的 bash 脚本从 jar 创建 Lambda,但首先我想检查在 Clojure 中是否有已知的直接方法来执行此操作。

另一种选择是将 jar 上传到 S3 存储桶,然后让 CloudFormation 脚本根据示例 here 部署它。不过,当 Lambda 将自己存储它们时,拥有一个 S3 存储桶来保存构建工件似乎有点愚蠢。

很抱歉我不能彻底回答你的问题,但我已经尽力了 部署一个 hello-world clojure 应用程序,希望能为您指明 正确方向:

  • 登录您的 AWS 控制台
  • 导航到 Lambda
  • 打开 Hello World 示例应用程序
  • 从下拉菜单中 select Java 8
  • 直接上传您的 JAR
  • 填写你的起始函数的类路径(不要问我为什么;我也还没做对)
  • 单击“角色”框并按照提示创建默认的推荐角色配置

如果这没有帮助,请告诉我!

你当然可以通过S3上传,我这里有一个例子:https://github.com/langford/clj-aws-lambda-example

对这个方法也很感兴趣。我同意 S3 的进站似乎可以删除。