【Pulumi】【トラブル】pulumi up --target をした際にエラー「snapshot integrity failure」が発生

■ はじめに

 pulumi up --target をした際に
エラー「snapshot integrity failure」が発生して焦ったが
どうにか解消できたので、メモ。

目次

【1】トラブル概要
 1)似たようなトラブル:pulumi stack selectをした際にエラー
【2】エラー内容
【3】原因
【4】解決案
【5】補足:使用したCLI
 1)pulumi stack delete
 2)pulumi refresh

【1】トラブル概要

https://dk521123.hatenablog.com/entry/2022/08/04/124321

でやった「pulumi up --target 'urn:pulumi:xxxxx'」を実行したら
以下「【2】エラー内容」が表示され、どうしようもなくなった。

1)似たようなトラブル:pulumi stack selectをした際にエラー

 以下の関連記事の
『【1】pulumi stack selectをした際に
エラー「snapshot integrity failure」が発生』を参照のこと。

Pulumi に関するトラブル2
https://dk521123.hatenablog.com/entry/2022/09/29/001141

【2】エラー内容

error: .pulumi/stacks/your-stack.json snapshot integrity failure;
refusing to use it: resource urn:pulumi:xxxxx
refer to missing parent urn:pulumi:yyyyy

[訳]
エラー: .pulumi/stacks/your-stack.json スナップショット整合性失敗;
次の使用を拒否する:リソース「urn:pulumi:xxxxx」は
欠落した親リソース「urn:pulumi:yyyyy」を参照する
※ integrity = 整合性

【3】原因

* 親子関係があるリソースに対して、親リソースを作成せずに
 子リソース(urn:pulumi:xxxxx)を作成しようとしたため。

※ 注意

 * ただし、今回の場合、
 個別に親リソース(urn:pulumi:yyyyy)をpulumi up --target し
 解決を試みたが、同じエラーになり、どうしようもなくなった。
 => 今回の場合、どうも Pulumi で保持しているファイルと
  実環境が一致していないっぽい。

【4】解決案

* 似たような事例で以下のIssueがあったので参考にした。

https://github.com/pulumi/pulumi/issues/4996

# 1)スタックのステートから子リソース「urn:pulumi:xxxxx」を削除
$ pulumi state delete 'urn:pulumi:xxxxx' --disable-integrity-checking
# 「直接スタックのステートを編集するけどいいっすか?」って聞いてくる
warning: This command will edit your stack‘s state directly. y (「y」を入力)

# 2)リフレッシュ(ステートと実リソースの差分を同期する)
$ pulumi refresh

# 3)Pulumi up(個別だともう怖い、、、)
$ pulumi up

【5】補足:使用したCLI

1)pulumi stack delete

pulumi stack delete
https://www.pulumi.com/docs/reference/cli/pulumi_state_delete/

Deletes a resource from a stack’s state
[訳] スタックのステートからリソースを削除する

比較:pulumi stack rm
https://www.pulumi.com/docs/reference/cli/pulumi_stack_rm/

Remove a stack and its configuration
[訳] スタックとその設定を削除する

オプション:--disable-integrity-checking
https://www.pulumi.com/docs/reference/cli/#options

Disable integrity checking of checkpoint files
[訳] チェックポイントファイルの整合性チェックを無効にする
 => 今回の場合、どうも Pulumi で保持しているファイルと
  実環境が一致していないので、無効にしておく必要がある
 => 以下のサイトも参照。

https://github.com/pulumi/pulumi/issues/4984

2)pulumi refresh

https://www.pulumi.com/docs/reference/cli/pulumi_refresh/

Refresh the resources in a stack
[訳] スタック内のリソースをリフレッシュする
 => っていってもよくわからないので、以下のサイト参照。

https://tech.guitarrapc.com/entry/2019/12/23/000000

関連記事

Pulumi ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/10/23/025230
Pulumi ~ 基本編 / CLI
https://dk521123.hatenablog.com/entry/2021/10/25/215508
pulumiで対象リソースのみデプロイ / 削除(--target)
https://dk521123.hatenablog.com/entry/2022/06/28/000000
pulumiで 新規作成リソースのみデプロイ
https://dk521123.hatenablog.com/entry/2022/08/04/124321
Pulumi に関するトラブル
https://dk521123.hatenablog.com/entry/2022/01/11/105319
Pulumi に関するトラブル2
https://dk521123.hatenablog.com/entry/2022/09/29/001141
pulumi up 時のトラブル
https://dk521123.hatenablog.com/entry/2022/04/05/150240