Lambda@Edge の削除エラー「関数の削除時にエラーが発生しました」を回避するには
困っていた内容
Lambda 関数を削除しようとしたところ、レプリカが存在するため削除できませんでした。
Lambda@Edge 関係のようですが、レプリカの削除方法を教えてください。
関数の削除時にエラー Lambda was unable to delete arn:aws:lambda:us-east-1:123456789012:function:hato-lambda-edge:1 because it is a replicated function. Please see our documentation for Deleting Lambda@Edge Functions and Replicas. が発生しました。
どう対応すればいいの?
CloudFront から関連付けを解除してください。
すべての CloudFront から関連付けを解除すると、CloudFront によって自動的にレプリカは削除されます。
そのため、レプリカがある Lambda 関数を削除するには、関連付けを解除し、レプリカが自動削除されるまで待ってから削除する必要があります。
なお、削除は通常、数時間以内に完了し、レプリカを手動で削除することはできません。
Lambda@Edge 関数とレプリカを削除する - Amazon CloudFront
Lambda@Edge 関数を削除できるのは、関数のレプリカが CloudFront によって削除された場合のみです。Lambda 関数のレプリカは、次のような状況では自動的に削除されます。
- すべての CloudFront ディストリビューションから関数の最後の関連付けを削除した後。複数のディストリビューションで関数が使用されている場合、最後のディストリビューションから関数の関連付けを削除した後にのみ、レプリカが削除されます。
- 関数が関連付けられた最後のディストリビューションを削除した後。
レプリカは通常、数時間以内に削除されます。Lambda@Edge 関数のレプリカを手動で削除することはできません。
やってみた
Lambda コンソールから「レプリカ」をクリックします。
関連付けを解除したいレプリカを選択します。
「ホームリージョン関数に移動」をクリックします。
「設定」タブから「トリガー」>「詳細」の順にクリックします。
「パスパターン」を確認して、CloudFront ID のリンクをクリックします。
「ビヘイビア」タブをクリックします。
確認した「パスパターン」を選択して「編集」をクリックします。
「関数の関連付け」セクションから「関数タイプ」を「関連付けなし」に変更します。
「Save changes」をクリックします。
正常に変更が行われることを確認します。
Lambda コンソールのレプリカが消えるまで待機し、消えたら改めて Lambda 関数を削除します。
※消えない場合は、他の関連付けが残っていないか確認してください