# 图片上传错误：存储桶不允许ACL

**URL:** https://meta.discourse.org/t/image-upload-error-the-bucket-does-not-allow-acls/224800
**Category:** Support
**Tags:** s3
**Created:** [2022年四月20日 00:56 UTC](https://meta.discourse.org/t/image-upload-error-the-bucket-does-not-allow-acls/224800 "2022-04-20T00:56:29Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![bksubhuti](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bksubhuti/32/254360_2.png) [@bksubhuti](https://meta.discourse.org/u/bksubhuti)
#### Post date: [2022年四月20日 00:56 UTC](https://meta.discourse.org/t/image-upload-error-the-bucket-does-not-allow-acls/224800/1 "2022-04-20T00:56:29Z")

</div>

用户甚至管理员都无法再上传图片了。  
错误日志显示热链接错误。  
限制为 4MB，但在用户抱怨后，我尝试上传了一个 800KB 的文件作为测试。

我们几天前进行了一次更新（2.9.0.beta4）。  
我们最近设置了 s3 存储桶。

我注意到 GitHub 上 15 天前有一个关于热链接的修复。  
我无法在 GitHub 上创建问题。这里是报告错误的地点吗？

```plaintext
消息（已报告 2 条）

默认：未能拉取热链接的图片 (https://jackrail.space/images/discourse-logo-sketch-small.png) 帖子：586
存储桶不允许 ACL
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/seahorse/client/plugins/raise_response_errors.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.96.1/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.96.1/lib/aws-sdk-s3/plugins/dualstack.rb:36:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.96.1/lib/aws-sdk-s3/plugins/accelerate.rb:50:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:22:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/aws-sdk-core/plugins/param_converter.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/seahorse/client/plugins/request_callback.rb:71:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/aws-sdk-core/plugins/response_paging.rb:12:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/seahorse/client/plugins/response_target.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/seahorse/client/request.rb:72:in `send_request'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.96.1/lib/aws-sdk-s3/client.rb:11274:in `put_object'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.96.1/lib/aws-sdk-s3/object.rb:1329:in `put'
/var/www/discourse/lib/s3_helper.rb:74:in `upload'
/var/www/discourse/lib/file_store/s3_store.rb:116:in `store_file'
/var/www/discourse/lib/file_store/s3_store.rb:30:in `store_upload'
/var/www/discourse/lib/upload_creator.rb:212:in `block (2 levels) in cr...

回溯

/var/www/discourse/app/jobs/regular/pull_hotlinked_images.rb:243:in `public_send'
/var/www/discourse/app/jobs/regular/pull_hotlinked_images.rb:243:in `log'
/var/www/discourse/app/jobs/regular/pull_hotlinked_images.rb:58:in `rescue in block in execute'
/var/www/discourse/app/jobs/regular/pull_hotlinked_images.rb:35:in `block in execute'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.13.4-x86_64-linux/lib/nokogiri/xml/node_set.rb:234:in `block in each'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.13.4-x86_64-linux/lib/nokogiri/xml/node_set.rb:233:in `upto'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.13.4-x86_64-linux/lib/nokogiri/xml/node_set.rb:233:in `each'
/var/www/discourse/app/jobs/regular/pull_hotlinked_images.rb:34:in `execute'
/var/www/discourse/app/jobs/base.rb:232:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:80:in `with_connection'

```

---

<div class="post-metadata">

### Author: ![bksubhuti](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bksubhuti/32/254360_2.png) [@bksubhuti](https://meta.discourse.org/u/bksubhuti)
#### Post date: [2022年四月20日 03:12 UTC](https://meta.discourse.org/t/image-upload-error-the-bucket-does-not-allow-acls/224800/2 "2022-04-20T03:12:50Z")

</div>

但我不能确定此功能的作用，或者它是否会禁用我的 s3 备份。  
**“启用 s3 上传”**  
我启用了此功能，以为这是备份过程的一部分。  
我禁用了此功能，并且在我上传测试图像时不再收到此错误。

---

<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: [2022年四月20日 03:18 UTC](https://meta.discourse.org/t/image-upload-error-the-bucket-does-not-allow-acls/224800/3 "2022-04-20T03:18:00Z")

</div>

该设置会将您的上传内容放入 S3 存储桶，并且与上传是分开的。听起来该存储桶没有正确编码用于上传（请参阅 [将对象存储用于上传（S3 和克隆）](https://meta.discourse.org/t/using-object-storage-for-uploads-s3-clones/148916) 获取信息）。

您仍应检查您的备份是否正常工作。

---

<div class="post-metadata">

### Author: ![bksubhuti](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bksubhuti/32/254360_2.png) [@bksubhuti](https://meta.discourse.org/u/bksubhuti)
#### Post date: [2022年四月20日 05:10 UTC](https://meta.discourse.org/t/image-upload-error-the-bucket-does-not-allow-acls/224800/4 "2022-04-20T05:10:56Z")

</div>

我猜那就是问题所在，并且抱怨的用户已经确认问题已修复。

我不确定这个图片上传有什么作用，但我想这可能是一些复杂服务器需要的一些额外功能。我想我们这 40 个用户不需要这种复杂功能的 Discourse。我们更关心表情符号点赞。

但是，当我按照 S3 说明操作时，我不得不回头创建一个新的“备份”存储桶，而原来的存储桶用于上传（因为我按照设置中出现的顺序进行的）。我想我可能会在 S3 说明中添加一些更多信息作为回复，以帮助其他人更容易遵循。此外，帮助线程中列出的权限策略不存在，我最终从另一个网站找到了一个“\*”解决方案。我会在该线程中尝试帮助澄清这一点。它奏效了，但需要对说明进行一些工作和调整。

这些操作无效……我改用了 \*。

```plaintext
"Action": [
           "s3:ListAllMyBuckets",
           "s3:HeadBucket"
       ],

```

我用来配置和遵循说明的帖子在这里：[here](https://meta.discourse.org/t/setting-up-file-and-image-uploads-to-s3/7229)

它也标记了启用 S3 上传为已勾选。似乎让事情变得对普通用户来说太复杂了。  
另一方面，我希望我的备份在没有它的情况下也能正常工作。

---

<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年六月10日 14:15 UTC](https://meta.discourse.org/t/image-upload-error-the-bucket-does-not-allow-acls/224800/5 "2022-06-10T14:15:46Z")

</div>

> [@bksubhuti](#):
>
> 这些操作不起作用……我改用了 \*。
> 
> ```plaintext
> 
> ```

你为什么改用了 \*？

---

<div class="post-metadata">

### Author: ![bksubhuti](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bksubhuti/32/254360_2.png) [@bksubhuti](https://meta.discourse.org/u/bksubhuti)
#### Post date: [2022年六月10日 14:56 UTC](https://meta.discourse.org/t/image-upload-error-the-bucket-does-not-allow-acls/224800/6 "2022-06-10T14:56:17Z")

</div>

我在谷歌搜索时在某处找到了它，只是为了让它接受代码。如果你看我引用的帖子，我提供了链接。我通常只是谷歌搜索然后复制粘贴。 🙂 然而，我后来注意到图像上传并非备份工作的必需品。我仍然不知道为什么有人会使用它。你只需要备份。你不需要两个存储桶。我在设置中取消了该选项，因为我仍然遇到上传错误，并且用户不允许上传图像。取消勾选该项目后，问题就解决了。我们有一个小型服务器组，所以我们很长一段时间都会没问题。
