3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】PythonでのLambda Layer作成時のエラー対策

Posted at

はじめに

AWS LambdaでPythonのレイヤーを作成する際に、うまく動作しない問題に直面しました。原因を特定し、GitHub Actionsを活用することで解決できたため、同じような課題に直面している方の参考になればと思い、共有します:point_up_tone1:

問題の概要

Windows環境でPythonモジュール(例:numpy)をインストールし、それをLambdaレイヤーとして利用しようとすると、AWS LambdaがLinux環境で動作しているため、Windows特有のファイルや依存関係が含まれてしまい、正常に動作しませんでした:cry:

エラー内容

numpy: Error importing numpy: you should not try to import numpy from
        its source directory; please exit the numpy source tree, and relaunch
        your python interpreter from there.

このエラーは、numpyのインストール方法や環境に起因するもので、Lambda上での実行に適していない構成になっていることが原因です

解決策

GitHub Actionsを使って、Linux環境上でPythonモジュールをインストールし、その成果物をそのままS3にアップロードすることで、Lambdaレイヤーとして利用可能な形に整えました。
この方法により、Lambdaの実行環境と一致した依存関係を持つレイヤーを作成でき、問題を回避することができました。

name: レイヤーの作成

on:
  push:
    branches:
      - main

jobs:
  build-and-upload:
    runs-on: ubuntu-latest

    steps:
      # リポジトリのチェックアウト
      - name: Checkout repository
        uses: actions/checkout@v2

      # モジュール用のフォルダの作成
      - name: Create directory
        run: mkdir -p python

      # 必要なモジュールのインストール
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install --target=python -r requirements.txt

      # フォルダのzip化
      - name: Zip the layer
        run: zip -r layer.zip python

      # S3へのアップロード
      - name: Upload to S3
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_REGION: ap-northeast-1
        run: |
          aws s3 cp layer.zip s3://your-s3-bucket-name/lambda-layers/layer.zip  # S3へアップロード

プロジェクトのフォルダ構成

your-project/
├── .github/
│   └── workflows/
│       └── layer-build.yml     ← GitHub Actionsの定義ファイル(今回のYAML)
├── requirements.txt            ← Python依存パッケージの定義ファイル
└── その他のファイルやコード

さいごに

解決策を探している際、英語の情報ばかりで苦労しました。同じような問題に直面している方の助けになれば幸いです:hugging::sparkles:

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?