原因不明のエラー対応
ActiveStorageを使ってS3に画像を保存するための環境を構築したところ、以下のエラーが発生して苦労しました。しかし、これらのエラーはローカルのネットワークの問題やAWS側の一時的な障害によるものだと判明し再実行したところ成功しました。原因の詳細は謎のままです。
% docker-compose run --rm web rails db:seed
[+] Running 1/0
✔ Container rails_ec-db-1 Running 0.0s
rails aborted!
Seahorse::Client::NetworkingError: Failed to open TCP connection to rails-bucket.s3.ap-northeast-1.amazonaws.com:443 (getaddrinfo: Temporary failure in name resolution)
/myapp/db/seeds.rb:7:in `block in <main>'
/myapp/db/seeds.rb:4:in `times'
/myapp/db/seeds.rb:4:in `<main>'
Tasks: TOP => db:seed
(See full trace by running task with --trace)
% docker-compose run --rm web rails db:reset
[+] Running 1/0
✔ Container rails_ec-db-1 Running 0.0s
Dropped database 'myapp_development'
Dropped database 'myapp_test'
Created database 'myapp_development'
Created database 'myapp_test'
rails aborted!
Seahorse::Client::NetworkingError: Failed to open TCP connection to rails-bucket.s3.ap-northeast-1.amazonaws.com:443 (getaddrinfo: Temporary failure in name resolution)
/myapp/db/seeds.rb:7:in `block in <main>'
/myapp/db/seeds.rb:4:in `times'
/myapp/db/seeds.rb:4:in `<main>'
Tasks: TOP => db:reset => db:setup => db:seed
(See full trace by running task with --trace)
再実行結果。問題なく成功しました。
% docker-compose run --rm web rails db:reset
[+] Running 1/0
✔ Container rails_ec-db-1 Running 0.0s
Dropped database 'myapp_development'
Dropped database 'myapp_test'
Created database 'myapp_development'
Created database 'myapp_test'
% docker-compose run --rm web rails db:seed
[+] Running 1/0
✔ Container rails_ec-db-1 Running
まとめ
「S3のバケット名、AWSアクセスキーのポリシーの権限、Rails周りの設定方法に間違いはないか」などエラーの原因を深掘りしていき時間をかなり要してしまいましたが、AWSやアプリ側とは関係ない箇所が原因とわかり、良い教訓となりました。