Lambda Docker容器的完整示例

kmpatx3s  于 2023-04-20  发布在  Docker
关注(0)|答案(1)|浏览(126)

我正在寻找一个完整的往返示例:
1.创建一个自定义的docker镜像(lambda将使用-我有一个工作的Dockerfile)
1.将映像推送到AWS容器注册表
1.手动调用AWS lambda,从AWS容器注册表中提取映像(并示例化容器)
1.并调用容器中将运行的任务(特定的bash脚本)
1.然后在容器运行后释放所有资源(容器被移除,lambda完成)
这可能吗?有什么例子吗?

bmp9r5qi

bmp9r5qi1#

我设法以这种方式部署了一个Lambda来示例化Docker容器:
0.确保您的PC上安装了Docker Desktop并正在运行(https://docs.docker.com/engine/install/
1.通过在终端中运行aws configure来设置您的AWS帐户凭据
2.准备一个python脚本,名为main.py。在脚本中包含一个输出函数,如下所示:

def lambda_handler(event, context):
    <your code here>
    responseBody = <some output from your code>
    return {
        "statusCode": 200,
        "body": responseBody
        }

3.准备一个你需要在容器中安装的python模块的列表,并把它们放在一个名为requirements.txt的文件中
4.准备一个SAM模板,名为template.yaml,格式类似于:

Transform: 'AWS::Serverless-2016-10-31'
  Description: An AWS Serverless Specification template for deploying lambda functions using a Docker container image
  Resources:
    Function:
      Type: 'AWS::Serverless::Function'
      Properties:
        FunctionName: <lambda function name>
        Description: <description about lambda function>
        PackageType: Image
        Timeout: 60
      Metadata:
        Dockerfile: Dockerfile
        DockerContext: .

(有关lambda函数可能需要的其他属性列表,请参阅https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html。)
5.准备一个类似格式的Dockerfile:

FROM public.ecr.aws/lambda/python:3.7
WORKDIR /app
COPY main.py .
COPY requirements.txt .
RUN pip install -r requirements.txt
CMD [ "/app/main.lambda_handler" ]

1.在终端中,运行sam build -u来构建Docker镜像。
1.在终端中,运行sam deploy -g,然后按照屏幕上的步骤生成名为samconfig.toml的配置文件,并将lambda函数和ECR Docker镜像部署到AWS。
1.部署完成后,您可以在AWS站点上的Lambda控制台中测试新的lambda函数。由于lambda函数已部署为容器镜像,因此每次调用时都会示例化Docker容器。

相关问题