NameError: uninitialized constant AWS

「NameError: uninitialized constant AWS」のエラーが出た時の対応メモ。

エラー内容

NameError: uninitialized constant AWS

原因

aws-sdkのバージョン1と2でネームスペースが違う

NameError: uninitialized constant AWS. If you receive this error, you likely have upgraded to version 2 of the aws-sdk gem unintentionally. Version 2 uses the Aws namespace, not AWS. This allows version 1 and version 2 to be used in the same application.

参考:https://github.com/aws/aws-sdk-ruby#nameerror-uninitialized-constant-aws

対応

ネームスペースの修正。

version 1(修正前)

AWS.config({
  :access_key_id => ENV["AWS_ACCESS_KEY_ID"],
  :secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"]
})

version 2(修正後)

Aws.config.update({
  region: 'us-west-2',
  credentials: Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'])
})

リージョンの指定は適宜。

参考