繁体   English   中英

如何使用 boto3 和 Docker 部署 AWS-Lambda?

[英]How to deploy AWS-Lambda with boto3 and Docker?

环境
jupyterlab,python 3.8。
ubuntu 20.04LTS。
(客户端:macos bigsur / google chrome)。
使用boto3。

情况
我构建了 docker 镜像并成功推送到 ECR。
该图像具有 awslambdaric 并包含 aws-lambda-rie。
我可以使用 AWS Lambda 控制台部署该映像。

我想要
使用 boto3(=python 代码)将其部署到 lambda。

问题
按照 boto3 手册,部署 lambda 如下:

import boto3
lambdac = boto3.client('lambda')
dic = {
    'FunctionName':'lambda-name',
#    'Runtime':'python3.8',
    'Role':'my-role-arn',
    'Code':{'ImageUri':uri},
}
lambdac.create_function(**dic)

这会出错。
它需要运行时,所以我添加了运行时(我认为 docker 容器版本不需要运行时)。
并运行,另一个错误返回。

InvalidParameterValueException: An error occurred (InvalidParameterValueException) when calling the CreateFunction operation: Runtime and Handler are mandatory parameters for functions created with deployment packages.

该错误让我想到“不支持 boto3 部署 lambda 与容器?”
因为我没有看到使用 boto3 将容器部署到 lambda 的示例。

问题
boto3 不是向 lambda 提供部署容器吗?
还是其他boto3 function耗材呢? (ecr 客户或其他人......)。
或者python开发环境有没有其他方法可以将容器部署到lambda?

我自己解决了。

create_function 的 kwargs 需要 "PackageType":"Image"

import boto3
lambdac = boto3.client('lambda')
dic = {
    'FunctionName':'lambda-name',
    'Role':'my-role-arn',
    'Code':{'ImageUri':uri},
    'PackageType':'Image'   #add this parameter
}
lambdac.create_function(**dic)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM