【问题标题】:How can I run the aws-cli in an AWS Lambda Python 3.6 environment?如何在 AWS Lambda Python 3.6 环境中运行 aws-cli?
【发布时间】:2017-09-21 21:51:00
【问题描述】:

我想在运行时版本为 Python 3.6 的 AWS Lambda 函数中调用 aws s3 sync 命令。我该怎么做?

为什么不直接使用附带的 boto3 SDK?

Architecturally this doesn't make sense!

对于我的用例,我认为它在架构和财务上都有意义,但我对替代方案持开放态度。 My Lambda function:

  • 下载 Git 和 Hugo
  • 下载my repository
  • 运行 Hugo 来生成我的小型(
  • 将生成的文件上传到s3

现在,我可以在大约 1-2 秒内在 1536 MB(最强大)的 Lambda 函数上完成上述所有操作。此功能仅在我提交对我的网站的更改时触发,因此运行成本很低。

也许它已经安装在 Lambda 环境中?

在撰写本文时,还没有。

【问题讨论】:

    标签: python-3.x amazon-web-services aws-lambda aws-cli


    【解决方案1】:

    来自Running aws-cli Commands Inside An AWS Lambda Function

    import subprocess
    command = ["./aws", "s3", "sync", "--acl", "public-read", "--delete",
               source_dir + "/", "s3://" + to_bucket + "/"]
    print(subprocess.check_output(command, stderr=subprocess.STDOUT))
    

    默认情况下,AWS CLI 未安装在 Lambda 上,因此您必须将其包含在您的部署中。尽管在 Python 3.6 Lambda 环境中运行,但 Python 2.7 在环境中仍然可用,因此the article 中概述的方法将继续有效。

    要在 Lambda 系统上进行实验,请查看 lambdash

    【讨论】:

    • 不幸的是,该帖子中的方法在这种情况下不起作用。我将在我的问题中详细说明我已经尝试过的内容。 AWS CLI 仍然没有安装在 Python Lambda 实例上,虽然我没有尝试过其他环境。
    • 参考文章展示了如何使用 Lambda 函数打包 AWS CLI。
    • 感谢约翰的帮助。你的评论促使我重新审视这篇文章,我使用博客的方法让它工作。我做了两件其他人应该注意的关键错误:1) 我试图在 Amazon Linux 上构建 aws-cli 以匹配 Lambda 环境。这因奇怪的 PyYaml 错误而失败,但在 Ubuntu 上构建却完美无缺。 2) 我没有意识到 Python 2.7 在 Python 3.6 Lambda 环境中仍然可用,我试图将博客中给出的脚本改编为 Python 3.6。我认为这种方法最终可能会奏效,但我现在已经放弃了。
    猜你喜欢
    • 2021-12-17
    • 2021-08-21
    • 1970-01-01
    • 2016-10-27
    • 2022-06-15
    • 2018-06-03
    • 2020-08-20
    • 1970-01-01
    • 2018-05-18
    相关资源
    最近更新 更多