如何在aws lambda中添加mecab库

2024-05-14 19:20:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将mecab库添加到aws lambda层,但没有成功

我想要的是标记日语和韩语。标记化就足够了

以下是我所做的。(我参考了这个网站:https://towardsdatascience.com/how-to-install-python-packages-for-aws-lambda-layer-74e193c76a91为aws lambda层安装python包)

  1. AWS EC2 docker安装

  2. 构建docker文件

sudo vi Dockerfile

-----------------vi editor------------------
FROM amazonlinux:2.0.20191016.0
RUN yum install -y python37 && \
    yum install -y python3-pip && \
    yum install -y zip && \
    yum clean all
RUN python3.7 -m pip install --upgrade pip && \
    python3.7 -m pip install virtualenv
-----------------vi editor------------------


docker build -t lambdalayer .
docker run -it --name lambdalayer lambdalayer:latest bash

  1. 安装python软件包
python3.7 -m venv mypackages

source mypackages/bin/activate

pip install mecab-python3 -t ./python
pip install unidic-lite -t ./python
pip install --no-binary :all: mecab-python3 -t ./python
pip install -v python-mecab-ko -t ./python

deactivate
  1. 压缩文件
zip -r python.zip ./python/

docker cp lambdalayer:python.zip /home/ubuntu/
  1. AWS s3上传
cd /home/ubuntu

aws s3 cp python.zip s3://bukketyounghee
  1. 制作一个lmabda图层
aws lambda publish-layer-version --layer-name layer-search --compatible-runtimes "python3.7" --content S3Bucket=bukketyounghee,S3Key=python.zip

我不知道下一步该怎么办。它不一定是mecab库,但我想使用aws lambda,因为我想要一个无服务器应用程序。请帮帮我

提前谢谢


Tags: installpiplambdadocker标记awslayers3
1条回答
网友
1楼 · 发布于 2024-05-14 19:20:53

您可以使用AWS blog中描述的docker创建lambda layer

因此,您可以按如下方式向函数中添加mecab

  1. 创建空文件夹,例如mylayer

  2. 转到该文件夹并创建包含以下内容的requirements.txt文件:

mecab-python3
unidic-lite
  1. 运行以下docker命令:

该命令将为python3.8创建图层:

docker run -v "$PWD":/var/task "lambci/lambda:build-python3.8" /bin/sh -c "pip install -r requirements.txt -t python/lib/python3.8/site-packages/; exit"
  1. 将图层存档为zip:
zip -9 -r mylayer.zip python 
  1. 基于AWS控制台中的mylayer.zip创建lambda层。不要忘记指定Compatible runtimepython3.8

  2. 将步骤5中创建的层添加到函数中

  3. 我使用您的代码测试了该层:

import json

import MeCab

def lambda_handler(event, context):
        
    wakati = MeCab.Tagger("-Owakati")

    a = wakati.parse("pythonが大好きです").split()
    return  {
        'statusCode': 200,  
        'body': json.dumps(a)
        }

它正常工作:

{
  "statusCode": 200,
  "body": "[\"python\", \"\\u304c\", \"\\u5927\\u597d\\u304d\", \"\\u3067\\u3059\"]"
}

相关问题 更多 >

    热门问题