无法解密 config/credentials.yml.enc。也许你传错了钥匙?

Bri*_*ywo 10 ruby-on-rails amazon-s3 amazon-web-services ruby-on-rails-6

我最近删除了我的本地项目,但做了一个 git clone 并从我上次提交的地方开始。当我尝试将图像上传到已配置的 AWS 时,出现以下错误:

Aws::Sigv4::Errors::MissingCredentialsError in RentalsController#create


Cannot load `Rails.config.active_storage.service`: missing credentials, provide credentials with one of the following options: - :access_key_id and :secret_access_key - :credentials - :credentials_provider
Run Code Online (Sandbox Code Playgroud)

我试图查看我的credentials.yml文件是否有任何错误,但是当我输入此命令时:

EDITOR="code --wait" rails credentials:edit
Run Code Online (Sandbox Code Playgroud)

...我收到此错误:

Couldn't decrypt config/credentials.yml.enc. Perhaps you passed the wrong key?
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?

小智 19

你错过了 master.key

当您创建一个新项目时,rails 将设置credentials.yml.enc和一个匹配的master.key文件来访问凭据。该master.key文件也将自动添加到 gitignore,因此如果您删除本地项目并再次克隆它,您master.key将丢失。

解决此问题的唯一方法是设置新的credentials.yml.enc并将您的 AWS 凭证再次添加到其中。

首先,您需要删除现有的credentials.yml.enc,然后运行: rails credentials:edit创建一个新的。

  • 对于我们这些不经常进行首次部署的人来说,这一点很容易忘记。由于这个错误的根源是众所周知的,Rails 本身肯定可以提供更有用的错误消息,在给定的上下文中提示确切的根本原因。 (5认同)