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コマンドを使いましょう!!

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.