VM::EC2でIAMロール認証を行う

VM::EC2でもIAMロール認証したくて、
VM::EC2にプルリクでもしようかなとコード眺めてたところ
「あれ、別にコード変えなくても今のままで行けるんじゃね?」
と気付いてしまった。

use strict;
use warnings;
use VM::EC2;

# dummy instance
my $ec2_dummy = VM::EC2->new(
    -access_key => 'a', # 空だと怒られる。。。
    -secret_key => 'b', # 空だと怒られる。。。
);
# get iam token
my $token = $ec2_dummy->instance_metadata->iam_credentials;
# get ec2 instance
my $ec2 = VM::EC2->new(
    -security_token => $token,
);
# api access...
print $ec2->describe_instances();


一度ダミーインスタンスを作って、iam_credentialsを取得。
そのトークンを用いて再認証したらいけた。


これでEC2サーバにキーを置かなくてもIAMロール+VM::EC2でAPIアクセス出来ますね!