ローカルのPCからの実行など、IAMロールを使えない場合にAccessKeyIDとSecretAccessKeyを設定する方法をまとめてみました。
目次
- ~/.aws/credentialsを参照する
- JSONファイルから読み込む
- 環境変数を使う
- .envファイルを使う
- 直接コードで指定する
1. ~/.aws/credentialsを参照する
aws-cliでも標準で参照される~/.aws/credentials
を参照するにはAWS.SharedIniFileCredentials
を使います。
~/.aws/credentials
には以下の様に記入しておきます。
[default]
aws_access_key_id = AKXXXXXXXXXXXXXXXXXX
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[project1]
aws_access_key_id = AKYYYYYYYYYYYYYYYYYY
aws_secret_access_key = yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
profileをコードで指定
初期化時にprofileプロパティを指定することでprofile名を設定できます。指定しない場合はdefaultが使われます。
const AWS = require('aws-sdk')
const credentials = new AWS.SharedIniFileCredentials({profile: 'project1'})
AWS.config.credentials = credentials
profileを環境変数で指定
アプリケーション起動時に環境変数でAWS_PROFILE
を指定することでもprofileを設定できます。
AWS_PROFILE=project1 node app.js
const AWS = require('aws-sdk')
const credentials = new AWS.SharedIniFileCredentials()
AWS.config.credentials = credentials
credentialsの場所を変える
初期化時にfilenameプロパティをしていすることで設定ファイルの読み込み先を変更することができます。
const AWS = require('aws-sdk')
const credentials = new AWS.SharedIniFileCredentials({profile: 'project1', filename: './credentials'})
AWS.config.credentials = credentials
2. JSONファイルから読み込む
JSONファイルから読み込む場合loadFromPath
というメソッドが用意されています。
const AWS = require('aws-sdk')
AWS.config.loadFromPath('./config.json')
3. 環境変数を使う
環境変数のAWS_ACCESS_KEY_ID
とAWS_SECRET_ACCESS_KEY
に設定して起動するだけで使えます。
AWS_ACCESS_KEY_ID=AKYYYYYYYYYYYYYYYYYY AWS_SECRET_ACCESS_KEY=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy node app.js
const AWS = require('aws-sdk')
4. .envファイルを使う
こちらは特に公式の方法ではないのですが環境変数をdotenvで簡単に管理できるので紹介します。ライブラリを使用するので
npm install dotenv
でインストールして、.env
ファイルをアプリケーションルートに配置します。
# .env
AWS_ACCESS_KEY_ID=AKYYYYYYYYYYYYYYYYYY
AWS_SECRET_ACCESS_KEY=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
あとは設定を読み込むだけでokです。
require('dotenv').config()
const AWS = require('aws-sdk')
5. 直接コードで指定する
以下の例の様にコードに直書きでの運用はダメですが、このような設定方法が方法があると上記の方法にどうしても当てはまらない特殊な場合にも対応できるのでいざというとき安心ですよね。
const AWS = require('aws-sdk')
const credentials = new AWS.Credentials({accessKeyId: 'AKYYYYYYYYYYYYYYYYYY', secretAccessKey: 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'})
AWS.config.credentials = credentials