【AWS】プロファイルを利用して複数アカウントを一元管理しよう!


プロファイルとは?
プロファイルとは、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アカウントを管理する必要のある方は、優先してプロファイルの設定をしておきましょう。
この記事の監修者・著者

- AWSパートナー/Salesforce認定コンサルティングパートナー 認定企業
-
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。
・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
最新の投稿
- 2024-12-27営業インタビュー情報共有の活性化の中心に。SP企画部の新たな取り組み
- 2024-07-01営業インタビュー最短で当日にご提案可能。 OPE営業の対応が早い3つの理由
- 2024-07-01営業インタビュー研修見学ツアーが高評価!「お客様のOPEに対する期待を高め、継続に貢献できればと思います。」
- 2024-07-01営業インタビュー信頼関係を構築し、エンジニアの長期就業へ

- 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
- すぐに採用したいが、応募がぜんぜん集まらない
オープンアップITエンジニアをご検討ください!
当社のITエンジニア派遣サービスは
- 派遣スピードが速い!(最短即日)
- 4,500名のエンジニアから貴社にマッチした人材を派遣
- 正社員雇用も可能
こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。