AWS CDNとS3に関する問題

,

@Falco これはまだ事実ですか? AWSの使用に関する最近の問題について読んだように思いますが、トピックが見つかりません。

関連するトピックをガイドとして使用して、AWS S3の使用で多くの問題が発生しています。

バックアップは期待どおりに機能していますが、CloudfrontをCDNとして使用するか、DISCOURSE_USE_S3やDISCOURSE_S3_BUCKETのコメントを外すと、永久にローディングアイコンが表示され続けます。

アップロードバケットやCloudfrontディストリビューションに何か誤った設定があるのではないかと疑っていますが、間違いを見つけることができませんでした。アップロードとバックアップの両方のバケットはディストリビューションの背後にあり、バックアップは正常に機能しているので???

discourse-cdn.repealobbba.org CNAME —> amazonassigned.cloudfront.net

DISCOURSE_CDN_URL: https://discourse-cdn.repealobbba.org

## S3 storage config
#  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: us-east-1
  DISCOURSE_S3_ACCESS_KEY_ID: ACCESS_KEY_ID
  DISCOURSE_S3_SECRET_ACCESS_KEY: SECRET_ACCESS_KEY
  DISCOURSE_S3_CDN_URL: amazonassigned.cloudfront.net  or
#  DISCOURSE_S3_BUCKET: repeal-obbba-discuss-uploads
  DISCOURSE_S3_BACKUP_BUCKET: repeal-obbba-discuss-backups
  DISCOURSE_BACKUP_LOCATION: s3

さらに、configにこれを追加すると

    after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - sudo -E -u discourse bundle exec rake s3:upload_assets
          - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

