[英]How to run `AWS CLI` command within `aws lambda` function?
I would like to run aws cli
command (actually aws s3 sync
) from within the aws lambda function
.我想从aws lambda function
中运行aws cli
命令(实际上是aws s3 sync
)。 How do I do that?我怎么做? Ideally in python
, but javascript
(or java
) would work too.理想情况下在python
中,但javascript
(或java
)也可以。
Using python
I tried achieving this by Creating a Deployment Package
where i would have awscli
as a python package, so that I can use it later.使用python
,我尝试通过Creating a Deployment Package
来实现这一点,我将awscli
作为 python 包,以便我以后可以使用它。 However, the aws
command is not available during lambda function execution, and only the awscli
package is.但是,在 lambda 函数执行期间, aws
命令不可用,只有awscli
包可用。
How can I:我怎样才能:
awscli
available to be called during lambda function execution?或者:确保在 lambda 函数执行期间可以调用awscli
?aws s3 sync
call directly from python awscli
library?或者:直接从 python awscli
库构造一个aws s3 sync
调用?查看项目https://github.com/lucioveloso/cli2cloudformation ,您将了解如何将 cli 包装在 lambda 函数中。
-Install AWS CLI in a local virtual environment - 在本地虚拟环境中安装 AWS CLI
-Package AWS CLI and all its dependencies to a zip file - 将 AWS CLI 及其所有依赖项打包到一个 zip 文件中
-Create a Lambda Layer - 创建 Lambda 层
-Use that layer in your lambda function - 在您的 lambda 函数中使用该层
Step by step guide is at : https://bezdelev.com/hacking/aws-cli-inside-lambda-layer-aws-s3-sync/分步指南位于: https ://bezdelev.com/hacking/aws-cli-inside-lambda-layer-aws-s3-sync/
Or或者
use bash layers as suggested in other stack overflow ans Call aws-cli from AWS Lambda按照其他堆栈溢出中的建议使用 bash 层从 AWS Lambda 调用 aws-cli
Piggybacking on @lucio-veloso's answer, that's a pretty clever way of invoking the CLI from Python.捎带@lucio-veloso 的回答,这是从Python 调用CLI 的一种非常聪明的方式。
Include the awscli
in your bundle but shipping the awscli
as a dependency using whatever your build process is.将awscli
包含在您的包中,但使用您的构建过程将awscli
作为依赖项发送。
Then you can run something like:然后你可以运行类似的东西:
aws_cli_driver = awscli.clidriver.create_clidriver()
aws_cli_driver.main(["s3", "sync", "--delete", "s3://test-my-bucket", "/tmp/my-path"])
if exit_code > 0:
raise RuntimeError(f"awscli exited: {exit_code}")
Which seems to work for my aws s3 sync
use case for using the AWS CLI in Lambda.这似乎适用于我在 Lambda 中使用 AWS CLI 的aws s3 sync
用例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.