57063
ruby で aws-sdk gem を使って S3 にアクセスするプログラムがあるのですが  
EC2 で動かす分には EC2 Role を割り当てて

```

    Aws::S3::Client.new
    
```

と引数なしで動くのですが EC2 ではない開発環境でこのプログラムを動かしたとき  
引数なしの s3 クライアントの credentials は何を参照するのでしょうか

ローカルのPC上の開発環境で共通のコードを動くようにするには

```

    if ENV['AWS_ACCESS_KEY_ID'] && ENV['AWS_SECRET_ACCESS_KEY']
      s3 = Aws::S3::Client.new(
        access_key_id: ENV['AWS_ACCESS_KEY_ID'],
        secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
      )
    else
      s3 = Aws::S3::Client.new
    end
    
```

のように分岐をかいて毎回キーペアをセットするしかないですか？

aws cli は

```

    export AWS_DEFAULT_PROFILE=default
    aws s3 ls
    
    export AWS_DEFAULT_PROFILE=staging
    aws s3 ls
    
```

のように環境変数にプロファイル名をいれるだけで見る先をかえてくれるのですが  
ruby プログラムをこのような形で動かすことはできないでしょうか

よろしくお願いいたします
CC BY-SA 4.0
2019-07-31T04:52:34.273
57060
2019-07-31T05:35:50.893
question
ruby aws amazon-s3
開発環境、EC2環境で共通のコードで別の権限で S3 にアクセスしたい
<https://docs.aws.amazon.com/sdk-for-ruby/v3/developer-guide/setup-
config.html#aws-ruby-sdk-credentials-environment>

上記に記述がありますが、 `AWS_ACCESS_KEY_ID` 環境変数と `AWS_SECRET_ACCESS_KEY`
環境変数を、それぞれ設定したならば、 S3 クライアントのセットアップは、特に何も行う必要がなく、すなわち、引数なしでただただ new
をすれば良いと思います。
CC BY-SA 4.0
2019-07-31T05:35:50.893
57063
2019-07-31T05:35:50.893
754
57060
answer