REPLとは
Read-eval-print loopの略で、評価して表示して繰り返す。対話型評価環境を指します。
Ruby標準では、irbが使えますが、さらにそれを強力にしたのがpryというgemです。
pryの説明は主題から外れるので、はしょります。
下記参考になります。
今更聞けないpryの使い方と便利プラグイン集
↑で紹介されている通りpryはプラグインが豊富です。
pry-*で検索しただけでも100個以上ありますね。
$ gem list ^pry- --remote | nl
1 pry-aa_ancestors (0.0.1)
2 pry-alias (0.0.1)
3 pry-auditlog (0.3.0)
〜省略〜
99 pry-vterm_aliases (1.3.0)
100 pry-windows (0.1)
101 pry-yes (0.0.1)
aws.rbとは
aws.rbとは、AWS SDK for Rubyに付属しているREPLを提供するコマンドです。
aws-sdk, pryという2つのgemを入れておけば、aws.rbコマンドが使えます。
これを使うと、AWS-SDKを使ったツールやアプリを開発する際に、APIに対話形式で
アクセスできリクエスト/レスポンスを確認しながら実装できるので捗ります。
以下、aws.rb導入&実行例です(注. 事前にaws credentials設定が必要)
$ gem install aws-sdk pry
$ aws.rb
Aws> ec2.describe_instances
[Aws::EC2::Client 200 0.666618 0 retries] describe_instances()
=> #<struct Aws::EC2::Types::DescribeInstancesResult
reservations=
[#<struct Aws::EC2::Types::Reservation
groups=[],
instances=
[#<struct Aws::EC2::Types::Instance
ami_launch_index=0,
image_id="ami-00000000",
instance_id="i-00000000000000000",
instance_type="t2.small",
kernel_id=nil,
key_name="hogehoge",
launch_time=2018-03-09 07:38:27 UTC,
monitoring=#<struct Aws::EC2::Types::Monitoring state="disabled">,
以下略
v3で実行できない!?
この記事の主題になりますが、SDKのバージョンが 2017/8ごろにv3になりました。
(AWS開発者ブログ)
で、v3ではaws.rbの実行ファイル自体は存在していますが、実行するとエラーになります。
$ aws.rb
rbenv: aws.rb: command not found
The `aws.rb' command exists in these Ruby versions:
2.4.2
これでしばらく悩みました。。(コマンドはあるのに使えないのがハマりポイント)
どうすれば実行できるか
端的に言うと、コマンド名が変わってました。
aws.rb から aws-v3.rbに。
APIドキュメントにも書いてました。。まあドキュメント読めよってことですね^^;
おまけ
v3では、EC2やS3などのサービスごとにgemが分かれています。
こんな感じで。
$ gem list ^aws-sdk- --remote
*** REMOTE GEMS ***
aws-sdk-acm (1.3.0)
aws-sdk-alexaforbusiness (1.1.0)
aws-sdk-apigateway (1.9.0)
aws-sdk-applicationautoscaling (1.8.0)
aws-sdk-applicationdiscoveryservice (1.1.0)
aws-sdk-appstream (1.6.0)
aws-sdk-appsync (1.1.0)
sdkを使うだけなら、aws-sdk-ec2など、使いたいgemだけインストールしておけば
使えます。
が、aws-v3.rbを使うにはaws-sdkの多くのgemを入れる必要がありました。。
最小限となるgemの精査はしていないですが、aws-sdk-ec2, aws-sdk-coreを
入れただけでは使えませんでした。
なので、簡単に使いたいならaws-sdkを指定し、各サービスのgemを入れる必要があり
(要らないものも入っちゃいます。 140個ほど)
ということで、AWS SDK for Ruby v3でREPLを使う場合は、
aws-v3.rbコマンドを使いましょう!!