[我在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'
)
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空间一起使用,将需要合并一个新的请求请求,以添加终结点选项。