この記事の内容
ストレージとしてS3を使おうと思ったのに、保存ができなかったので調べつつデバッグしました。
備忘録として対応内容を残します。
環境
- Windows11にUbuntsを入れて実行
- WSL2を使用
エラーの詳細
エラーが発生する状況
- article/id/edit の画面で画像ファイルを添付し、保存ボタンを押すタイミングで発生
- 保存先のストレージを
:local
から:amazon
に変更後に発現
エラーの内容
Seahorse::Client::NetworkingError - SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate):
app/controllers/articles_controller.rb:33:in `update'
- 下記はchatGPTにエラーメッセージの内容を確認した際の返答
Seahorse::Client::NetworkingError - SSL_connect は、AWS SDK for Rubyを使用している際に発生するネットワーク関連のエラーです。具体的には、SSL/TLS接続を確立しようとした際に失敗したことを示しています。
エラーに対する仮説
エラーについて調べたこと
- chatGPTにエラーの原因と解決策を確認
- "S3 Seahorse::Client::NetworkingError - SSL_connect" でGoogle検索し以下の公式チュートリアルを確認
エラーが発生しうる状況
- SSL証明書が最新の状態になっていないとき
- 証明書バンドルが適切にインストールできていないとき
- Windowsにおいて、公式チュートリアルにある設定をしていないとき
- プロキシサーバーやファイアウォールなどの設定に問題があるとき
- Access Key ID や Secret Access Key の設定ミスではない
- 上記の場合は別のエラーメッセージが出る
デバックとして実行したこと
1.SSL証明書を最新の状態に更新する
-
実施したこと:
下記のコマンドをUbuntsのルートディレクトリで実行sudo apt-get update sudo apt-get install --reinstall ca-certificates
-
結果:
状況が変わらない
2.aws-sdk-s3が適切にインストールできているか確認
-
実施したこと:
gemfileの記述とgemfile.lockの記述を確認 -
結果:
gemfile.lockに下記の記述を確認。適切にインストールされていると判断aws-eventstream (1.3.0) aws-partitions (1.968.0) aws-sdk-core (3.201.5) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.9) jmespath (~> 1, >= 1.6.1) aws-sdk-kms (1.88.0) aws-sdk-core (~> 3, >= 3.201.0) aws-sigv4 (~> 1.5) aws-sdk-s3 (1.159.0) aws-sdk-core (~> 3, >= 3.201.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) aws-sigv4 (1.9.1) aws-eventstream (~> 1, >= 1.0.2)
- 公式チュートリアルに記載のある設定を実施
- 実施したこと:
config/initializer内にaws_sdk.rb
ファイルを作成し、以下を記述Aws.use_bundled_cert!
- 結果:
uninitialized constant Aws (NameError)
が出る - 追加で実施したこと:
aws_sdk.rb
ファイルの先頭に以下を記述require 'aws-sdk-s3'
- 結果:画像の保存、表示が可能に!