Aiven CLIで物事を成し遂げる

<font color="Grey">*[Get things done with the Aiven CLI](https://aiven.io/blog/aiven-cmdline)の翻訳です。*</font>

Aivenの使い方は1つではありません。Aivenのコマンドラインツールを使って一般的なタスクを実行する方法については、こちらをお読みください。

# Aiven CLIで仕事をこなす

デベロッパーセンターを検索

## Aivenコマンドライン


[Aivenウェブ]のようなGUI(グラフィカル・ユーザー・インターフェース)

[console](https://console.aiven.io/)のようなコマンドラインGUI(Graphical User Interface)は、システムと対話するための非常に親しみやすい方法です、

特に、あなたがしたいかもしれないアクションにあなたを導くことができるので。  

しかし、再現性と自動化に関しては、これらのインターフェースには限界がある。


幸いなことに、ウェブコンソールで利用可能なほぼすべてのアクションが可能です。

オープンソースの `avn` CLI ツールを使うこともできます、

[aiven-client](https://github.com/aiven/aiven-client)を使っても可能です。このツールは

このツールはAiven自身でも多用されている。

サービス管理機能が定期的に追加される。


この記事では、一般的な操作を

サービスを例に、一般的な操作を説明します。


### avn` のインストール


[Aiven CLI: Getting] の説明に従って

[スタート](https://docs.aiven.io/docs/tools/cli)の説明に従い、Aiven CLIをインストールする。

CLIツールをインストールする：



```
pip install aiven-client`クリップボードにコピーする
```

コマンドの動作を確認する楽しい方法は、この特別な機能を使うことだ：



```
avn crab`クリップボードにコピーする
```

これで素敵なアスキーアートが出来上がる。


### avn` コマンドのヘルプを見る


いくつかの方法で `avn` からヘルプを得ることができる。


スイッチの概要を含む、コマンドの使い方に関する一般的なヘルプを得るには

の概要や、トップレベルのサブコマンドのリストを含む、コマンドの使い方に関する一般的なヘルプを得ることができます：



```
avn --help`クリップボードにコピーする
```

の最後に `--help` を追加することで、特定のコマンドに関するヘルプを得ることもできます。

をつけることで特定のコマンドに関するヘルプを得ることができます。例えば、`avn user login`コマンドの使い方のヘルプを得るには、次のようにします：



```
avn user login --help`クリップボードにコピーする
```

すべての `avn` コマンドの (長い) 一覧を見ることができます。

を使うことで、すべての `avn` コマンドのリストと、それぞれが何をするのかの簡単なメモを得ることができます：



```
avn help`クリップボードにコピーする
```

これは、どのコマンドを使うか「推測」しようとしているときに便利だ。


例えば、これはPostgreSQL®に関する出力の一部です、

サービス接続情報を取得するコマンドを示しています。

を文字列、URI、または `psql` が必要とする形式で取得するためのコマンドを示します：



```
service connection-info pg string PostgreSQL接続文字列
service connection-info pg uri PostgreSQL サービス URI
service connection-info psql psql コマンド文字列`クリップボードにコピーする
```

### アカウントの取得


すでにAivenのアカウントをお持ちの方は、すぐにご利用いただけます。


そうでない場合は、[Aivenコンソールでサインアップ](https://console.aiven.io/signup?utm_source=blog&utm_medium=organic&utm_campaign=blog_avn_cmdline) - [無料プラン](https://docs.aiven.io/docs/platform/concepts/free-plan) または無料トライアルをご利用ください。


### avn`でAivenにログインします。


ほとんどの `avn` コマンドは認証が必要です。  

コマンドラインでは、通常は

認証トークンでログインします。


ユーザー名とパスワードではなく、トークンを使用することはグッドプラクティスとされています。  

トークンは特定の期間に制限することができます。

また、トークンを失効させることで、そのトークンを使っている人だけがアクセスできるようにすることもできます。

他のユースケースには影響しない。パスワードのリセットは、もっと広い範囲に影響を与えるだろう。


デフォルトでは、パスワードによるAivenへのログインは有効になっていません。本当に必要であれば、[Enable Aiven password](https://docs.aiven.io/docs/platform/howto/enable-aiven-password)を参照してください。
認証トークンを取得する。

[トークンの作成](https://docs.aiven.io/docs/platform/howto/create_authentication_token) を参照してください、

それをコピーし、以下のコマンドでログインしてください。その際

YOUR-EMAIL-ADDRESS`はAivenに登録したメールアドレスに置き換えてください。



```
avn user login YOUR-EMAIL-ADDRESS --token`クリップボードにコピーする
```

トークンを貼り付けるように指示され、以下のように表示されます。

認証情報をファイルシステム上のJSONファイルに保存したことを報告します。


ログインの代わりに、コマンドごとに認証トークンを指定する方法もある。この方法はスクリプトで有用で、環境変数 (例えば `AVN_AUTH_TOKEN`) にトークンを設定し、各コマンドを `avn --auth-token $AVN_AUTH_TOKEN ...` のように記述します。
### プロジェクトの選択


Aivenは "プロジェクト "を使ってアクセスできるサービスを整理します。プロジェクトは

アクセスできるプロジェクトのリスト、デフォルトのクラウド、そしていくつかの

支払いに関する情報を得ることができる：



```
avnプロジェクトリスト`クリップボードにコピーする
```

例えば、AivenのDeveloper Educatorとして、私は以下のような出力を見る：



```
`project_name default_cloud credit_card

dev-advocates google-europe-west3 N/A`Copy to clipboard
```

使用するプロジェクトが決まったら、次のように置き換えて選択する。

PROJECT-NAME`を実際のプロジェクト名に置き換えて選択することができる：



```
avn project switch PROJECT-NAME`クリップボードにコピーする
```

これで今後のコマンドのデフォルトプロジェクトになる。


コマンドは通常、プロジェクトを選択せずに使用したい場合は `--project` スイッチも使用します。
### プロジェクトについて調べる


プロジェクトの詳細を調べるには



```
avnプロジェクトの詳細`クリップボードにコピーする
```

これは通常、プロジェクトのデフォルトのクラウド、請求先、プロジェクトの詳細情報を表示します。

通貨、使用されているVAT IDの詳細、請求先住所、請求先通貨が表示されます。

クレジットカードのデータ（適切な場合）が表示されます。



```
プロジェクト名 default_cloud billing_currency vat_id
============= ================ ================ ==========
dev-advocates aws-eu-west-1 EUR FIxxxxxxxx
 クレジットカード = 該当なし
 billing_address = "どこかの住所"
 country_code = FI`クリップボードにコピー
```

### JSONデータを取得する


データを返すコマンドは `--json` スイッチも取る。

スイッチも取る。これはしばしば

標準のテキスト出力で提供される以上の情報が含まれることが多い。例えば、先ほどのコマンドを変更してスイッチを含める：



```
avn project details --json`クリップボードにコピーする
```

このバージョンでは、アカウント名とID、利用可能なクレジット、そして

現在の推定残高が表示されます。


json`で生成されるデータには圧倒されることがあります。

json`で生成されるデータは、特にある特定のフィールドだけを探している場合には、圧倒されることがあります。そのような場合には

[jq](https://stedolan.github.io/jq/)ツールにJSON出力をパイプするのが便利です、

にパイプし、クエリを使用して必要な情報だけを選択します。


例えば、現在のプロジェクトのデフォルトのクラウドの名前を見つけるには、こうする：



```
avn project details --json | jq '.[] | .default_cloud'`Copy to clipboard
```

このコマンドはクラウドの名前だけを返す。


### 利用可能なサービスを調べる


どのようなサービス（PostgreSQL®、Apache Kafka®、OpenSearch®など）を利用できるかを調べることができます。

を調べることができます：



```
avnサービスタイプ`クリップボードにコピーする
```

これでサービスの一覧が表示され、各サービスに使われている略語が表示されます。

タイプが表示されます。


例えば、PostgreSQLのエントリーは以下のようになる：



```
pg PostgreSQL - オブジェクトリレーショナルデータベース管理システム`クリップボードにコピーする
```

PostgreSQL は非常に優れたデータベースなので、`pg` サービスを作成し、さらに `avn` コマンドをいくつか紹介します。


### クラウドの検索


新しいサービスを作るには、どの地域にサービスを作るかを決める必要があります。

を決める必要があります。どのクラウドとリージョンが必要かは

をご覧ください：



```
avn cloud list`クリップボードにコピーする
```

これは利用可能なクラウドとその情報を表示する、

雲の説明、名前、場所（緯度と経度）

とその地域が表示されます。


出力は次のような行になる：



```
ヨーロッパ、ベルギー - Google Cloud：ベルギー google-europe-west1 50.45 3.82 europe`クリップボードにコピー
```

json` スイッチと `jq` を使うことで、より多くの情報を取得することができます。

json` スイッチと `jq` を使うことで、より詳細な情報を得ることができる。例えば

europe`のすべてのサービスの情報を見つけるには、次のようにする：



```
avn cloud list --json | jq '.[] | select(.geo_region=="europe")'`Copy to clipboard
```

以下のようなエントリーのリストが表示されるはずだ：



```
`{
 "cloud_description"："ヨーロッパ、フィンランド - Google Cloud：フィンランド"、
 "cloud_name"："google-europe-north1"、
 "geo_latitude"：60.5693,
 "geo_longitude"：27.1878,
 "geo_region"："europe"
クリップボードにコピー
```

その特定のエントリだけを取得するには、次のようにします：



```
avn cloud list --json | jq '.[] | select(.cloud_name=="google-europe-north1")'`Copy to clipboard
```

### サービスプランを検索する


Aivenは、「サービスプラン」を使用して、サーバーの数とどのような

メモリ、CPU、ディスクリソースをサービスに割り当てるかを定義します。


クラウド上のPostgreSQLで利用可能なサービスプランの一覧を取得するには、以下のリンクをクリックしてください。

google-europe-north1`、プラン名、コスト、リソースを含む。

このコマンドを使用してください：



```
avn service plans --service-type pg --cloud google-europe-north1`Copy to clipboard
```

以下は私が得た出力の一部である：



```
PostgreSQL-オブジェクトリレーショナルデータベース管理システムプラン

 pg:hobbyist $0.026/h Hobbyist (1 CPU、2 GB RAM、8 GB ディスク)
 pg:startup-4 $0.103/h Startup-4 (1 CPU、4 GB RAM、80-240 GB ディスク)
 pg:startup-8 $0.205/h Startup-8 (2 CPU, 8 GB RAM, 175-525 GB disk)`クリップボードへコピー
```

異なるクラウドを試してみて、クラウド間で価格がどのように異なるかを確認する価値がある。


提示されている価格はすべて込みの価格です（ただし、サービスによっては[追加ストレージ容量の購入](https://docs.aiven.io/docs/platform/howto/add-storage-space)も可能です）。
### PostgreSQL®サービスの作成


この最初のサービス作成では、PostgreSQLサービスをフィンランドの

Googleクラウド上にHobbyistレベルでPostgreSQLサービスを作成します。


サービスにユニークな名前をつけることが重要です。

私は自分の名前をつけたいが、自分の名前を使うべきだ！しかし、自分の名前を使うべきです。

名前を変更することはできませんのでご注意ください。



```
AVN SERVICE CREATE YOUR-NAME-demo-pg --service-type pg ￤ --cloud google-europe-north1 --plan hobbyist``.
 --cloud google-europe-north1 --plan hobbyist`Copy to clipboard
```

コマンドはすぐに戻ってくる。その間、Aivenはサービスの作成を開始します。


対象のクラウドにVPC(仮想プライベートクラウド)が含まれている場合、新しいサービスをVPC内に作成するかどうかを明確にしておいた方が安全です。プロジェクトに VPC があるかどうかわからない場合は [`avn vpc list`](https://docs.aiven.io/docs/tools/cli/vpc#avn-vpc-list) を、VPC 関連のスイッチ、特に `--no-project-vpc` と `--project-vpc-id PROJECT_VPC_ID` については [`avn service create`](https://docs.aiven.io/docs/tools/cli/service#avn-service-create) を参照してください。
サービスの開始を待ちたい場合は、サービスの `wait` コマンドを使用することができる：



```
avn service wait YOUR-NAME-demo-pg`クリップボードにコピーする
```

これは新しく作成されたサービスの進捗を報告します。



```
INFO サービス 'YOUR-NAME-demo-pg' の状態は現在 'REBUILDING' です。
INFO サービスの開始を待っています
...
INFO サービス開始待ち
INFO サービス 'YOUR-NAME-demo-pg' の状態が 'RUNNING' になりました。
INFO サービス 'YOUR-NAME-demo-pg' の状態が 'RUNNING' になりました。
```

このコマンドはサービスが `RUNNING` (`...` は複数の "Waiting" メッセージがあるかもしれないことを意味する) になったときに返される。  

wait`コマンドはスクリプトの中で特に便利で、準備ができたら別のコマンドを実行することができます。


サービスの状態を明示的にチェックしたり、他の

情報を確認することができます：



```
avn service get YOUR-NAME-demo-pg` クリップボードにコピーする
```

このようにサービス情報が返される：



```
service_name service_type state cloud_name plan create_time update_time notifications

YOUR-NAME-demo-pg pg REBUILDING google-europe-north1 hobbyist 2022-05-25T12:18:02Z 2022-05-25T12:18:43Z`Copy to clipboard
```

サービスの現在の *状態* が知りたいだけなら、先ほどと同じように `--json` と `jq` を使って次のようにします。

出力から必要なフィールドを取得する：



```
avn service get YOUR-NAME-demo-pg --json | jq .state`クリップボードにコピーする
```

### PostgreSQLサービスとやりとりする


PostgreSQLサービスが起動したら、コマンドラインを使って以下のことができる。

コマンドラインを使用することができます。


どのデータベースが存在するかを調べるには、以下のようにします：



```
avn service database-list YOUR-NAME-demo-pg`` クリップボードにコピーする
```

新しいサービスを作成したばかりなので、デフォルトのデータベースが表示されます：



```
defaultdb`クリップボードにコピーする
```

avn`を使用して新しいデータベースを作成することができる：



```
avn service database-create YOUR-NAME-demo-pg --dbname database2`クリップボードにコピーする。
```

もう一度データベースをリストアップすると、新しいデータベースが表示される：



```
データベース2
defaultdb`クリップボードにコピー
```

これは PostgreSQL データベースなので、`avn` から接続の詳細を取得できる。

から接続の詳細を取得し、それを使って

データベースに接続するために使うことができる：



```
avn service get YOUR-NAME-demo-pg --json | jq .service_uri_params`Copy to clipboard
```

しかし、組み込みのヘルパーを使う方が簡単だろう：



```
avn service cli YOUR-NAME-demo-pg`クリップボードにコピーする
```

これはサービスの適切なCLIを実行します。私たちのPostgreSQLサービスでは、`psql`を意味します。


このセクションの最後に、私は以下のサービスのバックアップ状況を知りたい。

のバックアップ状況を知りたい。いつバックアップが取られたのか、そしてどのリージョンにあるのかのリストを得ることができる。

で保存されているのかを知ることができる：



```
avn service backup-list YOUR-NAME-demo-pg`クリップボードにコピーする
```

バックアップの扱いはサービスやプランによって異なります。概要については[Aivenでのバックアップ](https://docs.aiven.io/docs/platform/concepts/service_backups)を、PostgreSQLの詳細については[PostgreSQL®のバックアップ](https://docs.aiven.io/docs/products/postgresql/concepts/pg-backups)を参照してください。
### プラン、クラウド、リージョンの変更


私たちはHobbyistプランを使用してPostgreSQLサービスを作成しました。これは

サービスを試してみるにはいいのですが、本番用には絶対に適していません。

を使うには適していません。


avn service update`コマンドでサービスの詳細を変更することができる。


アイルランドのAWS (`aws-eu-west-1`) で稼働している `Startup-8` プランに更新します：



```
avn service update YOUR-NAME-demo-pg --plan startup-8 --cloud aws-eu-west-1`クリップボードにコピーする。
```

これは少し時間がかかります。

この処理には少し時間がかかる。どのくらい時間がかかるかは

どのくらい時間がかかるかは、データの量とシステムの混み具合によります。以前と同じように、`avn service get`を使うことができる。

または `avn service wait` を使って終了時刻を知ることができる。のドキュメントを参照してください。

[のドキュメントを参照してください。

[services](https://docs.aiven.io/docs/platform/howto)と

[サービスのスケール

[サービス](https://docs.aiven.io/docs/platform/howto/scale-services)。(Aivenは、以下のような変更中にサービスが中断しないように配慮しています。

)。


サービスが再開したら、新しいプランと場所を確認してください：



```
avn service get YOUR-NAME-demo-pg`Copy to clipboard
```

### 整理整頓する


しばらくサービスを使わないのであれば、電源を切る。

をオフにすれば、課金されなくなります：



```
avn service update YOUR-NAME-demo-pg --power-off`Copy to clipboard
```

サービスの電源が切れるまでコマンドは戻りません。


Apache Kafka® や Apache Flink® のような「イベントのような」状態を持つサービスは、電源を切るとその状態を失います。
もう一度 update コマンドを使用することで、サービスの電源を入れ直すことができます：



```
avn service update YOUR-NAME-demo-pg --power-on`Copy to clipboard
```

サービスが `RUNNING` 状態に戻るまでしばらく時間がかかることを覚えておいてください。


サービスが不要になったら削除してください：



```
avn service terminate YOUR-NAME-demo-pg`クリップボードにコピーする
```

これはサービスおよび関連するすべてのデータを削除するので、以下のようなプロンプトが表示されます。

というプロンプトが表示されます。


## 続きを読む


私たちはこのツールで利用可能な機能の表面をほとんど引っ掻かなかった。詳しくはAivenのドキュメントをご覧ください。

[AivenのCLI](https://docs.aiven.io/docs/tools/cli)をご覧ください。


の[README](https://github.com/aiven/aiven-client/blob/main/README.rst)をご覧ください。

[AivenクライアントGitHubリポジトリ](https://github.com/aiven/aiven-client)

にも有用な情報と例が含まれています。


また、[Introduction to Aiven CLI](https://www.youtube.com/watch?v=nf3PPn5w6K8) ビデオもあり、同じ内容の一部をカバーしています。


また、BashスクリプトでAiven CLIを使用する例については、以下を参照してください。

[CLIで本番以外のAivenサービスを制御する](https://aiven-fly.fly.dev/developer/controlling-aiven-services-with-the-cli)


または、Aivenプラットフォームで作業する他の方法のいずれかを試してみてください：


* [Aivenウェブコンソール](https://console.aiven.io/)
* [AivenのAPI](https://docs.aiven.io/docs/tools/api) - これは何です。

コマンドラインツールとウェブコンソールがAivenプラットフォームと通信するために使用するものです。
* [TerraformとAiven Terraformプロバイダー](https://docs.aiven.io/docs/tools/terraform)
* [Kubernetes® および Aiven Operator for Kubernetes](https://docs.aiven.io/docs/tools/kubernetes)