soracom-cli で API Sandbox を試そう

# はじめに

https://blog.soracom.jp/blog/2018/10/01/soracom-cli-sandbox/

SORACOM CLIがAPI Sandbox に対応したので、
以下を参考にCLIをインストールし、Sandbox環境を試してみましょう。

[soracom-cli README_ja.md - GitHub](https://github.com/soracom/soracom-cli/blob/master/README_ja.md)
[SORACOM API Sandbox 利用ガイド - 公式](https://dev.soracom.io/jp/docs/api_sandbox/)

## 環境

* macOS High Sierra (10.13.6)

## 目次

* SORACOM CLI のインストール
* SORACOMコンソールでの準備
* soracom-cli API Sandbox のセットアップ
* soracom-cli API Sandboxを動かす
* おまけ

## SORACOM CLI のインストール

### インストール

[インストール方法](https://github.com/soracom/soracom-cli/blob/master/README_ja.md#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%96%B9%E6%B3%95)

```bash
$ brew tap soracom/soracom-cli
$ brew install soracom-cli
$ brew install bash-completion
```

これだけです！簡単ですね！

### 引数補完

とても便利なので有効にしましょう。

初期状態ではホームディレクトリに`.bashrc`ファイルが無いと思うので作成します。
以下のコマンドはファイルがあれば追記されます。

```bash
$ cat << EOT >> ~/.bashrc
eval "\$(soracom completion)"

EOT
```

次に`.bash_profile`に以下を追加します。

```bash
if [ -f $(brew --prefix)/etc/bash_completion ]; then
  . $(brew --prefix)/etc/bash_completion
fi

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi
```

## SORACOMコンソールでの準備

### 前提条件

* 本番環境にアカウントがあること

### 注意点

公式ページにも記載がありますが注意点があります。

* Sandboxは、一部本番環境とは異なる動作をする場合がある
* Sandboxのデータは永続化されない。（SORACOM側が削除することがある）
* メンテナンスなどで使えなくなることがある

### 本番環境でSAMユーザーを作成する

#### ユーザーの作成

【ユーザーの作成】ボタンを押して、以下の情報を入力し作成しましょう。

<img width="196" alt="SORACOM_ユーザー_01.png" src="https://qiita-image-store.s3.amazonaws.com/0/228453/e2a486b5-6ef6-c33d-a2a3-0463d66de1b4.png">

| 項目 | 入力値 | 備考 |
| :-- | :-- | :-- |
| 名前 | SORACOM_API_Sandbox_User | |
| 概要 | SORACOM API Sandbox利用ユーザー(ロール無,ログイン無,認証キー有) | 任意です |

#### 認証キーの生成

権限設定、ログインパスワード設定は必要ありません。
作成したユーザーの認証キーのみ生成しましょう。

【認証キーを生成】ボタンを押します。

<img width="218" alt="SORACOM_ユーザー_02.png" src="https://qiita-image-store.s3.amazonaws.com/0/228453/89c93789-3e1a-3f09-18e2-67b42c64830c.png">

`認証キーID`、`認証キーシークレット`は後で使用するので、【クリップボードにコピー】ボタンを押してファイルなどへ退避しておきましょう。

<img width="300" alt="SORACOM_ユーザー_03.png" src="https://qiita-image-store.s3.amazonaws.com/0/228453/5875c4ea-6069-2700-d644-db0f37507313.png">

以上でコンソール画面の作業は終了です。

## soracom-cli API Sandbox のセットアップ

### API Sandbox用のプロファイル作成

以下のコマンドを実行し対話形式でプロファイルを作成します。

```bash
$ soracom configure-sandbox
--- SORACOM CLI セットアップ (Sandbox) ---
/Users/{username}/.soracom ディレクトリがなければ作成し、そこにファイル 'sandbox.json' を作成します。

カバレッジタイプを選択してください。

1. Global
2. Japan

選択してください (1-2) > 2  → (任意)


本番環境の AuthKeyID と AuthKey のペアを入力してください。これらは本番環境のアカウントを持っているかどうかを確認するためだけに使われます。

authKeyId: xxxxx
authKey: xxxxx


Sandbox 環境に作成するオペレーターのメールアドレスとパスワードを入力してください。

email: example-xxxxx@example.com  → ※1
password:                         → ※2

プロファイル sandbox はすでに存在しています。上書きしますか？ (Y/n)   → ※3
```

1. 一度使ったメールアドレスは使えないので自分のメールアドレスなどを使ってユニークになるようにしましょう。
1. パスワードポリシーを満たす必要があります。
1. 既にsandbox.jsonがある場合に出力されます。<br>必要であれば、事前にリネームなどして退避しておきましょう。nを選択するとError: abortになります。

ここまででオペレーター作成まで行われます。

## soracom-cli API Sandboxを動かす

API Sandboxを利用する場合は必ず`--profile sandbox`を指定するようにしてください。

### オペレーター情報を取得

```bash
$ soracom operator get --profile sandbox
{
	"attributes": null,
	"createDate": "2018-12-31T00:00:00.000",
	"description": null,
	"email": "example-xxxxx@example.com",
	"operatorId": "OP00xxxxxx40",
	"updateDate": "2018-12-31T00:00:00.000"
}
```

## おまけ

引数補完あると捗りますね！

```bash:タブキー押したときの補完
$ soracom 
auth                lagoon              query
bills               logs                roles
completion          lora-devices        sandbox
configure           lora-gateways       shipping-addresses
configure-sandbox   lora-network-sets   sigfox-devices
coupons             operator            stats
credentials         orders              subscribers
data                payer-information   unconfigure
devices             payment-history     users
event-handlers      payment-methods     version
files               payment-statements  vpg
groups              products
$ soracom 
```

## まとめ

Sandbox を利用することでお金をかけることなく色々な動作が安心して試せますね！