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

20160208013126

プロジェクト名に任意の名前を入力し、作成をクリック。

20160208013131

② APIの有効化

デフォルトではGMailAPIは無効化されていますので有効にします。

20160208013134

GmailAPIをクリック

20160208013158

APIを有効にするをクリック。これでGmailAPIが有効化されました。

20160208013210

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

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

20160208013219

サービスアカウントキーを選択。

20160208013224

任意の名前を入力します。キーのタイプP12を選択し作成をクリック。

20160208013229

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

20160208013233

サービスアカウントの管理をクリック

20160208013236

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

20160208013240

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

元記事はこちら

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