AWS SDK for Ruby の Aws::SMS::Client で Token is invalid and failed to refresh 問題

投稿日:

更新日:

カテゴリ:

,

Aws::SMS::Client.newでSMSのクライアント生成するときに、`refresh’: Token is invalid and failed to refresh. (Aws::Errors::InvalidSSOToken)とエラー発生しました。
あれ?キーとシークレットは設定しているはずだけど、なんで?そもそも、なんでSSOトークン?公式を読んでも、API呼び出すのに、キーとシークレットだけ設定すればよかったように見えるんだけど?

問題概要

Ruby on RailsでAWS Server Migration Serviceを使うため、次のようにgemを追加しました。

gem 'aws-sdk-rails'
gem 'aws-sdk-sms', '~> 1.42'

環境変数に次を設定します。

export AWS_REGION="ap-northeast-1"
export AWS_ACCESS_KEY_ID="<アクセスキー>"
export AWS_SECRET_ACCESS_KEY="<シークレットキー>"

そしたら、次のようにRailsコンソールで叩いてみたところ、

> c = Aws::SMS::Client.new
[Aws::SSOOIDC::Client 400 0.128968 0 retries] create_token(grant_type:"refresh_token",client_id:"xxxxxx",client_secret:#<String "xxxxxx" ... (1813 bytes)>,refresh_token:"xxxxxx") Aws::SSOOIDC::Errors::InvalidGrantException Aws::SSOOIDC::Errors::InvalidGrantException

Traceback (most recent call last):
/Users/user/app1/server/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.170.0/lib/aws-sdk-core/sso_token_provider.rb:91:in `refresh': Token is invalid and failed to refresh. (Aws::Errors::InvalidSSOToken)

解決方法

AWS CLIを使うため、~/.aws/configが存在しており、どうもそいつが邪魔しているようです。

環境変数に次を設定すれば解決できました。


export AWS_SDK_CONFIG_OPT_OUT=true

参考

  1. AWS SDK for Ruby の設定
  2. AWS SDK for Ruby – Version 3

投稿日

カテゴリー:

,

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です