【问题标题】:Run awscli from AWS Lambda从 AWS Lambda 运行 awscli
【发布时间】:2018-01-18 04:26:06
【问题描述】:

我想从 AWS Lambda 执行 awscli 以进行 s3 同步。 当我使用 ./aws 时,出现以下错误:

('Status : FAIL', 127, 's3: ./aws: No such file or directory\n')

即使尝试使用完整路径但仍然出现错误:

('Status : FAIL', 127, 's3: /Library/Frameworks/Python.framework/Versions/2.7/bin/aws: 没有这样的文件或目录 ')

【问题讨论】:

  • 如果我没记错的话,你可以用 AWS cli 做的所有事情都可以通过 boto3 完成(实际上,当你查看源代码时,你可以看到 cli 只是 boto3 的一个接口) ,那么您是否有理由要通过 cli 而不是使用 boto3,因为无论如何它最终都会使用它(您可以通过查看此处的代码来确认这一点:github.com/aws/aws-cli/blob/develop/awscli/clidriver.py)?这将比使用 cli 更有效,并且可能比尝试安装 awscli 并在 lambda 中实现错误处理更容易。

标签: python amazon-s3 aws-lambda


【解决方案1】:

我建议使用在 AWS Lambda 中实现的 AWS 开发工具包。有了它,您可以访问 S3 和许多其他 AWS 服务。

试试看here 用 Python 编程

其他 SDK 可以在 here 找到。 请记住,您可以只使用 Lambda 支持的语言。

【讨论】:

  • 我正在使用 Python 子进程中的 awscli。
【解决方案2】:

AWS CLI 未安装在 AWS Lambda 上,因此无法开箱即用。

由于 AWS CLI 只是一个 Python 包,如果您使用 Python 作为运行时,您可以将其作为部署包的一部分上传。

【讨论】:

  • 我已经安装并上传了 awscli 包,但我仍然收到此错误。
  • 即使尝试使用 aws 的完整路径,但仍然出现同样的错误:('Status : FAIL', 127, 's3: /Library/Frameworks/Python.framework/Versions/2.7/bin/aws: No这样的文件或目录')
  • 嗯,你当然要使用正确的路径。你用的那个显然不正确。
  • 同样如 luccas 所述,如果您没有充分的理由使用 awscli,您应该使用 AWS Lambda 中预装的 AWS 开发工具包。
【解决方案3】:

使用您的 Lambda 环境中已包含的 Python boto3。您可以使用它上传到您的 S3 存储桶,据我所知,它不使用同步命令,但与 CLI 中使用的 aws s3 cp 命令相同。

【讨论】:

    【解决方案4】:

    我在 AWS Lambda 中使用了 AWS CLI - 通过将其添加为层。您可以通过使用 CDK 构造对 Lambda 基础设施进行编码来将其添加为一个层。

    https://pypi.org/project/aws-cdk.lambda-layer-awscli/

    在我的用例中 - 我想运行 aws s3 sync 命令。

    【讨论】:

      猜你喜欢
      • 2023-02-24
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      • 2021-12-17
      • 2019-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多