仅有时解析服务器 S3 图像上传 - 套接字问题

Posted

技术标签:

【中文标题】仅有时解析服务器 S3 图像上传 - 套接字问题【英文标题】:Parse Server S3 Images Upload Only Sometimes - Socket Issue 【发布时间】:2017-01-05 20:22:56 【问题描述】:

我有一个连接到 Amazon S3 的 Parse 服务器。 有时,图像会成功上传从我的应用程序到 S3。我可以毫无问题地把它们拉下来。 但是,有时图像无法上传到 S3。 在我的 ios 应用中,当应用尝试上传图像时出现以下错误:

还有这个:

这是我的解析服务器初始化:

政策问题的可能性

我不确定发生了什么。 我认为这可能与 S3 策略有关。我根据this制定了我的政策。该政策如下所示:


"Version": "2012-10-17",
"Statement": [
    
        "Effect": "Allow",
        "Action": [
            "s3:*"
        ],
        "Resource": [
            "arn:aws:s3:::BUCKET_NAME",
            "arn:aws:s3:::BUCKET_NAME/*"
        ]
    
 ]

应用程序传输安全可能性

我的另一个想法是,它可能与 Apple 强制执行的 App Transport Security 有关。由于我还没有为 HTTPS 设置 SSL,我必须在我的 PLIST 中免除 sample.elasticbeanstalk.com URL。也许在使用 S3 适配器时,它会转到与 sample.elasticbeanstalk.com 不同的 URL,我还需要在 PLIST 中排除该 URL。如果这很重要,我的 S3 适配器确实设置了 Direct Access == true。由于我的 iOS 应用程序中没有出现应用程序传输安全错误,因此可能不是这样。只是一个想法。

保存触发器之前

我在为其上传图片的对象上有一个保存前触发器。我的 beforeSave 触发器中没有一个 console.logs 在它无法上传时写入它,所以我认为问题不在于这里,尽管它可能。

最可能的错误来源

我的 Elastic Beanstalk 日志反复声明:

2017/01/05 18:11:35 [错误] 6993#0: *16609 客户端打算发送太大的正文:3803408 字节,客户端:,服务器:,请求:“POST /parse/files/image. png HTTP/1.1",主机:"name.elasticbeanstalk.com"

为什么图片会太大而无法上传?我该如何克服这个问题?

问题

知道问题出在哪里吗?。谢谢!

【问题讨论】:

【参考方案1】:

您现在可能已经解决了这个问题...不过,正如您已经提到的 - 很可能与提供的 Elastic Beanstalk 日志有关。虽然我无法与有关套接字问题的错误日志联系起来,但几天前我几乎遇到了迁移我的前 Parse 托管应用程序的相同问题。

问题是 Elastic Beanstalk 上的 (nginx) 环境配置,默认情况下它只允许/处理最大大小约为 1 MB 的文件(只是我自己的估计,因为您无法从 AWS 方面获得可靠且一致的信息)。

但是:您可以通过将以下行添加到 Parse Server 的 .ebextensions 目录中的 .config 文件(如果存在,否则创建一个新文件,例如“app.config”)来克服此限制(如果存在,否则在 Parse Server 目录的最顶部位置创建一个目录 namend '.ebextensions'):

files:
  /etc/nginx/conf.d/proxy.conf:
    content: |
      client_max_body_size 10M;

本示例中的“10M”代表 10 MB 的大小 - 根据您的要求进行调整(但请记住,Parse Server 也定义了文件的最大大小 - 不是 100%,但我认为它是默认为 20 或 25 MB。您可以在 index.js 中初始化 Parse Server 实例时将其设置为参数/选项。)。

希望我能帮助别人:)

/m

【讨论】:

我不久前做过,它解决了 AWS EB 文件大小限制的问题。但是 Parse Server 对文件大小也有自己的限制,我没有克服,只是接受了。

以上是关于仅有时解析服务器 S3 图像上传 - 套接字问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 as3httpclient 套接字闪存上传到 s3

从解析仪表板上传时如何减小图像大小

将画布图像上传到 S3 服务器

将图像上传到 S3 时遇到内部服务器错误 500

AWS S3存储桶Django 3.0用户配置文件图像上传访问错误

Amazon S3 .NET:上传 base64 图像数据?