如果要管理AWS CloudTrail的S3存储桶,推荐使用专用的存储桶

总之

    • みんな大好き AWS CloudTrail

 

    • IasCODE が流行だから CloudTrail も Ansible か Terraform で管理してみよう

 

    • Bucket が多くなると管理が大変だから、terraform の backend と AWS Config と同居させてやろう

 

    • ダメだった。今のところ単独のbucketにしてしまっておくのがよさそう

 

    ってことがどこにも見当たらなかったのでメモとして残す

想要

    • Ansible で S3 Bucket A を作成(プライベートバケット1つ)

 

    • terraform で A に対して以下をそれぞれ管理、設定

terraform の backend

prefix に tf
ライフサイクルなし

AWS CloudTrail の出力先

prefix に cloudtrail
ライフサイクル3段(standard->glacier->delete)

AWS Config の出力先

prefix に config
ライフサイクル3段(standard->glacier->delete)

CloudTrail と Config はグローバルイベントも単一のバケットに送れる
terraform も同様に指定したリージョンでどこからでも使える
なので、prefix で分けてあげればバケットが雑多にならなくていいかと思った。ライフサイクルもprefixで分けられるし。

为何不呢

    • terraform の backend として S3 を使う場合の Bucket を作成する(ansible)

 

    • 作成した Bucket を CloudTrail 用のリソース一式を管理する backend にする

bucket policy がついてない(ansibleで追加してつけた)

ライフサイクルイベントつけよう

ライフサイクルで31日後に standard 落とし
ライフサイクルで93日後に glacier 落とし
ライフサイクルで365日後に delete
何回やっても3つセットができない

https://github.com/ansible/ansible/issues/30120 おいいいい

じゃあ terraform でつけよう

ライフサイクル後から追加できなくない?

https://github.com/terraform-providers/terraform-provider-aws/issues/283 おおおおおおおい

これじゃあ最初に Ansible で bucket 作って同居させるの無理じゃない?
むしろそれぞれ別に bucket 作って、必要な設定をそれぞれ書いたほうが自由度が高い(そりゃそうか

总结

    • terraform backend 用 bucket は ansible で作る

プライベートバケットならそれだけでほぼ問題ない
必要なポリシーは付けられる
ライフサイクルはほぼ必要ない(むしろ移行させない)

AWS CloudTrail 用及び AWS Config 用 bucket はそれぞれ terraform で作る

CloudTrail 用モジュールで自前で bucket を用意する
自前で s3_bucket リソースを用意するので、ライフサイクルも好きに出来る

Ansible でも Terraform でもどっちでもいいので、Lifecycle をちゃんとサポートして欲しい。。。

广告
将在 10 秒后关闭
bannerAds