# プライベートS3へのオブジェクトのアップロードが機能しません

**URL:** https://meta.discourse.org/t/upload-objects-to-private-s3-is-not-working/181574
**Category:** Support
**Tags:** s3
**Created:** [2021 年 3 月 2 日午前 8:57 UTC](https://meta.discourse.org/t/upload-objects-to-private-s3-is-not-working/181574 "2021-03-02T08:57:43Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![mahcr](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mahcr/32/206943_2.png) [@mahcr](https://meta.discourse.org/u/mahcr)
#### Post date: [2021 年 3 月 2 日午前 8:57 UTC](https://meta.discourse.org/t/upload-objects-to-private-s3-is-not-working/181574/1 "2021-03-02T08:57:43Z")

</div>

大規模な調査を行いましたが、プライベート ACL で S3 に画像をアップロードする方法に関するガイドは見つかりませんでした。

バックアップは正常に動作するものの、画像のアップロードだけが奇妙な動作を示しています。

この問題はバケットの ACL に起因することを特定しました（ACL フラグを指定せずに SDK でファイルをアップロードできるため、問題が ACL であることが証明されています）。場合によっては、「パブリックアクセスのブロック」設定がバケットレベルではなくアカウントレベルで設定されているため、バケット設定のチェックボックスを無効化しても機能しません。

S3 アップロード設定のコードが更新され、現在はパラメータに基づいて ACL が設定されていることに気づきました。この設定を下方へ伝達する方法はありますか？[discourse/lib/file\_store/s3\_store.rb at tests-passed · discourse/discourse · GitHub](https://github.com/discourse/discourse/blob/tests-passed/lib/file_store/s3_store.rb#L54)

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2021 年 3 月 2 日午前 11:38 UTC](https://meta.discourse.org/t/upload-objects-to-private-s3-is-not-working/181574/2 "2021-03-02T11:38:35Z")

</div>

[Secure Uploads](https://meta.discourse.org/t/secure-media-uploads/meta/140017) では、ログインユーザーにアップロードを制限する方法について説明されています。これが役立つかもしれませんか？

---

<div class="post-metadata">

### Author: ![mahcr](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mahcr/32/206943_2.png) [@mahcr](https://meta.discourse.org/u/mahcr)
#### Post date: [2021 年 3 月 2 日午後 7:04 UTC](https://meta.discourse.org/t/upload-objects-to-private-s3-is-not-working/181574/3 "2021-03-02T19:04:44Z")

</div>

それを実行しましたが、画像はアップロードされるものの、ダッシュボードで500エラーが発生し、原因もログも何もありません。

---

<div class="post-metadata">

### Author: ![shawnngtq](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/shawnngtq/32/182367_2.png) [@shawnngtq](https://meta.discourse.org/u/shawnngtq)
#### Post date: [2021 年 12 月 26 日午前 1:53 UTC](https://meta.discourse.org/t/upload-objects-to-private-s3-is-not-working/181574/4 "2021-12-26T01:53:30Z")

</div>

@mahcr 様

私も同じ問題に直面しています。バックアップはできますが、「バケットがACLを許可していません」というエラーのため画像をアップロードできません。

IAMについては、`AmazonS3FullAccess` ポリシーをアタッチしましたが、エラーは解消されません。

何か解決策はありますでしょうか？

---

<div class="post-metadata">

### Author: ![seong](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/seong/32/259022_2.png) [@seong](https://meta.discourse.org/u/seong)
#### Post date: [2022 年 6 月 11 日午前 11:22 UTC](https://meta.discourse.org/t/upload-objects-to-private-s3-is-not-working/181574/5 "2022-06-11T11:22:52Z")

</div>

同じ問題が発生しています。バックアップは機能しますが、アップロードは機能しません。

このガイドは古くなっています:

> [@Set up file and image uploads to S3](https://meta.discourse.org/t/setting-up-file-and-image-uploads-to-s3/7229):
>
> So, you want to use S3 to handle image uploads? Here’s the definitive guide, but also see [Configure an S3 compatible object storage provider for uploads](https://meta.discourse.org/t/configure-an-s3-compatible-object-storage-provider-for-uploads/148916) to see how to configure your app.yml. S3 registration Head over to [https://aws.amazon.com/free/](https://aws.amazon.com/free/) and click on [Create a Free Account] During the create account process, make sure you provide payment information, otherwise you won’t be able to use S3. There’s no registration fee, you will only be charged for [what you use](https://aws.amazon.com/s3/pricing/), if you exceed the [AWS F…](https://aws.amazon.com/free/)

このガイドはCDNの部分には役立ちそうですが、完全な解決策ではありません:

> [@scottfsmith](#):
>
> 参考までに、私がやったことを以下に示します。
> 
> 1. AWSコンソールに移動し、「Network and Content Delivery」の下で「Cloudfront」を選択しました。
> 2. 「Create distribution」ボタンをクリックしました。
> 3. かなり明白なフォームに記入しました。唯一本当に必要なことは、ドロップダウンメニューから画像の保存元であるAWS S3バケットを選択することです。
> 4. Cloudfrontの設定が完了するまで少し待ちました…
> 5. `<gibberish>.cloudfront.net` というドメインが、Cloudfront Distributionsリストの「Domain Name」列に表示されました。
> 6. そのドメインをコピーして、サイト管理者のFile設定にある `s3 cdn url` フィールドに貼り付けました。
> 7. いくつかのテストを行いました。  
> a. 画像をアップロードした新しい投稿を作成したところ、確かにCloudfrontにありました。  
> b. ランダムな既存の画像投稿で「Rebuild HTML」を実行したところ、それらも `cloudfront.net` 画像で再構築されていることがわかりました。
> 8. すべてうまくいったように見えたので、再ベイクを実行しました。投稿が約50万件あるため、数時間かかりました。
> 
> ```plaintext
> ./launcher enter app
> # rake posts:rebake
> 
> ```
> 
> 1. すべて正常に機能しているようです。サイドキックキューに大量のジョブが投入されました。投稿ごとに1つずつ投入されたようで、クリアには数日かかりますが、現在処理中です。

---

<div class="post-metadata">

### Author: ![lisbethw1130](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lisbethw1130/32/129613_2.png) [@lisbethw1130](https://meta.discourse.org/u/lisbethw1130)
#### Post date: [2022 年 6 月 14 日午前 10:13 UTC](https://meta.discourse.org/t/upload-objects-to-private-s3-is-not-working/181574/6 "2022-06-14T10:13:40Z")

</div>

私も同じ問題が発生しました。バックアップのアップロードは機能しますが、画像のアップロードでは「バケットでACLが許可されていません」と表示されます。  
IAMの権限を1つとバケットの設定を2つ変更することで解決しました。

まず、IAM権限に関する[ガイド](https://meta.discourse.org/t/setting-up-file-and-image-uploads-to-s3/7229)の「s3:HeadBucket」を「s3:ListBucket」に変更しました。Amazonによると、HeadBucketは有効な権限ではないとのことです。

 ![画像](https://global.discourse-cdn.com/meta/original/4X/1/7/f/17fa7467f3d6169440dd457a65396969d1498aff.jpeg)

次に、ガイドに従ってバケットの権限ページと全く同じように設定しました。

 ![画像](https://global.discourse-cdn.com/meta/original/4X/e/d/8/ed857083f11a689c6635acc5b6b91083a0c3146f.jpeg)

そして最も重要な部分、ACLを有効にすることです。これは権限タブの「オブジェクト所有権の編集」と呼ばれています。ACLを有効にし、「オブジェクトライター」に設定すると、すべて正常に機能するようになりました。

 ![画像](https://global.discourse-cdn.com/meta/original/4X/3/a/a/3aa8d0c62cfe47d75feebcaa1d04a30bb09dca22.jpeg)

私の経験がお役に立てば幸いです。
