0

我发现了如何将文件从本地存储到 Amazon S3 存储桶,但我还有其他问题。

在我的存储桶中,当我将文件从 Canvas LMS 网站上传到 S3 存储桶时,文件存储在

s3://Mybucket/account_1/attachemenst/myfile.pdf

但我的桶中有三个“文件夹”:

s3://Mybucket/AAA/
s3://Mybucket/BBB/
s3://Mybucket/CCC/

我需要配置 yml 文件来告诉每个图像将其文件保存在哪里

www.AAA.com => [save files at ]=> s3://Mybucket/AAA/
www.BBB.com => [save files at ]=> s3://Mybucket/BBB/ 

等等。

我使用 docker 构建图像,我该怎么做?我应该amazon_s3.yml

bucket_name: Mybucket

bucket_name: Mybucket/AAA 

我试过了,但什么也没发生,只是错误。


更新:

我知道如何在 file_store.yml 中添加它,所以我使用此配置将文件从 CANVAS LMS 保存到 dir-A 目录:

development:
   storage: s3
   path_prefix: attachments/dir-A/

我需要的是为每个 docker-compose 更改此 path_prefix 以告诉每个组织在 aws s3 中保存文件的位置,例如:

Organization A =>  s3://bucket-name/account_1/attachments/dir-A/  
Organization B =>  s3://bucket-name/account_1/attachments/dir-B/  
Organization C =>  s3://bucket-name/account_1/attachments/dir-C/ 

所以就像我上面说的,我知道如何将文件保存在目录中,但是我使用 Dockerfile 通过使用 amazon_s3.yml 和 file_store.yml 构建图像

现在我只需要更改每个组织的 path_prefix 是可能的,请问如何?

4

1 回答 1

0

我找到了解决方案;因此,要为每个 docker-compose 在 file_store.yml 中编辑 path_prefix

我添加了这个 ENV

production:
  storage: s3
  path_prefix: attachments/<%= ENV['HELLO_VARIABLE'] %>/

在 docker-compose.yml 我将 HELLO_VARIABLE 添加到环境中,例如:

  app: &app
    image: registry/images:1
    environment:
      - HELLO_VARIABLE=dir-A

当我现在将文件上传到我的画布 LMS 平台时,工作完美,文件存储在

https://mybucket.s3.eu-central-1.amazonaws.com/account_1/attachments/dir-A/1/myFile.jpg
于 2021-02-08T10:47:28.217 回答