如何使Strapi识别指向S3存储桶的自定义域?

时间:2019-03-23 10:50:23

标签: amazon-s3 strapi

我正在使用S3存储桶通过 strapi-provider-upload-aws-s3 插件存储静态资产。另外,我有一个通过SSL指向该存储桶的自定义域。基本上, https://my.domain.com/photo.jpg 指向 https://s3.amazonaws.com/my.domain.com/photo.jpg 。有什么办法可以让插件知道这一点,以便它可以将URL从 s3.amazonaws.com/my.domain.com 自动更改为 my.domain.com 更新包含此类URL的字段?

如果通过简单的配置或仪表板无法做到这一点,是否有任何方法可以调整代码本身以包含此功能?如果是这样(我非常希望有),那么哪个文件应该拥有这种逻辑?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,但是经过大量的研究,您可以执行下一个操作:

首先用您的自定义域的名称配置一个S3存储桶,例如:static.yourdomain.com,并在S3设置上将其设置为“静态主机”,然后在您对trapi S3提供程序的配置中输入下一个:

providerOptions: {
      accessKeyId: process.env.AWS_ACCESS_KEY_ID || '',
      secretAccessKey: process.env.AWS_ACCESS_SECRET || '',
      region: 'us-east-1',
      endpoint: 'static.yourdomain.com',
      s3BucketEndpoint: true,
      params: {
        Bucket: 'static.yourdomain.com'
      },
    }

在您的DNS中创建一个指向s3公共域的CNAME static.yourdomain.com,但技巧如下:

代替此:

static.yourdomain.com.s3-website-us-east-1.amazonaws.com

输入:

static.yourdomain.com.s3.amazonaws.com

答案 1 :(得分:0)

我认为在您的情况下,最好的方法是更新插件本身(./plugins/upload)。 当前没有您需要的自定义。

为此,您必须更新findAll功能并在map中手动替换主机,然后再发送数据。

这是我谈论的代码:https://github.com/strapi/strapi/blob/master/packages/strapi-plugin-upload/controllers/Upload.js#L122

您将不得不替换该URL以匹配您的需求。