この記事の目次
プロファイルとは?
プロファイルとは、AWS CLIコマンドや、AWS SDKなどで利用できる、設定や認証情報の集まりのことです。
AWS CLIコマンドや、AWS SDKを実行する際に、プロファイルを指定することで、その指定したプロファイルの設定や認証情報を利用して、コマンドなどを実行することができます。
プロファイルを利用することで、複数のIAMユーザーや、IAMロール、AWSアカウントを所有している場合でも、簡単に実行環境を切り替えて、コマンドなどを実行することが可能になります。
プロファイルの設定方法は?
プロファイルは、AWS CLIの「aws configure」コマンドを実行することで設定することが可能です。
コマンドを実行してプロファイルを設定すると、ホームディレクトリの「.aws」というフォルダ内に設定オプションや認証情報が保存されます。
例えば、下記のようなAWS CLI コマンドを実行すると、「tokyo」という名前のプロファイルのリージョンを「ap-northeast-1」で設定します。
$ aws configure set region ap-northeast-1 --profile tokyo
プロファイルの設定ファイルと認証情報ファイル
プロファイルを設定すると、ホームディレクトリの「.aws」フォルダの配下に、「credentials」と「config」というファイルが作成されます。
これらの2つのファイルについて、それぞれ説明していきます。
~/.aws/credentials
「credentials」ファイルには、機密性の高い認証情報が保存されています。
機密性の高い認証情報には、「AWSアクセスキーID」と「AWSシークレットアクセスキー」が含まれています。
例えば、プロファイル未指定時のデフォルトプロファイルと、「hoge」プロファイルの認証情報が保存された「credentials」ファイルは下記のようになります。
[default]
aws_access_key_id=XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[hoge]
aws_access_key_id=YYYYYYYYYYYYYYYYYYYY
aws_secret_access_key=YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
~/.aws/config
「config」ファイルには、機密性の低い設定オプションが保存されています。
機密性の低い設定オプションには、「リージョン」と「処理結果の出力方法」が含まれています。
例えば、プロファイル未指定時のデフォルトプロファイルと、「hoge」プロファイルの設定オプションが保存された「config」ファイルは下記のようになります。
[default]
region=us-west-2
output=json
[profile hoge]
region=ap-northeast-1
output=json
プロファイルの確認方法は?
AWS CLI の「aws configure list」コマンドを実行することで、現在設定しているプロファイルを確認することができます。
このコマンドは、現在設定しているすべてのプロファイルを一覧で表示します。
例えば、下記のコマンドを実行することで、「hoge」プロファイルを確認できます。
ただし、「AWSアクセスキーID」「AWSシークレットアクセスキー」は機密情報であるため、マスクされて表示されます。
$ aws configure list --profile hoge
Name Value Type Location
---- ----- ---- --------
profile hoge manual --profile
access_key ****************YYYY shared-credentials-file
secret_key ****************YYYY shared-credentials-file
region ap-northeast-1 config-file ~/.aws/config
プロファイルを指定して使ってみよう!
設定したプロファイルを指定することで、AWS CLIコマンドやAWS SDKを実行した際の、実行する環境を切り替えることができます。
プロファイルの指定箇所を環境変数などで外出しすることで、コードはそのままで、IAMユーザーやIAMロール、AWSアカウントを切り替えて実行することが可能になります。
それでは、AWS CLIや、AWS SDKでのプロファイルの指定方法をそれぞれ紹介していきます。
AWS CLI
AWS CLIコマンドを実行する際に、プロファイルを指定する方法を紹介します。
AWS CLIコマンドでは、オプション「–profile」を指定することで、プロファイルを指定できます。
以下の例では、「hoge」プロファイルを指定して、S3のバケットの一覧を表示できます。
$ aws s3api list-buckets --profile hoge
AWS SDK for Python(Boto3)
AWS SDK for Python(Boto3)を実行する際に、プロファイルを指定する方法を紹介します。
AWS SDK for Python(Boto3)では、「Session」オブジェクトに「profile_name」オプションを指定することで、プロファイルを指定できます。
以下の例では、「hoge」プロファイルを指定して、S3のバケットの一覧を表示できます。
import boto3
from boto3.session import Session
profile = 'hoge'
session = Session(profile_name=profile)
client = session.client('s3')
response = client.list_buckets()
print(response['Buckets'])
AWS SDK for JavaScript
AWS SDK for JavaScriptを実行する際に、プロファイルを指定する方法を紹介します。
AWS SDK for JavaScript では、「AWS.SharedIniFileCredentials」オブジェクトに「profile」オプションを指定することで、プロファイルを指定できます。
以下の例では、「hoge」プロファイルを指定して、S3のバケットの一覧を表示できます。
const AWS = require('aws-sdk');
const profile = “hoge”;
const credentials = new AWS.SharedIniFileCredentials({profile: profile});
AWS.config.credentials = credentials;
var s3 = new AWS.S3();
var params = {};
s3.listBuckets(params, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data.Buckets);
});
AWS SDK for Java
AWS SDK for Javaを実行する際に、プロファイルを指定する方法を紹介します。
AWS SDK for Java では、「ProfileCredentialsProvider」オブジェクトに「profileName」オプションを指定することで、プロファイルを指定できます。
以下の例では、「hoge」プロファイルを指定して、S3のバケットの一覧を表示できます。
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
public class Sample {
public static void main(String args[]){
String profile = “hoge”;
AWSCredentialsProvider provider = new ProfileCredentialsProvider(profile);
AmazonS3 s3 = new AmazonS3Client(provider);
List buckets = s3.listBuckets();
for (Bucket b : buckets) {
System.out.println(b.getName());
}
}
}
AWS SDK for Go
AWS SDK for Goを実行する際に、プロファイルを指定する方法を紹介します。
AWS SDK for Goでは、「session.NewSessionWithOptions」オブジェクトに「Profile」オプションを指定することで、プロファイルを指定できます。
以下の例では、「hoge」プロファイルを指定して、S3のバケットの一覧を表示できます。
package main
import (
“fmt”
“github.com/aws/aws-sdk-go/aws/session”
“github.com/aws/aws-sdk-go/service/s3”
)
func main() {
profile_name := “hoge”
sess, _ := session.NewSessionWithOptions(session.Options{
Profile: hoge,
})
svc := s3.New(sess.New())
input := &s3.ListBucketsInput{}
result, err := svc.ListBuckets(input)
if err != nil {
panic(err)
}
fmt.Println(result)
}
プロファイルを利用して複数のAWSアカウントを使い分けよう!
プロファイルを利用することの利点は、複数のAWSアカウントやIAMロール・ユーザーを簡単に使い分けられることです。
適切にプロファイルを設定しておくことで、AWS CLIのコマンドや、AWS SDKを利用しているソースコードなどはそのままに、指定するプロファイル名を変更するだけで、実行したいAWSアカウントやIAMロール・ユーザーを切り替えて実行することが可能になります。
複数のAWSアカウントを管理する必要のある方は、優先してプロファイルの設定をしておきましょう。
この記事の監修者・著者

-
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