Edited at

aws-sdk-coreでcredentialsのプロファイルを切り替える

More than 3 years have passed since last update.


credentialsファイル

Linux/Macでは~/.aws/credentialsに置く。

プロファイルごとにアクセスキーID/シークレットアクセスキーを設定できる。

デフォルトのプロファイルはdefaultになる。


~/.aws/credentials

[default]

aws_access_key_id = DEFAULT_ACCESS_KEY_ID
aws_secret_access_key = DEFAULT_SECRET_ACCESS_KEY
aws_session_token = DEFAULT_SESSION_TOKEN

[dev]
aws_access_key_id = DEV_ACCESS_KEY_ID
aws_secret_access_key = DEV_SECRET_ACCESS_KEY



オブジェクトごとに切り替える

~/.aws/credentialsに設定ファイルがあるなら:profileにプロファイル名を指定するだけ。

require 'aws-sdk-core'

ec2 = Aws::EC2::Client.new region: 'ap-northeast-1', profile: 'dev'

別のパスを指定するならAws::SharedCredentialsを作成して渡す。

require 'aws-sdk-core'

creds = Aws::SharedCredentials.new path: '/path/to/creds', profile_name: 'dev'
ec2 = Aws::EC2::Client.new region: 'ap-northeast-1', credentials: creds


まとめて切り替える

~/.aws/credentialsにファイルがある場合。

require 'aws-sdk-core'

Aws.config[:profile] = 'dev'
Aws.config[:region] = 'ap-northeast-1'
ec2 = Aws::EC2::Client.new

別のパスを指定する場合。

require 'aws-sdk-core'

creds = Aws::SharedCredentials.new path: '/path/to/creds', profile_name: 'dev'
Aws.config[:credentials] = creds
Aws.config[:region] = 'ap-northeast-1'
ec2 = Aws::EC2::Client.new