Skip to content

Blog

AWS Lambda で CloudWatch Event からトリガーした場合の event サンプル

AWS Lambda を cron 式で指定時間にトリガーする場合、トリガーには Cloud Watch Event を指定します。 この場合、Lambda のイベントハンドラへ渡される event (JSON オブジェクト) のサンプルは Event Patterns in CloudWatch Events に掲載されています。 実際に CloudWatch Event からトリガーされた場合の event サンプルをメモしておきます。 python-lambda-local からローカル実行する際などにも活用出来ると思います。

python-lambda-local と lambda-uploader を使ってローカル環境で Lambda 開発を行う

AWS の Lambda で開発を行う際、Web 管理コンソール上で開発 / デバッグするのは大変です。 python-lambda-local を使うとローカル環境で Lambda を実行出来、更に lambda-uploader を使うとローカル環境から簡単に Lambda へ関数をアップロードすることが出来ます。 Python の外部ライブラリを使う場合、外部ライブラリを含めた .zip ファイルを作成して Web 管理コンソールからアップロードする必要がありますが、lambda-uploader を使えば .zip ファイルを作成することなく、必要なライブラリもアップロードしてくれます。 今回は python-lambda-locallambda-uploader の使い方をメモしておきます。

GCP 上で Route53 DNS 認証を使い lego で Let's Encrypt のワイルドカード証明書を取得する

lego を利用して Let's Encrypt の証明書を取得する手順については以前に下記のメモを書きました。

今回は以下の環境で証明書を取得する手順をメモしておきます。 尚、今回は GCP 上の仮想マシンに CentOS8 を使いました。

  1. GCP と AWS を併用している
  2. GCP 上の仮想マシンで証明書を取得する
  3. 証明書はワイルドカード証明書を取得する
  4. 証明局は Let's Encrypt を利用する
  5. 証明書の取得には Route53 による DNS 認証を用いる
  6. 証明書の取得には lego を利用する

Azure Storage Container へアクセスする Python スクリプトサンプル

azure-storage-blob ライブラリを使うと Python スクリプトから Azure Storage Container へアクセスすることが出来ます。 簡単なサンプルを書いたのでメモしておきます。 今回は Python 3.8.1 を使いました。 但し、このページよりも GitHub の Azure / azure-storage-python / samples の方がサンプルが充実しているので、そちらを参照することをオススメします。

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 化してインストールするのも楽かも知れません。