IT人材をお探しの方は、まずはお電話ください。担当営業がすぐにご要望にマッチした人材をご提案いたします。
tel:03-6409-6766 お急ぎの方はお電話ください

ブログTOP > IT・技術関連 > 【AWS】プロファイルを利用して複数アカウントを一元管理しよう!

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

IT・技術関連 更新日:2024.09.05
エンジニア採用
【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アカウントを管理する必要のある方は、優先してプロファイルの設定をしておきましょう。

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア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月時点)
ITエンジニアの派遣を利用したい企業様へ
ITエンジニアを派遣で採用したい企業様へ
  • 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
  • すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!

当社のITエンジニア派遣サービスは

  • 派遣スピードが速い!(最短即日)
  • 4,500名のエンジニアから貴社にマッチした人材を派遣
  • 正社員雇用も可能

こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。

無料相談のお申し込みはこちら
IT・技術関連の記事一覧へ

カテゴリから記事を探す

すべての記事一覧へ