IAM でアクセス権限を管理するのは面倒だ。 まず権限の種類が覚えきれない。
s3:ListBucket を許可していたのに、
Ruby の AWS SDK で
AWS::S3::Bucket#empty?
にて例外が発生した。
調べてみたら、バージョン付けされたオブジェクトも含めて list して、空かどうか確認しているようだ。 この場合は s3:ListBucket ではなく s3:ListBucketVersions を許可しなければならないようだ。 たぶん IAM で権限管理を細かく管理している人はほとんどいないんじゃないかな。 めんどうだもの。
参考