【トラブル】【AWS】 Lambda のトラブルシュート

 ■ はじめに

https://blogs.yahoo.co.jp/dk521123/37276995.html

でハマった点をまとめる。

目次

【1】S3イベント再作成時にエラー「Configuration is ambiguously defined」表示
【2】ソースコードをアップロードした際にエラーが表示される
【3】例外「Out of memory」が発生する

【1】S3イベント再作成時にエラー「Configuration is ambiguously defined」表示

S3イベント再作成時に、以下のエラーメッセージが表示されてしまった

1)エラーメッセージ

Configuration is ambiguously defined.
Cannot have overlapping suffixes in two rules
if the prefixes are overlapping for the same event type. 

DeepL訳

コンフィギュレーションの定義が曖昧
2つのルールで接尾辞が重複することはできない。
接頭辞が同じイベントタイプで重複している場合。

2)原因

https://repost.aws/ja/knowledge-center/lambda-s3-event-configuration-error

より抜粋
~~~~~
Lambda 関数をトリガーする Amazon S3 イベント通知を作成する際に、
「Configuration is ambiguously defined」エラーが表示されるのはなぜですか?

「Configuration is ambiguously defined error」というエラーは、
通知のイベント情報とそのプレフィックスまたはサフィックスが
 S3 バケットの通知設定と重複している場合に発生します。

このエラーは、次のいずれかの操作を行っているときに発生することがあります。

[1] 最近削除した S3 イベント通知を再作成する。<< ★今回は、ここに該当
[2] 重複するプレフィックスまたはサフィックスを使用して、
 重複する複数のイベントの S3 イベント通知を作成する。

注: Amazon S3 イベント通知設定では、
プレフィックスまたはサフィックスが重複しない重複イベントが許可されます。
この設定では、プレフィックスまたはサフィックスが重複する重複しないイベントも許可されます。
~~~~~

3)解決案

※注意:
あくまで紐づいているイベントを削除して再作成する場合の解決案である。
イベントを削除してはいけない場合は、
以下のサイトを参考に対応(Step functions)した方がいいと思う。

https://bftnagoya.hateblo.jp/entry/2021/12/09/103727

イベントを削除する方法
https://repost.aws/ja/knowledge-center/lambda-s3-event-configuration-error

# <bucket-name>は、対象S3バケット名に置き換えること

# Step1: 以下のCLIで紐づけられているイベントがあるかどうか確認
# (あればStep1. なければ今回の解決案じゃ解決できない)
aws s3api get-bucket-notification-configuration --bucket=<bucket-name>

# Step2: イベントを削除する
aws s3api put-bucket-notification-configuration --bucket=<bucket-name> --notification-configuration="{}"

# Step3: 確認(Step1で紐づいていたイベントが削除されていること)
aws s3api get-bucket-notification-configuration --bucket=<bucket-name>

 【2】ソースコードをアップロードした際にエラーが表示される

 1)原因

 * AWSマネジメントコンソールのAmazon Lambda上の画面で、
   直接ソースコードをアップロードできるのは、10MBまでで、
   その制限を超えていたため。
 => よく画面をみてみれば、
   「10MBより大きいファイルの場合は、
 S3からのアップロードを検討して下さい」と表示されている

 2)対応策

[1] S3にコードを上げる(URLをメモっとく)
[2]  AWSマネジメントコンソールのLambdaの画面で
    「コードエントリタイプ : Amazon S3 からのアップロード」を指定し、
    [1]のURLを指定する

 【3】例外「Out of memory」が発生する

1)原因

 * メモリ不足で例外が発生している
 * デフォルトのメモリは、128MB

 2)対応策

 * AWSマネジメントコンソールでメモリサイズを変更する
  => ただし、メモリ増量すると、料金も変わるので

 3)補足

 * メモリだけでなく、タイムアウトもある

 4)教訓

* テストをしてチューニングする必要がある

 関連記事

Lambda ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2017/04/05/235618
Lambda ~ Java / EC2 を操作する ~
https://dk521123.hatenablog.com/entry/2017/12/11/225605
Lambda ~ Java / EC2 を取得する ~
https://dk521123.hatenablog.com/entry/2017/12/24/232542