LoginSignup
1
3

More than 5 years have passed since last update.

AWS SDK for Ruby v3でREPLを使う

Last updated at Posted at 2018-03-15

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

1
3
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
3