空谷に吼える

ブロックチェーン/DLTまわりのなにかしらを書いていく所存

Oracle Cloud InfrastructureのREST APIとかOCI CLIとかをサクッと使う

なんの話

Oracle Cloud Infrastructure(→以下、OCI)はもちろんGUI画面(→コンソール)で操作することもできるんですが、REST APIおよび各種プログラミング言語向けに用意されたSDK、また、OCI CLIという専用のコマンドラインツールを使用して各種の操作や機能を利用することもできます。

ここではとりあえずどのようなかたちであれREST APIとOCI CLIを実行してみたいという方向けに、それらを可能な限りサクッと使う方法についての情報をまとめておきます。

また、Tipsとして、コンソール上での操作およびOCI CLIでのコマンドの裏で発行されているREST APIを確認する方法についても併せて記載しておきます。

REST API

基本的には*1コンソールで行う操作はすべて、それに対応するREST APIが存在しています。APIリファレンスはこちら

2022/1/22現在、最もかんたんにREST APIを使いたのならBashが動くマシン(LinuxMacなど)②下記に記載の記事にあるスクリプトを使うのが良いと思います。以下その前提でやり方の情報をまとめておきます。

REST APIを実行するための準備

前提として下記の準備が必要です。以下の記事の前半部分に親切に説明されているので、ここでは項目の列挙に留めます。

www.tericle.jp

  • 実行ユーザーの準備……APIの実行に用いるOCIのユーザー(IAMユーザー)が用意されている必要があります。また、対象のAPIを実行するための権限が付与されている必要があります。
  • APIキーの準備
    • 秘密鍵/公開鍵ペアの作成……RSAキーペアを作成します。秘密鍵はあとでREST API実行時に用いるので、実行する環境に置いておく必要があります。キーペアはopensslなどのツールを使って作成してもいいですし、OCIコンソール上のAPIキーの画面で作成し、秘密鍵をダウンロードすることもできます。
    • 公開鍵の登録……IAMユーザーのAPIキーとして公開鍵を登録します。OCIコンソール上でキーペアを作成した場合は、作成時に自動的に登録されています。
  • テナンシーOCID、ユーザーOCID、APIキーフィンガープリントの確認……いずれもあとでREST API実行時に用いるので、実行する環境にメモを控えておきましょう。

REST APIの実行

前掲の記事にもcurlを用いてコマンドを組み立てる方法が記載されているんですが、特に署名の作成部分がやや面倒です。

以下の記事に署名の作成を含んでやってくれるBashスクリプトサンプルが記載されているのでそちらを使うのがオススメです。なお、この記事にも言及されていますが、OCI公式のドキュメントの中でも署名作成を含むBashスクリプトサンプルが公開されていたはずのところ、2022/1/18現在では見つからなくなってしまっているので、こちらの記事のスクリプトサンプルは非常に助かりました。

itport.cloud

前提として実行環境にopensslとcurlがインストールされている必要がありますが、だいたいのBashが動く環境には最初から入ってると思います。

複数の環境や実行ユーザーを使い分けたい場合には、スクリプト内のテナンシーとユーザーのOCID、APIキーの秘密鍵の場所とフィンガープリントを変数にしておいて、それらをセットするスクリプトを別途用意したりすると楽です。

OCI CLI

OCI CLIはOCIの各種操作、機能をコマンドラインから利用するためのツールです。OCI CLIREST APIのラッパーで、結局裏でREST APIのリクエストを発行しています。リファレンスはこちら

OCI CLIを最速で使う方法は間違いなくOCIコンソール上のクラウドシェルから使う方法です。この場合、OCI CLIがセットアップ済でインストール等を省略できるだけでなく、前述の「REST APIを実行する準備」のところで説明したユーザー認証に係る情報に関してのセットアップや設定をスキップできるからです。

クラウドシェルからOCI CLIを使う方法については以下の記事に説明されています。

www.ashisuto.co.jp

クラウドシェルではなく、任意のマシンにOCI CLIをインストールして使用する場合には、OCI CLIをインストールしたうえで認証関連のセットアップ、設定が必要です。以下の記事に説明されています。

www.ashisuto.co.jp

裏で発行されているREST APIを確認する方法

前述の通り、基本的にOCIのコンソールで行う操作は裏でいずれかのREST APIリクエストに結びついています。また、OCI CLIでのコマンドも、REST APIリクエストを発行しています。いずれも知っていればなんのことはないんですが案外気づきにくいので、ここではそれらのREST APIリクエストの内容を確認する方法も書いておきます。

コンソールで行った操作のREST APIリクエストを確認

ブラウザの開発者ツールを使うことでリクエスト先のAPIエンドポイント、および内容(リクエストボディ)が見られます。確認したいコンソール操作を行う直前に開発者ツールを開きましょう(Chromeの場合はF12キー)。

「コンソールで行ってるこの操作ってREST APIでやろうとしたらどれなんだっけ……?」というときや、「APIリファレンスを読んでもREST APIのボディ部をどう書いたらいいか全然わかんないぜ!」というときに激しく役立ちます。

OCI CLIコマンドのREST APIリクエストを確認

-dまたは--debugオプションを付与してコマンドを実行すると、OCI CLIから発行されたREST APIのエンドポイントおよびリクエスト内容が見られます。

あんまりないかもですが、「OCI CLIではやり方知ってるんだけどREST APIではどうやるんだっけ?」というときや、「なんだかOCI CLIで思った通り動かないから裏側のリクエストどうなってるのか確認したいな」というときにまあまあ役立つでしょう。

*1:Integration、Blockchain PlatformなどOCI上の一部のサービスはOCIコンソールの一部ではなく専用のサービス・コンソールを持っており、それらサービス・コンソールの中での操作についてはここで説明しているREST APIやOCI CLIで可能な操作の対象外です。それらについてはサービスごとに専用のREST APIが別途提供しています。