起こったこと
突然Lambdaに入ってくるイベントが下の状態なってしまい、デコード時エラーで動かなくなってた。
{
Records: [
{
kinesis: {
data: "", // <-- 本来はここにbase64エンコードされたテキストが入ってくる。
...
},
...
}
]
}
原因はIP固定にするためVPCに入れたこと。
分かったのはそれだけ。たぶんAWSのバグと思う。
対応1
とにかくVPCが悪さしてるのでVPCとトリガーを付け直す。
- 一旦LambdaからVPC設定とKinesisトリガーを外してデプロイ。
- VPC設定だけ付け直してデプロイ。
- Kinesisトリガーを付け直してデプロイ。
1回で治らない場合があるのでこれを数回繰り返す…
結果 → 失敗
治っても次のデプロイでまたデータが入らなくなる。
対応2
KinesisトリガーとVPC Lambdaを分けてしまおうかとも考えたが、以前から何度も作って普通に稼働している構成なのでLambdaを一回消して再デプロイしてみた。
- Lambdaを消してデプロイ。
- Lambdaを追加して再デプロイ。この時VPCは付けずにVPCの権限だけ付けておく。
- VPCに入れて(VpcConfigを設定して)再デプロイ。
結果 → 失敗
変化なし。
対応3
もうLambdaを2つに分けてしまう。
- LambdaからVPC設定、権限を削除。
- VPC用のLambdaを追加。
- GlobalのLambadでKinesisを開封してVPC Lambdaへイベント送信。
結果
確認中
あとがき
糞が!だからAWS嫌いなんだよ!!