みなさん、こんにちは。小寺です。
昨年2022年12月にお知らせが出ていましたが、いよいよS3で2つのベストプラクティスの適用が開始されました。2023年4月5日から適用開始されていましたが、全てのリージョン適用の発表です。

https://aws.amazon.com/about-aws/whats-new/2023/04/amazon-s3-security-best-practices-buckets-default/

2つの変更について再度振り返る

この発表より後に作成された新しいS3バケットでは、S3ブロックパブリック アクセスが有効になり、S3 アクセス コントロール リスト (ACL) が無効になります。2つのオプションは両方とも、すでにコンソールのデフォルトであり、ベスト プラクティスとして長い間推奨されてきました。

正式適用前にバケットを新規作成しようとしたときの状態です。あくまで「推奨」として表示されています。

もし、ACLとパブリックアクセスを有効化させたいときは?

パブリック バケット アクセスまたは ACL を使用したい場合は、S3 バケットを作成した後で、パブリック バケット アクセス を無効にするか、ACL を有効にすることができます。

ちなみに、パブリック アクセスを許可するバケット ポリシーまたはアクセス ポイント ポリシーを設定しようとすると、403 Access Denied エラーになります。新しいバケットにパブリック アクセスが必要な場合は、通常どおり作成してから、DeletePublicAccessBlock を呼び出してパブリック アクセス ブロックを削除しましょう。※この関数を呼び出すには、s3:PutBucketPublicAccessBlock 権限が必要です。

次に、ACLを有効化させたいときにどうするか?についてです。バケット ACL とオブジェクト ACL が無効になってしまうので、誰がオブジェクトをアップロードしてもバケット所有者がオブジェクト所有者になります。バケットの ACL を有効にしたい場合、CreateBucket リクエストで ObjectOwnership パラメータを ObjectWriter に設定する、もしくは、バケットの作成後にDeleteBucketOwnershipControls を呼び出すことができます。パラメータを使用したり関数を呼び出したりするには、s3:PutBucketOwnershipControls 権限が必要です。