km1994
@km1994 (慶太朗 丸山)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

AWS S3本番環境画像保存できない

解決したいこと

railsにて投稿アプリを作成中です。
ActiveStorage + S3で本番環境にて画像を保存したいのですがなかなか保存できません。
以下のエラーが出ております。

発生している問題・エラー

vendor/bundle/ruby/2.6.0/gems/aws-sdk-core-3.113.1/lib/aws-sdk-core/ec2_metadata.rb:88:    #   => {"accountId"=>"012345678912", ... }
vendor/bundle/ruby/2.6.0/gems/aws-sdk-core-3.113.1/lib/aws-sdk-sts/client.rb:1666:    #     account: "123456789012", 
vendor/bundle/ruby/2.6.0/gems/aws-sdk-core-3.113.1/lib/aws-sdk-sts/client.rb:1668:    #     user_id: "AKIAI44QH8DHBEXAMPLE", 
vendor/bundle/ruby/2.6.0/gems/aws-sdk-core-3.113.1/lib/aws-sdk-sts/client.rb:1681:    #     account: "123456789012", 
vendor/bundle/ruby/2.6.0/gems/aws-sdk-core-3.113.1/lib/aws-sdk-sts/client.rb:1683:    #     user_id: "AKIAI44QH8DHBEXAMPLE:my-role-session-name", 
vendor/bundle/ruby/2.6.0/gems/aws-sdk-core-3.113.1/lib/aws-sdk-sts/client.rb:1696:    #     account: "123456789012", 
vendor/bundle/ruby/2.6.0/gems/aws-sdk-kms-1.43.0/lib/aws-sdk-kms/client.rb:1302:    #       aws_account_id: "111122223333", 
vendor/bundle/ruby/2.6.0/gems/aws-sdk-kms-1.43.0/lib/aws-sdk-kms/client.rb:2026:    #       aws_account_id: "111122223333", 

[ERROR] Matched one or more prohibited patterns

Possible mitigations:
- Mark false positives as allowed using: git config --add secrets.allowed ...
- Mark false positives as allowed by adding regular expressions to .gitallowed at repository's root directory
- List your configured patterns: git config --get-all secrets.patterns
- List your configured allowed patterns: git config --get-all secrets.allowed
- List your configured allowed patterns in .gitallowed at repository's root directory
- Use --no-verify if this is a one-time false positive

自分で試したこと

1.production.rbを編集
2.heroku apps:infoで環境変数のチェックは行っています。
git-secretsを使っている為git リポジトリに commit も出来ないようになっています。
何か解決策をご教授いただけると幸いです。
(ローカル環境ではS3のバケットに入ることが確認済みです)

0

1Answer

おそらく git-secrets の機能を使っていて、その禁止条件に引っ掛かっているのだと思います。

git-secrets は、パスワード、トークン、クレデンシャルなどの人に見られては悪用されるような情報がコミットするファイルに含まれているかどうかチェックして、含まれていればコミットをさせない、というものです。

デフォルトの設定だと、英大文字と数字の羅列があると引っ掛かるはずです。
エラーメッセージの前半に書いてある、以下のものが引っ掛かっている箇所ですね。

.../ec2_metadata.rb:88:    #   => {"accountId"=>"012345678912", ... }
.../client.rb:1666:    #     account: "123456789012", 
.../client.rb:1668:    #     user_id: "AKIAI44QH8DHBEXAMPLE", 
.../client.rb:1681:    #     account: "123456789012", 
.../client.rb:1683:    #     user_id: "AKIAI44QH8DHBEXAMPLE:my-role-session-name", 
.../client.rb:1696:    #     account: "123456789012", 
.../client.rb:1302:    #       aws_account_id: "111122223333", 
.../client.rb:2026:    #       aws_account_id: "111122223333", 

対策方法はいくつかあって、エラーメッセージの後半に載っている通りです。

Possible mitigations:
- Mark false positives as allowed using: git config --add secrets.allowed ...
- Mark false positives as allowed by adding regular expressions to .gitallowed at repository's root directory
- List your configured patterns: git config --get-all secrets.patterns
- List your configured allowed patterns: git config --get-all secrets.allowed
- List your configured allowed patterns in .gitallowed at repository's root directory
- Use --no-verify if this is a one-time false positive

いろいろありますが、以下のどれかをやればよいと思います。

  • git config --add secrets.allowed で許可するものを追加
  • 許可リスト .gitallowed を作って(正規表現で許可条件を書いて)、リポジトリのルートに置く
  • コミットの際に --no-verify オプションをつけて、その時だけチェックをやめる

許可するとしたら 012345678912123456789012AKIAI44QH8DHBEXAMPLE111122223333 でしょうか。

あるいは、修正可能ならソースを修正して引っ掛からないようにするという手もあります。

1Like

Comments

  1. @km1994

    Questioner

    ありがとうございます。
    無事に解決いたしました。

Your answer might help someone💌