みなさん、こんにちは。小寺です。
昨年2022年12月にお知らせが出ていましたが、いよいよS3で2つのベストプラクティスの適用が開始されました。2023年4月5日から適用開始されていましたが、全てのリージョン適用の発表です。
2つの変更について再度振り返る
この発表より後に作成された新しいS3バケットでは、S3ブロックパブリック アクセスが有効になり、S3 アクセス コントロール リスト (ACL) が無効になります。2つのオプションは両方とも、すでにコンソールのデフォルトであり、ベスト プラクティスとして長い間推奨されてきました。
正式適用前にバケットを新規作成しようとしたときの状態です。あくまで「推奨」として表示されています。
![](https://www.sunnycloud.jp/wp-content/uploads/2022/12/image-34.png)
![](https://www.sunnycloud.jp/wp-content/uploads/2022/12/image-35.png)
もし、ACLとパブリックアクセスを有効化させたいときは?
パブリック バケット アクセスまたは ACL を使用したい場合は、S3 バケットを作成した後で、パブリック バケット アクセス を無効にするか、ACL を有効にすることができます。
ちなみに、パブリック アクセスを許可するバケット ポリシーまたはアクセス ポイント ポリシーを設定しようとすると、403 Access Denied エラーになります。新しいバケットにパブリック アクセスが必要な場合は、通常どおり作成してから、DeletePublicAccessBlock を呼び出してパブリック アクセス ブロックを削除しましょう。※この関数を呼び出すには、s3:PutBucketPublicAccessBlock 権限が必要です。
次に、ACLを有効化させたいときにどうするか?についてです。バケット ACL とオブジェクト ACL が無効になってしまうので、誰がオブジェクトをアップロードしてもバケット所有者がオブジェクト所有者になります。バケットの ACL を有効にしたい場合、CreateBucket リクエストで ObjectOwnership パラメータを ObjectWriter に設定する、もしくは、バケットの作成後にDeleteBucketOwnershipControls を呼び出すことができます。パラメータを使用したり関数を呼び出したりするには、s3:PutBucketOwnershipControls 権限が必要です。
![](https://www.sunnycloud.jp/wp-content/uploads/2023/03/SunnyPay.jpg)