🤔

lambdaでopenaiの1.3.5が動かない、apple siliconの場合

2023/12/03に公開

結論

lambdaのランタイムをarm64にする。

ハマりどころ

エラーではpydantic_coreモジュールが見つからないというエラーが出るためハマった。

lambdaはx86_64がデフォルトのランタイムであるため、
ローカル環境では動作しても、lambda環境ではエラーが発生する。

ebmliteもmoduleが見つからないというエラーが発生したが、
これはembliteをpackageしてレイヤーに追加したら直った。

#!/bin/bash

set -ex

# https://apple.stackexchange.com/questions/83939/compare-multi-digit-version-numbers-in-bash/123408#123408
function version { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'; }

DOCKER_IMAGE="lambci/lambda:build-python"
PKG_DIR="python"
VERSION=${1:-3.11}
PACKAGE_VERSION=$VERSION
PIP="pip"

rm -rf ${PKG_DIR} && mkdir -p ${PKG_DIR}

if [ $(version $VERSION) -ge $(version "3.11") ]; then
    DOCKER_IMAGE="public.ecr.aws/sam/build-python3.11"
    PIP="pip3"
    VERSION="linux/arm64"
fi

docker run -v $(pwd):/var/task ${DOCKER_IMAGE}${VERSION} \
${PIP} install -r requirements.txt -t ${PKG_DIR}

zip -r releases/openai-aws-lambda-layer-${PACKAGE_VERSION}.zip python

良い創発現象を発生させるために:

apple siliconがarm64であることを常に意識する。

Discussion