0

我们的应用程序允许我们的客户上传大文件。文件存储在 AWS/S3 上,我们使用 Uppy 进行上传,并将其 dockerize 以在 kubernetes 部署下使用,我们可以在其中增加实例数量。

它运行良好,但我们注意到所有 > 5GB 的上传都失败了。我知道 uppy 有一个用于 AWS 分段上传的插件,但即使在创建容器映像期间安装,结果也是一样的。

这是我们的 Dockerfile。有没有人通过 uppy 成功地将 > 5GB 的文件上传到 S3?我们有什么遗漏吗?

FROM node:alpine AS companion
RUN yarn global add @uppy/companion@3.0.1
RUN yarn global add @uppy/aws-s3-multipart
ARG UPPY_COMPANION_DOMAIN=[...redacted..]
ARG UPPY_AWS_BUCKET=[...redacted..]


ENV COMPANION_SECRET=[...redacted..]
ENV COMPANION_PREAUTH_SECRET=[...redacted..]
ENV COMPANION_DOMAIN=${UPPY_COMPANION_DOMAIN}
ENV COMPANION_PROTOCOL="https"
ENV COMPANION_DATADIR="COMPANION_DATA"
# ENV COMPANION_HIDE_WELCOME="true"
# ENV COMPANION_HIDE_METRICS="true"
ENV COMPANION_CLIENT_ORIGINS=[...redacted..]
ENV COMPANION_AWS_KEY=[...redacted..]
ENV COMPANION_AWS_SECRET=[...redacted..]
ENV COMPANION_AWS_BUCKET=${UPPY_AWS_BUCKET}
ENV COMPANION_AWS_REGION="us-east-2"
ENV COMPANION_AWS_USE_ACCELERATE_ENDPOINT="true"
ENV COMPANION_AWS_EXPIRES="3600"
ENV COMPANION_AWS_ACL="public-read"
# We don't need to store data for just S3 uploads, but Uppy throws unless this dir exists.
RUN mkdir COMPANION_DATA

CMD ["companion"]

EXPOSE 3020

谢谢!

4

1 回答 1

0

在单个 PUT 操作中的 AWS S3 服务中,您可以上传最大为 5 GB 的单个对象。

要将大于 5GB 的文件上传到 S3,您需要使用分段上传 S3 API 以及AwsS3MultipartUppy API。

检查您的上传代码以了解您是否正确使用 AWSS3Multipart,例如正确设置限制,在这种情况下,建议使用 5 到 15 之间的限制。

import AwsS3Multipart from '@uppy/aws-s3-multipart'

uppy.use(AwsS3Multipart, {
  limit: 5,
  companionUrl: 'https://uppy-companion.myapp.net/',
})

另外,请在 Github 上检查此问题,将大于 5GB 的大文件上传到 S3 错误 #1945

于 2022-03-06T04:38:44.153 回答