ぶちのブログ

競プロとCTFが趣味なWebエンジニアのアウトプットの場

terraform planでS3に差分が出てしまうときの対処法

TL;DR

現状のterraformでは差分が出てしまうのはしょうがないので、aclとforce_destroyのオプションは適切に設定して、差分を無視する。

環境

Terraform v0.12.18 + provider.aws v2.46.0

はじめに

最近terraformを触り始めたのですが、S3のimportの際に差分がどうしても消せずに困ったのですが、教えてもらいなんとか解決したので共有します。

問題点

aclとforce_destroyの差分が消えない。

調べたこと

どちらもgithubのissueにあがっているが、現状解決していない模様。

https://github.com/terraform-providers/terraform-provider-aws/issues/428

https://github.com/terraform-providers/terraform-provider-aws/issues/989

解決法

force_destroyに関しては、issueにもあるように、"force_destroy": "true"と設定だけしておいて問題ないらしい。
aclに関しては、現状に合わせたものを設定すれば問題ない。

acl周りはちゃんとはわかっていないのですが、どうやら「オブジェクトは公開可能」や「オブジェクトは非公開」とは別の概念らしいです。
bucketのアクセス権限>アクセスコントロール内で、バケットオーナーからのアクセスのみyesになっている場合にはprivateであるようです。

自分の場合は、「オブジェクトは公開可能」「オブジェクトは非公開」のいずれのbucketもprivateでした。

実際にplanに差分が残ったままapplyしましたが、変更は加えられていませんでした。

終わりに

調べてもわかりにくいことだったので備忘も兼ねて記事に書いておきました。