AWS LambdaでGmail APIの呼び出し 第1回【cloudpack 大阪 BLOG】

 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画面にアクセスし、「プロジェクトの作成」を選択。初めての場合はプロジェクトの作成画面になるかもしれません。
f:id:cloudfish:20160208013126p:plain

プロジェクト名に任意の名前を入力し、作成をクリック。
f:id:cloudfish:20160208013131p:plain

APIの有効化

デフォルトではGMailAPIは無効化されていますので有効にします。
f:id:cloudfish:20160208013134p:plain

GmailAPIをクリック
f:id:cloudfish:20160208013158p:plain

APIを有効にするをクリック。これでGmailAPIが有効化されました。
f:id:cloudfish:20160208013210p:plain

③ サービスアカウントの作成

Lambdaからアクセスするためのアカウントを作成します。サーバからアクセスする場合はOAuthクライアントIDでも可能ですが、認証が必要となるためサービスアカウントを作成します。左ペインの認証情報を選択し、新しい認証情報クリック。
f:id:cloudfish:20160208013219p:plain

サービスアカウントキーを選択。
f:id:cloudfish:20160208013224p:plain

任意の名前を入力します。キーのタイプP12を選択し作成をクリック。
f:id:cloudfish:20160208013229p:plain

鍵が自動的にダウンロードされますので保管しておいてください。またパスワードも控えておいてください。
余談ですが、たまたまSafariでこのページを開いていたのですが自動でダウンロードされませんでした。
f:id:cloudfish:20160208013233p:plain

サービスアカウントの管理をクリック
f:id:cloudfish:20160208013236p:plain

GmailAPIにアクセスする際はこのメールアドレス(サービスアカウントID)とダウンロードした鍵を使用して認証を行います。
f:id:cloudfish:20160208013240p:plain

これで準備が整いましたので、次回はLambdaでGmailアクセスを行いたいと思います。