如何在AWS Lambda Python 3.6环境中运行aws-cli?

pjg*_*han 5 amazon-web-services python-3.x aws-cli aws-lambda

我想aws s3 sync在AWS Lambda函数中使用Python 3.6的运行时版本调用该命令.我怎样才能做到这一点?

为什么不使用随附的boto3 SDK?

在架构上这没有意义!

对于我的用例,我认为它在架构和财务上都很有意义,但我对其他选择持开放态度.我的Lambda功能:

  • 下载Git和Hugo
  • 下载我的存储库
  • 运行雨果生成我的小(<100页)网站
  • 将生成的文件上传到s3

现在,我能够在大约1-2秒内在1536 MB(最强大的)Lambda函数上完成上述所有操作.只有在我对网站进行更改时才会触发此功能,因此运行成本低廉.

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

截至撰写本文时,情况并非如此.

Joh*_*ein 5

从AWS Lambda函数中运行aws-cli命令:

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

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

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

  • 参考文章介绍了如何使用Lambda函数打包AWS CLI. (2认同)