1
0

Win11のPCでdockerを利用して、aws のlambdaのレイヤーを作成した

Last updated at Posted at 2024-03-02

四苦八苦したので備忘録代わりに。
そもそもなぜdockerを使おうとしたのか?
→lambdaのレイヤーに、moduleをインポートしたかったけど、
windows環境でpip installしたものを圧縮して、lambdaにアップロードしてもうまくいかなかったため。

環境がwindowsで作成したものだとよくないとのことがあり、
aws のcloud9を使って

win11でdocker
→起動できない

HyperVプラットフォーム
の機能をONに
→できない

BIOSのセットアップ画面から以下二つを有効化
・CPU
・virtualizaion

再起動して、タスクマネージャ起動→パフォーマンス→右下に「仮想化:有効」となっていることを確認
→あらためてHyperVプラットフォーム
の機能をONに

# syntax=docker/dockerfile:1
# Install necessary dependencies
FROM amazonlinux:2 as builder
RUN yum update -y && yum install -y tar gzip make gcc openssl-devel bzip2-devel libffi-devel zip

# Install Python
ARG PYTHON_VERSION=3.9.13
RUN curl https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz | tar xz \
    && cd Python-${PYTHON_VERSION} && ./configure && make && make install

# Build runtime image
FROM amazonlinux:2
COPY --from=builder /usr/local /usr/local

# Install line-bot-sdk
RUN /usr/local/bin/python3.9 -m venv venv && \
    source venv/bin/activate && \
    pip3 install line-bot-sdk && \
    deactivate

# Install zip command
RUN yum install -y zip

# Create a ZIP file with the installed libraries
RUN mkdir -p /python/lib/python3.9/site-packages && \
    cp -r /venv/lib/python3.9/site-packages/* /python/lib/python3.9/site-packages/ && \
    cd /python && zip -r /aws-layers.zip .

注意1
https://www.python.org/ftp/python/
のFTPにあるバージョンがあるものしかDLできない

注意2
aws-layers.zip
└── python
└── lib
└── python3.9
└── site-packages
└── linebot_sdk

この構造にする必要があるらしく、最後にフォルダを作っている

・docker コンテナから該当ファイルを取り出す
Dockerfileのあるフォルダにいき、
docker runで起動
別のコマンドプロンプトを開き、
docker ps
でコンテナが作成されていることを確認。

docker cp コンテナID:該当フォルダ名 ローカルに保存する先の絶対パス

追記・・うまくいきませんで。
cloud9でつくってうまくいきました。
参考URL
https://qiita.com/ndj/items/bbc96b8aa910b49cce1e

うまくいかなった理由は
・ファイル名がPythonじゃなかった
・line-bot-sdkでインストールしたファイルを、ぜんぶ圧縮できていなかった
(line-bot-sdkという名前のファイルだけを圧縮してアップロードしていた)
を考えてますが、検証できてないです。

1
0
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
1
0