Help us understand the problem. What is going on with this article?

serverlessでdeployしたときのエラー対応メモ

More than 1 year has passed since last update.

aws lambdaの名前をserverless.ymlで変更した際にdeployに失敗し起きたエラー

serverless.yml
functions:
  test: 
    handler: main.test
    name: ${self:provider.stage}-test



functions:
  test2: 
    handler: main.test
    name: ${self:provider.stage}-test


$ sls deploy -v

実行

  Serverless Error ---------------------------------------

  An error occurred: TestLogGroup - /aws/lambda/development-test already exists in stack arn:aws:cloudformation:${region}:${account_id}:stack/aws-nodejs-development/xxxxxxx.

そして始まる削除祭り

もうあるっていってるので一度消してみよう。と消す。
serverless.ymlを再度deployすれば大丈夫でしょう。と謎の自信。

lambda削除。

そしてcloud watchのスタック削除へ

cloudwatchのlog削除。

よし、cloud formationも念のためスタック削除。。。としたら
削除に失敗。
。・゚・(゚`ω´゚)・゚・。 しんどい
DELETE_FAILED

おおっと、と思い。
公式documentのトラブルシューティングにすがる。

うーん、この状態で再度デプロイしたらどうなるのか興味が沸いて、まあ、失敗するだろうと思いつつも

$ sls deploy -v

実行。
以下エラーで失敗。(予想通りだ!ドヤア

Stack:arn:aws:cloudformation:${region}:${account_id}:stack/aws-nodejs-development/xxxxxxx. is in DELETE_FAILED state and can not be updated.

公式ドキュメントにすがる。

よし。と
公式documentのトラブルシューティングに戻ってくる。

削除保護つけてると失敗しますよ。という文言が。。。
(このときはドキュメントをちゃんと理解できていなかったのですが、ここでいってる削除保護というのは、cloud formationのスタックにつける削除保護のことだったのだと思います。

serverless.yml
resources:
  Resources:
    TestDynamoDbTable:
      Type: 'AWS::DynamoDB::Table'
      DeletionPolicy: Retain

そういえば削除保護 DeletionPolicy: Retainつけてた。面倒なことになったなあと落ち込む。(´・ω・`)

コンソールに失敗した理由全てが書いてあった。

コンソールに戻ってどこで失敗したか見てみよう。話はそれからだ、とcloud formationのページにいってどこでfailしてるか確認。
すると、

- iamロール
- s3 bucket

この2つが失敗してるらしい。

状況の理由を確認すると、
iamは、アタッチしてるpolicy全部デタッチしてね。
s3はobject空にしないと削除できないよ〜

とわかりやすく書いてある。
ok!とやってみる。

再度スタックの削除に挑戦。
すると、
- iamロール
- s3 bucket
これらのresourceを保護する?
チェックされたresourceは消さないよ〜
とポップアップが丁寧に出たので、もちろんけさないで!とチェックして実行したら無事消せました!

わーいヽ(○´∀`○)ノ

再度デプロイに挑戦。

再度デプロイすると、

$ sls deploy -v

An error occurred: IamRoleLambdaExecution - TestRole already exists.

IAMのroleもうあるんだけど、って怒られる。
では、と消す。

ついに、デプロイに成功できた。

日々勉強だなあ。頑張ろう。

xxl
「scheme手習い」という本が擦り切れるほど読むくらい好きです。今でも落ち込んだときは読みます。あの淡々としたやりとりをプログラムを書く時に自分も感じながら楽しんで作業しています。外向的な人間ではありませんが、よろしくお願いします。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした