0

我正在使用带有 flysystem_dropbox 和 flysystem_s3 的 Flysystem 模块进行存储。我已经按照模块的 readme.txt 文件中的描述在 settings.php 中配置了方案。

现在,当我将文件从本地同步到 Dropbox 或本地到 s3 时,同步过程工作正常,但是如果我尝试直接从节点存储文件,则将表单添加到 Dropbox 或 s3 它不起作用。我在最近的日志消息链接中收到以下错误

投寄箱错误:

文件字段 field_dropbox_file 的上传目录 dropboxexample:// 无法创建或无法访问。新上传的文件无法保存在该目录下,上传被取消。

S3 错误:

Aws\S3\Exception\S3Exception:在“ https://s3-eu-west-1.amazonaws.com/drupal8test/ ”上执行“PutObject”时出错;AWS HTTP 错误:客户端错误响应 [url] https:// s3-eu-west-1.amazonaws.com/drupal8test/[状态代码] 400 [原因短语] 错误请求 IllegalLocationConstraintException(客户端):未指定的位置约束与此请求发送到的区域特定端点不兼容。- <?xml version="1.0" encoding="UTF-8"?> <Error><Code>IllegalLocationConstraintException</Code><Message>未指定的位置约束与此请求发送到的区域特定端点不兼容。< /Message><RequestId>A0EFF7B64110C2C5</RequestId><HostId>hze5fRf4JLZYsWLrlT5djroRwL/LrxWgzFX9qU5tP+riDfBeYNn900z36HtwktejaqckD2Gwhss=</HostId></Error> 在 Aws\WrappedHttpHandler->parseError()(drupal158/html//var/的第 1583 行核心/供应商/aws/aws-sdk-php/src/WrappedHttpHandler.php)。

我的方案配置如下:

$schemes = [
  'dropboxexample' => [
    'driver' => 'dropbox',
    'config' => [
      'token' => '[my-token]',
      'client_id' => '[my login email id]',
    ],
  ],
  's3example' => [
    'type' => 's3',
    'driver' => 's3',
    'config' => [
      'key'    => '[my-access-key]',
      'secret' => '[my-secret-key]',
      'region' => 'eu-west-1',
      'bucket' => '[bucket-name]',
      'cname' => '[bucket-url]',
    ],
  ],
  'localexample' => [
    'driver' => 'local',
    'config' => [
      'root' => '/var/www/html/drupal8/sites/default/files',
    ],

    'cache' => FALSE, 
    'replicate' => 'dropboxexample',

    'serve_js' => TRUE,
    'serve_css' => TRUE,
  ]
];

$settings['flysystem'] = $schemes;

那么谁能告诉我我是否缺少一些配置设置或其他东西?

4

1 回答 1

0

我有同样的问题,似乎是您的 AWS 政策,您需要查看 S3 政策,然后使用模拟器检查它至少在 Amazon S3 上是否有效。如果您想关注,我也为此问题开了一张票

Drupal 问题 https://www.drupal.org/node/2666260

你的问题是区域,它需要像这样设置

//|Region name               |Region id      |
//|:-------------------------|:--------------|
// |US East (N. Virginia)     |us-east-1      |
// |US West (N. California)   |us-west-1      |
// |US West (Oregon)          |us-west-2      |
// |EU (Ireland)              |eu-west-1      |
// |EU (Frankfurt)            |eu-central-1   |
// |Asia Pacific (Tokyo)      |ap-northeast-1 |
// |Asia Pacific (Seoul)      |ap-northeast-2 |
// |Asia Pacific (Singapore)  |ap-southeast-1 |
// |Asia Pacific (Sydney)     |ap-southeast-2 |
// |South America (Sao Paulo) |sa-east-1      |

$schemes = [
  's3' => [
    'driver' => 's3',
    'config' => [
      'key'    => '[your key]',
      'secret' => '[your secret]',
      'region' => '[aws-region-id]',
      'bucket' => '[bucket-name]',

  // Optional configuration settings.

  'options' => [
    'ACL' => 'public-read',
    'StorageClass' => 'REDUCED_REDUNDANCY',
  ],

  'protocol' => 'https',             // Will be autodetected based on the current request.

  'prefix' => 'an/optional/prefix',  // Directory prefix for all uploaded/viewed files.

  'cname' => 'static.example.com',   // A cname that resolves to your bucket. Used for URL generation.
],

'cache' => TRUE, // Creates a metadata cache to speed up lookups.

], ];

$settings['flysystem'] = $schemes;

于 2016-02-10T15:32:20.093 回答