Skip to content

Blog

Lambda 用の .zip ファイルを作成する場合は「zip -r .」を使う方がベター

AWS Lambda で (標準パッケージ以外の) 外部パッケージを利用したい場合は、Python のソースコードと依存するパッケージを .zip アーカイブにして、Lambda へアップロードする必要があります。 詳しくは AWS Lambda Deployment Package in Python に記載されていますが、boto3 だけは例外的に .zip へ含める必要がありません。 AWS の公式ドキュメントでは、依存モジュールを .zip アーカイブへ含める際に以下のような手順になっていました。

1
2
3
4
~/my-function$ pip install --target ./package Pillow
~/my-function/package$ zip -r9 ${OLDPWD}/function.zip .
~/my-function/package$ cd $OLDPWD
~/my-function$ zip -g function.zip lambda_function.py

ネット上の公開情報では zip -r * しているケースをよく見るのですが、bash で作業する場合、これでは . で始まる隠しファイル/隠しディレクトリは .zip ファイルに含まれません。 これらを含めたい場合は AWS 公式ページにあるように zip -r . とピリオドを使う必要があります。 現在ディレクトリのひとつ上のディレクトリに AWS Lambda アップロード用の .zip ファイルを作成するには、例えば以下のように実行します。

1
zip -r ../lambda_function.zip .

参考

自分用・検証用 CentOS8 作成手順メモ(2020/01/31 版)

以前に以下のメモを書きました。

CentOS 8.1911 がリリースされた為、改めて「検証用 Linux の作り方」メモをアップデートしておきます。 以下を前提にしています。

  • vSphere 上に作成する仮想マシンである
  • ベースは CentOS8 64bit とする
  • CentOS8 は最小構成でインストールする
  • 作成した仮想マシンはテンプレート化する

尚、「完全に初期状態からインストールする」よりも、ある程度の設定は Kickstart 化してインストールするのも楽かも知れません。

CentOS 8.1911 のシステム全体へ pyenv をインストールする

pyenv は「特定ユーザにインストールする」方法と「システム全体にインストールする」方法があり、各々以下のような特徴があると思います。

  1. 特定ユーザにインストールする
    • ユーザ権限だけでランタイムやパッケージの 追加・削除が可能
    • 別ユーザから参照出来ないので、作成したアプリケーションを デーモン化し辛い
  2. システム全体にインストールする
    • 管理者権限がなければランタイムやパッケージの 追加・削除が出来ない
    • 全ユーザから参照出来るので、作成したアプリケーションを デーモン化し易い

今回はシステム全体へ pyenv をインストールする方法をメモしておきます。 前提として CentOS 8.1911 を利用しました。

Python の responder を使った AJAX サンプル

responder は Python の Web フレームワークです。 responder でシンプルな AJAX を書いたのでメモしておきます。 サンプルは以下の 2 つです。

  1. テキストを入力してボタンを押すとタイトルを書き換えるサンプル
  2. テキストを入力するとタイトルが書き換わるサンプル