時間にまつわるlambdaのエラー
社内用に作成した処理が、ローカルでは稼働していたが、
Lambda上でエラーが発生し、機能したい状態となっていました。
やっていたこと
①会社のメールアドレス宛に問い合わせメールが届き、
問い合わせ用アドレスのメールボックスにメールが蓄積
②pythonのライブラリ、seleniumを使用してメールの情報を取得し、
googleのスプレッドシートへ「問い合わせ日時」、「問い合わせ内容」、
「問い合わせ者の氏名」等を転記
③上記の処理をlambda上で10分おきに定期実行
④スプレッドシート上の最新の問い合わせの日時と、
現在の時間を照らし合わせ、その間の時間に届いたメールの内容を取得し、
転記する処理を実行
【例】
シート上の最新の問い合わせ日時
→2021/04/01 12:14:38
lamda上の処理が実行された時間
→2021/04/01 12:24:35
上記の場合、4/1の12時14分39秒から、
同日の12時24分35秒の間に届いたメールがあれば、
シートに転記がされる。
エラーの内容
エラーの種類:unexpected alert open
エラーの原因
ローカルのPC上での時間と、Lamda上での時間に差異があったため
①ローカルのPCでの実行の場合
スプレッド上の時間と処理の実行時間に差異が無い
②lambda上での実行の場合
スプレッド上の時間→日本時間
処理の実行の時間→アメリカ時間
スプレッド上の最新日時が4/1であるが、
lambda上での実行時間が3/31になるという事態が生じていた
エラーの解決策:環境変数の設定
【設定→環境変数→キーにTZ、値にAsia/Tokyoを設定】
→lambda上での実行時間とスプレッド上の最新時間、
どちらも日本時間になり、lambda上で処理が回るように