概要
GCPはサービスを利用する場合、そのサービスのAPIを有効にする必要があります。
GUI上から操作できますが、今回はコマンドラインで有効になっているAPIを調べたり、
APIを有効にする方法を調べてみました。
手順
前提
gcloudコマンドのデフォルトプロジェクトが確認対象のプロジェクトか確認
- gcloudコマンドのデフォルトプロジェクト
gcloud projects list
未設定の場合、以下で設定
-
Google Cloud プロジェクトのプロジェクト ID を確認
gcloud projects list
-
デフォルト プロジェクトをそのプロジェクト変更
gcloud config set project <<YOUR_PROJECT_ID>>
プロジェクトで使用可能なサービスを確認
プロジェクトで使用可能なサービスのAPI一覧表示させる
-
コマンド
gcloud services list --available
-
例
※formatを変更しないと見ずらいのでcsv、jsonに適宜変更
※--limit= で出力を制限してますが、全部みたい際には、このオプションを削除
$ gcloud services list --available --format="csv(NAME,TITLE)" --limit=3
name,title
aapl-miriinfotech-public.cloudpartnerservices.goog,Miri Infotech lapp
abantecart-bitnami-launchpad.cloudpartnerservices.goog,Bitnami AbanteCart Certified by Bitnami
abilitec-api.endpoints.liveramp-identity-public.cloud.goog,AbiliTec API
$
$ gcloud services list --available --format="json(config.name,config.title)" --limit=3
[
{
"config": {
"name": "aapl-miriinfotech-public.cloudpartnerservices.goog",
"title": "Miri Infotech lapp"
}
},
{
"config": {
"name": "abantecart-bitnami-launchpad.cloudpartnerservices.goog",
"title": "Bitnami AbanteCart Certified by Bitnami"
}
},
{
"config": {
"name": "abilitec-api.endpoints.liveramp-identity-public.cloud.goog",
"title": "AbiliTec API"
}
}
]
$
有効化したいサービス名でフィルターして、対象APIを特定する
※名前だけだと、pubsub用のAPIが判断できないし、なぜかfilter のキーワードと違うものがヒットする。。
- 例
$ gcloud services list --available --filter=pubsub
NAME: pubsub.googleapis.com
TITLE: Cloud Pub/Sub API
NAME: pubsublite.googleapis.com
TITLE: Pub/Sub Lite API
NAME: redis.googleapis.com
TITLE: Google Cloud Memorystore for Redis API
NAME: solace-pubsub-platform.endpoints.solace-gcp-public.cloud.goog
TITLE: Solace PubSub+ Platform
NAME: storagetransfer.googleapis.com
TITLE: Storage Transfer API
$
現在のプロジェクトで有効な API を確認
現在のプロジェクトで有効な API とサービスを一覧表示
- コマンド
gcloud services list
- 例
$ gcloud services list --format="csv(NAME,TITLE)" --limit=3
name,title
autoscaling.googleapis.com,Cloud Autoscaling API
bigquery.googleapis.com,BigQuery API
bigquerymigration.googleapis.com,BigQuery Migration API
$
filter で絞り込みして、APIが有効化確認
- 例
※の例では、「NAME: pubsub.googleapis.com」が有効であることがわかる
gcloud services list --filter=pubsub
$ gcloud services list --filter=pubsub
NAME: pubsub.googleapis.com
TITLE: Cloud Pub/Sub API
$
該当するサービス名を使用して、APIを有効
- コマンド
gcloud services enable SERVICE_NAME
SERVICE_NAME は、「gcloud services list --available」のnameを指定する
例えば、Cloud Pub/Sub API の場合、「pubsub.googleapis.com」となる
- 例
$ gcloud services enable pubsub.googleapis.com
Operation "operations/acf.XXXXXXX" finished successfully.
$
※有効になれば、「gcloud services list」の結果に出力されます。
結論
そもそも、サービスでどのAPIを有効にすればいいのかが最初はわからないので、
初手からAPIをコマンドラインから有効にするのは難易度が高いですね。
例えば、複数のプロジェクトで同じ設定が必要な場合、1プロジェクトはGUIでAPIを
有効にしてAPIをリスト化し、それをベースに他プロジェクトはコマンドラインで
APIを有効にする等する際には便利そうです。
参考ドキュメント
プロジェクトで使用可能なサービスの一覧表示
https://cloud.google.com/service-usage/docs/list-services?hl=ja#available
プロジェクトで有効なサービスを一覧表示する
https://cloud.google.com/service-usage/docs/list-services?hl=ja#enabled
API の有効化
https://cloud.google.com/endpoints/docs/openapi/enable-api?hl=ja#enabling_an_api
gcloud projects list
https://cloud.google.com/sdk/gcloud/reference/projects/list