S3のバケットにサーバサイド暗号化の設定を強制して、暗号化のオプションを指定せずにファイルをアップロードするとエラーにしたい場合は、以下の様なバケットポリシーをバケットに設定すればよい。YourBucketの部分は設定したいバケット名に変更する。
{ "Version":"2012-10-17", "Id":"PutObjPolicy", "Statement":[{ "Sid":"DenyUnEncryptedObjectUploads", "Effect":"Deny", "Principal":{ "AWS":"*" }, "Action":"s3:PutObject", "Resource":"arn:aws:s3:::YourBucket/*", "Condition":{ "StringNotEquals":{ "s3:x-amz-server-side-encryption":"AES256" } } } ] }
参考
サーバサイド暗号化についてはUsing Server-Side Encryption - Amazon Simple Storage Service
。
バケットポリシーの各要素については、IAM Policy Elements Reference - AWS Identity and Access Management。
バケットポリシーのconditionに指定可能なキーの一覧は、Using IAM Policies - Amazon Simple Storage Service。ここに、暗号化のためのキーも記載されている。