【问题标题】:How to create an AWS Lambda function from a Clojure project or a jar?如何从 Clojure 项目或 jar 中创建 AWS Lambda 函数?
【发布时间】:2016-08-31 04:41:25
【问题描述】:

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

(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 存储桶来保存构建工件似乎有点愚蠢。

【问题讨论】:

    标签: amazon-web-services jar clojure aws-lambda amazonica


    【解决方案1】:

    您绝对可以通过 S3 进行上传,我在这里有一个这样做的示例:https://github.com/langford/clj-aws-lambda-example

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

    【讨论】:

    • 如果该示例发生任何事情,相关工具是来自github.com/mhjort/clj-lambda-utilslein lambda。对我来说似乎是一个很好的解决方案,下次我使用 Lambdas 时会尝试一下。
    【解决方案2】:

    很抱歉,我无法彻底回答您的问题,但我已经尝试过了 部署一个 hello-world clojure 应用程序,因此希望能指出您 正确的方向:

    • 登录您的 AWS 控制台
    • 导航到 Lambda
    • 打开 Hello World 示例应用程序
    • 从下拉菜单中选择 Java 8
    • 直接上传您的 JAR
    • 将 Classpath 填入你的 starter 函数(不要问我为什么;我也还没搞定)
    • 单击角色框并按照提示创建默认的推荐角色配置

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

    【讨论】:

    • 随着 jar 越来越大,直接上传 jar 方法最终会失败。我不记得确切的阈值,但当你弄清楚 S3 时,它会突然有点工作。
    猜你喜欢
    • 2010-12-06
    • 2019-08-28
    • 2016-03-25
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多