AWSの機能を任意の言語から利用するためのSDKですが, 悲しいことにPerl向けのものはありません. 従って, Perl Monger達はAWSのCLIであるaws
コマンドをラップしてPerlから実行する, AWS::CLIWrapperというモジュールを駆使しています.
さまざまな事情があって, AWSに最近追加された機能をPerlから使いたかったので, さっくりとPull Requestを投げました.
即座にマージ頂いて, 1.13としてリリースされました. 対応ありがとうございました!
おもしろポイント
AWS::CLIWrapper, たくさんあるAWSの機能に対してどのようにして対応しているのだろう...? と前々から思ったのですが, 今回Pull Requestを出すにあたって眺めてみたところ, aws help
コマンドを使ってAWSの各機能を利用するためのコードを, 自動的に生成していました: https://github.com/hirose31/AWS-CLIWrapper/blob/master/lib/AWS/CLIWrapper.pm#L259-L261
# aws help | col -b | perl -ne 'if (/^AVAILABLE/.../^[A-Z]/) { s/^\s+o\s+// or next; chomp; next if $_ eq 'help'; my $sn = $_; $sn =~ s/-/_/g; printf "sub %-18s { shift->_execute('"'"'%s'"'"', \@_) }\n", $sn, $_ }' # aws help | col -b | perl -ne 'if (/^AVAILABLE/.../^[A-Z]/) { s/^\s+o\s+// or next; chomp; next if $_ eq 'help'; my $sn = $_; $sn =~ s/-/_/g; printf "=item B<%s>(\$operation:Str, \$param:HashRef, %%opt:Hash)\n\n", $sn}' # =item B<s3>($operation:Str, $path:ArrayRef, $param:HashRef, %opt:Hash)
ドキュメント(ヘルプ)から自動生成すれば漏れがないので, 「なるほど賢い!」と思いました.