docker - Dockerized lambda:调用 sam 本地调用返回一个无法导入模块“索引”:Dockerized
问题描述
我正在使用 AWS SAM 并对 lambdas 进行 dockerized。这是我的Dockerfile
FROM python:3.7-alpine
RUN apk update && \
apk upgrade && \
apk add bash && \
apk add --no-cache --virtual build-deps build-base gcc && \
pip install aws-sam-cli && \
apk del build-deps
WORKDIR /app/
RUN ls
COPY bin/sam_entrypoint.sh bin/
COPY lambda/hello_world/requirements.txt .
RUN pip install -r requirements.txt
EXPOSE 8000
ENTRYPOINT "bin/sam_entrypoint.sh"
这是我的docker-compose.yaml
version: '3.6'
services:
sam_app:
build:
context: .
dockerfile: Dockerfile
command: ["$PWD"]
image: sam:0.1
ports:
- "8000:8000"
volumes:
- .:/app
- /var/run/docker.sock:/var/run/docker.sock
这是我的bin/sam_entrypoint.sh
#!/bin/sh
set -ex
echo "Hello"
BASEDIR="${PWD}/lambda/"
/usr/local/bin/sam build \
--template lambda/template.yaml
/usr/local/bin/sam local start-api \
--template lambda/template.yaml \
--host 0.0.0.0 \
--port 8000 \
--docker-volume-basedir "${BASEDIR}" \
--docker-network sam-app_default \
--skip-pull-image
当我运行dc up
(在本地启动 api)并点击http://0.0.0.0:8000/hello
. 我收到以下错误。
似乎安装是正确的,但不确定我到底做错了什么。它必须是一些简单的缺失。我将不胜感激任何建议或帮助。
编辑:添加template.yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
sam-app
Sample SAM Template for sam-app
Globals:
Function:
Timeout: 3
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: hello_world/
Handler: index.lambda_handler
Runtime: python3.7
Events:
HelloWorld:
Type: Api
Properties:
Path: /hello
Method: get
解决方案
推荐阅读
- javascript - Bootstrap is not working under Admin template
- selenium - 无法部署工件:无法传输工件 projectgroup:projectartifact:jar:0.0.1-20200816.065328-1from/to deploymentRepo(dav:https://git
- mongodb - 本地 db driver 连接 MongoDB 失败
- node.js - 在 ubuntu 上运行 newman 时出现语法错误
- rdf - 如何使用 rdflib 表示 RDF 数据中的几何点?
- c# - 保持不同类型的相同数据结构方法(类型混合通用和普通)c#
- c - 如何允许其他句子在文件中?
- sql - PostgreSQL 序列无序升序
- c# - 从 .net (c#) 编码数据并使用 angular(ts) 解码
- c++ - 如何使用 Rcpp 使执行就地操作的 C++ 函数可用于另一个 R 包?