Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Serverless Framework で Function not found で Lambda がデプロイできない時に対処したこと

Last updated at Posted at 2018-03-09

Serverless Frameworkを使ってLambda関数をAWS上に展開している環境。
ある検証のためにAWS管理画面上からLambda関数を消したのだが、再度デプロイを試みようとすると、

$ sls deploy --stage dev -v

...(snipped)...

 Serverless Error ---------------------------------------
 
  An error occurred: MyLambdaFunction - Function not found: arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:my-lambda-function-myLambdaFunction.

といった具合に、エラーが出て該当のLambdaのデプロイができなくなった。
困った。

原因

Serverless Framework は Cloud Formation を使って対象リソースの管理をしているのだが、手動で消してしまったために同期などの不整合が起きていると思われる。

解決方法

似たような症状での議論が、 https://github.com/serverless/serverless/issues/3050 で展開されており、参考になった。
なお、実施するとAPI Gateway のエンドポイントが変わるので、注意

方法1:Cloud Formation のスタックを作り直す

Serverless フレームワークが作った既存のCloudFormationスタックを削除し、デプロイし直して作り直す方法。こちらの方が言っている内容である。

  1. API Gatewayの「カスタムドメイン名」設定で、対象のLambdaがベースパスマッピングされているならば、そのパスを削除する。(編集→🗑 )
  2. S3のデプロイ用のS3バケットも削除する。
  3. Cloud Formation で、対象のスタックを削除する。
  4. コンソールから sls deploy を実行してデプロイしなおす。
  5. 1.でマッピングされていたならば、新しい API でマッピングしなおす。

方法2:sls remove する。

こちらの方が言っている方法だが、先に上の方法を試していたので、残念検証していない。参考掲載まで。

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Login to continue?

Login or Sign up with social account

Login or Sign up with your email address