LoginSignup
1
1

More than 5 years have passed since last update.

AWS IAM で複数の新規ユーザを同時に作成しグループに追加する(AWS SDK for Ruby)

Last updated at Posted at 2015-03-04

AWSのマネージメントコンソールでは、IAMの新規ユーザの追加は一度に5ユーザずつしか登録することができず、40名(1クラスの学生数)やそれ以上のユーザを追加していくのは非常にめんどくさく退屈な作業となります。

AWS SDK for Rubyを使って新規ユーザ登録を自動化し、楽ができると素敵です。

初めてのAWS SDK for Ruby

AWS SDK for Rubyを初めて使う人(私も含む)は、下記の公式のドキュメントを参照して、AWS SDK for Rubyのインストール(下記のbundle installでインストールされますね)、アクセスキーの設定(~/.aws/credentials)を行いましょう。

では、はじめましょう

とりあえず、適当なディレクトリを作成しそのディレクトリ下にこれから示す3つのファイル user_password_group.csv, Gemfile, addusers.rbを作成しましょう。

user_password_group.csv

新規に追加したいIAMユーザのユーザ名とパスワード、ユーザを追加するIAMグループを記述した、CSVファイル user_password_group.csvを準備します。

user_password_group.csv
test_user_01,kG3MnDlx,testGroup
test_user_02,pGw4B40Z,testGroup
test_user_03,QQa57hFd,testGroup

各ユーザを追加するIAMグループ(ここではtestGroup)はあらかじめ作成しておきましょう。

Gemfile

Gemfileは https://github.com/awslabs/aws-ruby-sample/blob/master/Gemfile を参考にしました。

Gemfile
source 'https://rubygems.org'
gem 'aws-sdk', '~> 2.0.22'

bundle install して必要なGemをインストールしておきましょう。ここでAWS SDK for Rubyもインストールされるはずです。

$ bundle install
...
Bundle Complete! ...

addusers.rb

本体の addusers.rb はAPIドキュメントAws::IAM::User を矯めつ眇めついろいろと試行錯誤して次のようになりました。

addusers.rb
require 'rubygems'
require 'bundler/setup'
require 'aws-sdk'
require 'csv'

users = []
CSV.foreach("user_password_group.csv") do |row|
  users.push({user_name: row[0], password: row[1], group_name: row[2]})
end

users.each do |user| 
  iam_user = Aws::IAM::User.new(user[:user_name])
  iam_user.create
  iam_user.create_login_profile({password: user[:password]})
  iam_user.add_group({group_name: user[:group_name]})
end

では、実行へ

早速実行しましょう。

$ ruby addusers.rb
/home/...../aws-sdk-core/plugins/regional_endpoint.rb:30:in `after_initialize': missing region; use :region option or export region name to ENV['AWS_REGION'](Aws::Errors::MissingRegionError)
... 

むぅ、怒られてしまいました。region optionの設定が必要だったみたいです。ここは、環境変数 AWS_REGIONを設定することで乗り切りましょう。

$ export AWS_REGION='ap-northeast-1'

もう一回実行。

$ ruby addusers.rb
$

今度は無事実行できたようです。

実行結果

AWSマネージメントコンソールのIAM > GroupsのページでtestGroupsを選択すると、確かにuser_password_group.csvで記述した、3ユーザが登録されているのがわかります。

aws_iam_addusers.png

最後に

なにぶん初めて AWS SDK (for Ruby)を触ったので、ここでやった方法が適切なのかはよくわかりません。もっと簡単な方法があるよ、ここはちょっとまずいのでは、などありましたらコメントでご教授いただけると幸いです。

ソースコードはこちら。

参考リンク

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1