无法在sitemap_generator s3 aws适配器中指定digitalocean端点

问题描述 投票:1回答:1

[我在Rails应用程序中使用sitemap_generator,并尝试创建站点地图并将其上传到DigitalOcean空间(据我所知,它与s3兼容),但是我无法覆盖站点地图适配器中的终结点属性,因此始终假设我的端点是亚马逊,而不是digitalocean

我得到的错误是:

Aws::Errors::NoSuchEndpointError: Encountered a `SocketError` while attempting to connect to:

  https://BUCKET_NAME.s3.XXXX.amazonaws.com/sitemaps/en/english.xml.gz

This is typically the result of an invalid `:region` option or a
poorly formatted `:endpoint` option.

我在这一部分的sitemap.rb配置中的代码是:

SitemapGenerator::Sitemap.adapter = SitemapGenerator::AwsSdkAdapter.new(
  ENV["BUCKET_NAME"],
  aws_access_key_id: ENV["S3_KEY"],
  aws_secret_access_key: ENV["S3_SECRET"],
  aws_endpoint: "https://XXXX.digitaloceanspaces.com",
  aws_region: 'XXXX'
)

我尝试使用其他适配器,但是出现了一个甚至更多的错误(显然是相同的,无法连接)

SitemapGenerator::Sitemap.adapter = SitemapGenerator::S3Adapter.new(
  aws_access_key_id: ENV["S3_KEY"],
  aws_secret_access_key: ENV["S3_SECRET"],
  fog_provider: 'AWS',
  fog_directory: ENV["BUCKET_NAME"],
  endpoint: "https://XXXX.digitaloceanspaces.com",
  fog_region: 'XXXX'
)
ruby-on-rails ruby amazon-s3 fog sitemap-generator-gem
1个回答
0
投票
我相信这里的问题是,该gem的AWS sdk适配器当前不支持“ endpoint”选项。这是currently supported options

def initialize(bucket, options = {}) @bucket = bucket @aws_access_key_id = options[:aws_access_key_id] @aws_secret_access_key = options[:aws_secret_access_key] @aws_region = options[:aws_region] end

端点选项是告诉AWS sdk覆盖默认服务端点以使用DigitalOcean而非AWS的方法:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Endpoint.html

要使sitemap_generator gem的AWS sdk适配器与DigitalOcean空间一起使用,将需要合并一个新的请求请求,以添加终结点选项。

© www.soinside.com 2019 - 2024. All rights reserved.