10
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でdeployしたときのエラー対応メモ

Last updated at Posted at 2018-01-26

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もうあるんだけど、って怒られる。
では、と消す。

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

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

10
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
10
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?