はじめに
最近ではオンプレミスでサーバを自前で用意する他に、クラウドサーバを使う機会が増えているかと思います。 弊社では、Amazon Web Services (AWS)を利用しており、多くの処理をAWS上で行っています。
AWSを利用していくにあたっては、アクセス情報(credentials)を注意して取り扱う必要があります。 ここでは、そんなAWSのcredentials (Access Key IDとSecret Access Key) の呼び出し方についてまとめます。
優先順位は以下のようになります。
- 環境変数に設定する
- 設定ファイル ($HOME/.aws/credentials)にもたせておく
- 各言語のSDKを使って、コードに直接もたせる
他にもいくつか設定方法はあるみたいですが、上記3つが使う機会の多い方法だと思うので絞って説明します。
環境変数に設定する
これはそのまんまですね。.bashrcなどに設定としてもたせます。
export AWS_ACCESS_KEY_ID=AKXXXXXXXXXXXXX export AWS_SECRET_ACCESS_KEY=lxxxxxxxxxxx/yyy/zzzzzzzzzz
このように設定して、コード中で環境変数から展開してしまいましょう。
設定ファイル ($HOME/.aws/credentials)にもたせておく
これはAWSのコマンドラインインターフェイス(CLI)を使います。 CLI自体の導入は解説が多いので割愛しますが、設定は以下のようになります。
[default] aws_access_key_id = AXXXXXXXXXXXXXXXX aws_secret_access_key = qxxAAAaaa+XXx/BBBbbxxx+YyYyYDDDDddddyy [sample1] aws_access_key_id = AYYYYYYYYYYYYYYYYY aws_secret_access_key = KNNNNnnnMMM/LLLLlllEEjcccCCCC
上の設定を見て分かると思いますが、この方法では複数の設定を記述できます。 複数の設定を保持しているならば、CLIで実行する場合、以下のように設定を指定して使い分けることができます。
aws s3 ls --profile default aws s3 ls --profile sample
コマンドラインから操作する場合は便利だと思います。
各言語のSDKを使って、コードに直接もたせる
直接コードの中に書いてしまう方法です。 セキュリティ的にはあまり良いとは言えないので、うまいこと外部のファイルから読み込ませるようにしましょう。
下記のサンプルはRubyでの書き方です。
require "aws-sdk" redshift = Aws::Redshift::Client.new( region: "ap-northeast-1", access_key_id: "AXXXXXXXXXXXXXXXX", secret_access_key: "qxxAAAaaa+XXx/BBBbbxxx+YyYyYDDDDddddyy" )
このように書けますが、上記 2.でcredentialsを設定してしまえばコード中にaccess_key_idとsecret_access_keyをもたせる必要はなくなります。 gitなどでコードを公開する場合は、上手く組み合わせてcredentialsを見えないようにしておく必要があります。
まとめ
クラウドサーバは非常に便利ですが、その分接続情報などの取り扱いには気をつけないといけませんね。