🤔
lambdaでopenaiの1.3.5が動かない、apple siliconの場合
結論
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