FAILED TO BOOTSTRAPエラーが発生します

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:upload_assets failed with return #<Process::Status: pid 8484 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/exec_command.rb:131:in `spawn'
exec failed with the params {"cd"=>"$home", "cmd"=>["sudo -E -u discourse bundle exec rake s3:upload_assets", "sudo -E -u discourse bundle exec rake s3:expire_missing_assets"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.

いつものように… 何かご意見やご提案があれば幸いです。

S3 にアセットをアップロードするためのスタンザを追加する必要があります。

ああ。間違っていました、あなたがやっていますね。

それはバケットの設定に何か問題があることを示唆しています。

バケットを設定するための JSON を生成するトピックが以前あったと思いますが、まだ存在するかどうかはわかりません。

「いいね!」 1

同意します。
バックアップバケットではバケットポリシーは使用されていませんでしたが、アップロードバケットにポリシーを追加したことでブートストラップの失敗が解消されました。

ポリシーのJSONは、CloudFront > Distributions > ご利用のディストリビューション > Originの編集 で確認できます。
Screenshot 2025-12-10 141220

残念ながら、永続的な点滅アイコンは解消されません。

オブジェクト所有権とACLを調整しても結果は変わりません。
Screenshot 2025-12-10 141936

現在の設定です。推奨設定だと思いますが、もしかしたら勘違いしているかもしれません。
Screenshot 2025-12-10 141702
Screenshot 2025-12-10 141835

設定を変更した後、アセットをアップロードするためにrantタスクを実行する必要があります。

また、開発者コンソールを開いて、ファイルがアクセスしようとしているものがバケットに存在するか、またはCDNに問題がないかを確認できます。

「いいね!」 1

継続していただきありがとうございます…

はい、rakeタスクは実行しましたが、何も変わりません。

./launcher enter app
rake posts:rebake
rake uploads:migrate_to_s3
rake posts:rebake_uncooked_posts

スロバーは残っています。

rake uploads:migrate_to_s3 はエラーを返します

Migrating uploads to S3 for 'default'...
Some uploads were not migrated to the new scheme. Running the migration, this may take a while...
rake aborted!
FileStore::ToS3MigrationError: Some uploads could not be migrated to the new scheme. You need to fix this manually. (FileStore::ToS3MigrationError)
/var/www/discourse/lib/file_store/to_s3_migration.rb:156:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:59:in `migrate'
/var/www/discourse/lib/tasks/uploads.rake:126:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:106:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:36:in `each_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management.rb:17:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:104:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:100:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => uploads:migrate_to_s3

少なくとも1つのCDNチェッカーでは、discourse-cdn.repealobbba.org → Amazon CloudFront と表示されています

そしてコンソールでは、画像とjsファイルが引き続きCDNから呼び出されていることが示されています
Screenshot 2025-12-10 192413

アセットはCDNから呼び出されていますが、そこにありますか?もしなければ、バケットにありますか?バケットからアクセス可能ですか?

おそらく、アップロードが別のバケットにあるか、アセットが期待される場所にないようにしているものがあると思われます。その場合は、記載されているように手動で修正する必要があります。コンソールにアクセスして、アップロードレコードのどこにあるかを確認する必要があります。

アップロードアセットタスクは機能しているように見えますか?他のアセットが読み込まれていないため、点滅表示が実行され続けています。

「いいね!」 1

はい、ファイルはアセットとしてバケット内にあります。
アクセス可能: https://repeal-obbba-discuss-uploads.s3.us-east-1.amazonaws.com/assets/logo-815195ae.png

バケットはアップロードとバックアップの2つだけです。バックアップは正常に動作しています。

rake s3:upload_assets はエラーを返しました:
rake aborted!
Aws::S3::Errors::AccessControlListNotSupported: The bucket does not allow ACLs (Aws::S3::Errors::AccessControlListNotSupported)

ACLを有効に切り替えて、再度 s3:upload_assets 編集: uploads:migrate_to_s3 を実行しましたが…
FileStore::ToS3MigrationError: 一部のアップロードを新しいスキームに移行できませんでした。手動で修正する必要があります。(FileStore::ToS3MigrationError)

??? 手動で修正する必要があります。(FileStore::ToS3MigrationError)

バケットを修正し、アセットをアップロードできるようになったため、サイトは動作するはずです。移行しないアップロードを処理するのは、別の(複雑な)問題です。

提供しようとしているアセットの1つは次のとおりです。

https://discourse-cdn.repealobbba.org/assets/start-discourse-6f03a463.br.js

証明書が壊れているため、それが問題です。証明書はありますが、URLと一致していません。

以前提案したように、ブラウザの開発者ツールのネットワークタブを見て、これを確認してください。

「いいね!」 1

上記からの編集
ACLを有効にして、s3:upload_assets 編集: uploads:migrate_to_s3 を再度実行しました

s3:upload_assets は現在、問題なく完了します

ネットワークエラーが見られます。証明書はAWSの問題でしょうか?

この度はご協力いただき、重ねてお礼申し上げます!!

はい。証明書がホスト名と一致していません。*.cloudfront.netと一致しています。

これは機能します: https://repeal-obbba-discuss-uploads.s3.us-east-1.amazonaws.com/assets/logo-815195ae.png

これは機能しません: https://discourse-cdn.repealobbba.org/assets/start-discourse-6f03a463.br.js

これは機能します: https://repeal-obbba-discuss-uploads.s3.us-east-1.amazonaws.com/assets/start-discourse-6f03a463.br.js

したがって、S3 CDNをhttps://repeal-obbba-discuss-uploads.s3.us-east-1.amazonaws.comに変更する必要があります。ああ、それはバケットアドレスのようですね。理想的ではないかもしれませんが、機能するでしょう。

「いいね!」 1

「so that wouldn’t be ideal」(それは理想的ではないでしょう)という表現にはあまり乗り気ではありませんね :wink:

AWSの代替ドメイン名(Alternate domain names)を解決策として検討しています。

私だけかもしれませんが、@Discourse が内部的に使用する CDN を追加するのは、@pfaffman のような方々の親切なサポートを必要とするほど難しくあるべきではないと思います。

@Falco@sam、そして @team(teamはメンションできません)も意見を述べてくれるでしょうか??

はい、私たちがホストしているすべてのサイトはS3とCloudFrontの組み合わせを使用しています。今ご覧になっているこのサイトも同様です。

「いいね!」 2

ご確認ありがとうございます!これを確認した後、DISCOURSE_S3_CDN_URLamazonassigned.cloudfront.net に戻すように再調整しました。これにより、証明書と URL の問題が解消されることを期待しています。
Screenshot 2025-12-11 133250

再構築し、ドキュメントで言及されているすべての rake コマンドを再度実行しました。
rake posts:rebake
rake uploads:migrate_to_s3 はまだ FileStore::ToS3MigrationError を生成します
rake posts:rebake_uncooked_posts

rake s3:upload_assets
rake s3:expire_missing_assets

サイトを読み込ませるには、まだうまくいきません。

何か提案はありますか?

これは役に立ちました。
Screenshot 2025-12-12 001849