AWS LambdaからGmailAPIを呼び出したいと思い方法を調べてみました。当初はGmailAPIにアクセスするためのQuickstartが用意されていたため簡単にできるかと思っていました。が、サンプルがOAuth認証のみとなっていました。OAuthではプログラム実行時に手動で認証になるためLambdaではサービスアカウントを使用する必要があります。このあたりの使い方がよくわからずがっつりハマりました。また、Lambdaでもしっかり躓きなかなか大変でしたが、何とかAPIを呼び出すところまで漕ぎ着けたので手順をまとめておきたいと思います。今回は長くなりそうなので2回に分けたいと思います。
手順
1.GmailAPIの設定(第1回)
① プロジェクトの作成
② APIの有効化
③ サービスアカウントの作成
2.Lambdaの設定(第2回)
① Lambda用プロジェクトの作成
② 秘密鍵をp12からpemに変換
③ Lambdaの作成
④ 動作確認
開発環境
Amazon Linux AMI release 2015.09
Python v2.7.10
google-api-python-client v1.4.2
pycrypto v2.6.1
lambda-uploader v0.5.0
1.GmailAPIの設定
① プロジェクトの作成
前提としてGmailの2段階認証を有効にしておいてください。まずはGoogle Developer Consoleアクセスします。
HOME画面にアクセスし、「プロジェクトの作成」を選択。初めての場合はプロジェクトの作成画面になるかもしれません。
プロジェクト名に任意の名前を入力し、作成をクリック。
② APIの有効化
デフォルトではGMailAPIは無効化されていますので有効にします。
GmailAPIをクリック
APIを有効にするをクリック。これでGmailAPIが有効化されました。
③ サービスアカウントの作成
Lambdaからアクセスするためのアカウントを作成します。サーバからアクセスする場合はOAuthクライアントIDでも可能ですが、認証が必要となるためサービスアカウントを作成します。左ペインの認証情報を選択し、新しい認証情報クリック。
サービスアカウントキーを選択。
任意の名前を入力します。キーのタイプP12を選択し作成をクリック。
鍵が自動的にダウンロードされますので保管しておいてください。またパスワードも控えておいてください。
余談ですが、たまたまSafariでこのページを開いていたのですが自動でダウンロードされませんでした。
サービスアカウントの管理をクリック
GmailAPIにアクセスする際はこのメールアドレス(サービスアカウントID)とダウンロードした鍵を使用して認証を行います。
これで準備が整いましたので、次回はLambdaでGmailアクセスを行いたいと思います。