2

因此,我按照 sitemap_generator Gem 上的说明将站点地图上传到 S3(因为它不是从“公共”文件夹中读取的)并且我不断收到以下错误:

In '/var/www/mysite/releases/20200902316/public/':
rake aborted!
Aws::S3::Errors::AccessDenied: Access Denied

这很有趣,因为我在 S3 上使用完全相同的 Active_Storage 凭据,并且工作得很好。

这是我的站点地图.rb

require 'aws-sdk-s3'

# Set the host name for URL creation
SitemapGenerator::Sitemap.default_host = "https://mywebsite.com"

SitemapGenerator::Sitemap.adapter = SitemapGenerator::AwsSdkAdapter.new('s3_bucket',
  aws_access_key_id: 'my_access_key',
  aws_secret_access_key: 'my_secret',
  aws_region: 'us-east-1'
)

这一切都直接来自 site_generator 页面上的自述文件......所以我不太明白为什么如果相同的凭据适用于 Active Storage,它为什么不能工作......

https://github.com/kjvarga/sitemap_generator

4

1 回答 1

0

好的......这将有点涉及,因为要让它发挥作用,不仅仅是回答我的问题。但让我们从那里开始。

我之所以要这样做,首先是因为 Google Search Console 无法访问我的 rails“public”文件夹中的站点地图。所以我决定让站点地图生成器将其发送到我的 S3 存储桶。

那就是我遇到“拒绝访问”错误的地方。(一定要使用“环境”变量......否则你不会找到正确的数据库。)

RAILS_ENV=production bundle exec rake sitemap:refresh

您收到此错误的原因是,默认情况下,Amazon 将所有 S3 存储桶设置为:“阻止公共访问”。因此,您需要在 S3 存储桶权限下禁用“阻止公共访问”功能,如下所示。(当您阅读本文时,这可能看起来有所不同,因为他们之前已经多次更改了该配置。)

S3 阻止公共访问

禁用该功能后,您应该就可以上传站点地图了。但是...您仍然无法将此站点地图连接到 Google Search Console,因为您还需要将存储桶添加到搜索控制台。

http://yourbucketname.s3.amazonaws.com/

您可以通过将提供的 goggle html 文件上传到您的存储桶的根目录然后单击“验证”来验证您的存储桶。

然后你终于可以上传你的站点地图生成器站点地图了:

http://yourbucketname.s3.amazonaws.com/sitemaps/sitemap.xml.gz

它仍然会说它无法获取它......但几天后它应该开始更新。

于 2021-08-10T10:08:18.460 回答