GCP触ってみた①

# 概要
[GCPの教科書](https://www.ric.co.jp/book/development/detail/245)を参考にGCP初学者がGCPを触ってみたので、
理解したことなどをまとめていきます

# プロジェクトの作成
GCPでは、まず「プロジェクト」と呼ばれるものを作成することになります。
サービスやシステム単位でプロジェクトを作成できて、課金もプロジェクトごとに行われます。
アカウントを分けない限りサービス等がどのシステムで使われているかがわかりづらく、
課金もアカウント内すべてのシステムに対して行われるAWSとは違いを感じます。

「ダッシュボード」から「プロジェクトを作成」ボタンを押下します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704575/63d54129-1cf6-2693-cfca-920027d23edb.png)

「プロジェクト名」に任意の名称を入力します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704575/f5e2abb8-84d4-5bc8-85c0-a75f60fe9940.png)

このような形で作成したプロジェクトが表示されれば成功です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704575/dd85c2c8-029b-9371-2384-091a1078e34b.png)

# Cloud SDKのインストール
GCPでは、まずコマンドラインで操作ができるようになることが望ましいようなので、
(GUIにない機能が使える、REST APIで自動化できる)
まずはCloud SDKをインストールしてみます

[Cloud SDKのインストールページ](https://cloud.google.com/sdk)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704575/66bf6911-9e9f-2320-708c-ba23efda9591.png)

powershellで以下コマンドを実行する
```powershell
(New-Object Net.WebClient).DownloadFile("https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe", "$env:Temp\GoogleCloudSDKInstaller.exe")

& $env:Temp\GoogleCloudSDKInstaller.exe
    
```

と、以下のようにインストーラーが起動する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704575/e2256601-8a64-571a-ec50-bc00f127f671.png)

規約に同意する(I Agree)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704575/c5a8e576-f4ec-16a5-3d65-069a5275eeb7.png)

インストールタイプを選択する(今回はカレントユーザー)

![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704575/e14743e5-9064-4969-3a4e-c34c5108e13a.png)

インストールフォルダを指定する(特に拘りがなければデフォルトでいいと思う)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704575/e552f30c-41da-ca40-d4ec-8ad5874b484b.png)

インストールするコンポーネントを選択する(ベータコマンドは入れるべきなのだろうか、、、)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704575/e0d9ea15-5655-faed-c41a-48f2cab9b92e.png)

Google Cloud CLI has been installed!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704575/62426835-5903-efee-4e41-4a20e5629078.png)

インストール終了時のオプションが記載されているので、必要なものにチェックを入れて終了

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704575/7690e378-d039-4800-7656-1bd32ad959a1.png)

# インストール完了後の操作(認証)

```shell
gcloud init
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704575/1a41da84-5b2d-917d-9964-dae15a743a7b.png)

「Y」を押下し、遷移した画面でgoogle アカウントを選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704575/651c16af-e478-c434-b8b4-8c96ed960f0d.png)

次の画面に遷移するので、問題なければ「許可」を押下する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704575/1e332e86-b76e-19d8-3a07-7b6e15770d47.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704575/99687eb1-01f5-0c58-2eb4-b6933829bfab.png)
やったね


Google Cloud CLIに画面が戻り、認証が完了する
```shell
You are logged in as: [xxxxxx@gmail.com].
Pick cloud project to use:
 [1] <作成したプロジェクトID>
 [2] Enter a project ID
 [3] Create a new project
Please enter numeric choice or text value (must exactly match list item):1
```

1を押下すると、デフォルトゾーンが設定されていないだの色々メッセージが出てきますが要するに「準備できたよ」ということかなと、、、

## インスタンスの作成

早速インスタンスを作ってみましょう

```shell
gcloud compute instances create a
API [compute.googleapis.com] not enabled on project [xxxxxxxx]. Would you like to enable and retry (this will take a few minutes)? (y/N)?
y

```


```shell
gcloud compute instances create aa
Please enter your numeric choice:  79

Created [https://www.googleapis.com/compute/v1/projects/noble-feat-376216/zones/us-central1-a/instances/aa].
NAME  ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
aa    us-central1-a  n1-standard-1               10.128.0.2   35.239.98.172  RUNNING
```
どうやらインスタンスを作成できたようだ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704575/99261ab4-f97d-66c5-fc52-08435db8df90.png)

GUIで見てもインスタンスが作成できている

```shell
ERROR: (gcloud.compute.instances.create) Could not fetch resource:
---
code: ZONE_RESOURCE_POOL_EXHAUSTED
errorDetails:
- help:
    links:
    - description: Troubleshooting documentation
      url: https://cloud.google.com/compute/docs/resource-error
- localizedMessage:
    locale: en-US
    message: A n1-standard-1 VM instance is currently unavailable in the asia-northeast1-b
      zone. Alternatively, you can try your request again with a different VM hardware
      configuration or at a later time. For more information, see the troubleshooting
      documentation.
- errorInfo:
    domain: compute.googleapis.com
    metadatas:
      attachment: ''
      vmType: n1-standard-1
      zone: asia-northeast1-b
      zonesAvailable: ''
    reason: stockout
message: The zone 'projects/<projectID>/zones/asia-northeast1-b' does not have
  enough resources available to fulfill the request.  Try a different zone, or try
  again later.
```

このようなエラーに遭遇してインスタンスが起動できないことがあったが、リソース不足？っぽいので他のゾーンを選んで解決しました。

## インスタンスの削除

```
gcloud compute instances delete aa
No zone specified. Using zone [us-central1-a] for instance: [aa].
The following instances will be deleted. Any attached disks configured to be auto-deleted will be deleted unless they are attached to any other instances or the `--keep-disks` flag is given and specifies them for keeping. Deleting a disk
 is irreversible and any data on the disk will be lost.
 - [aa] in [us-central1-a]

Do you want to continue (Y/n)?  y

Deleted [https://www.googleapis.com/compute/v1/projects/xxxxxxxxxxx/zones/us-central1-a/instances/aa].
```

消えたっぽい

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/704575/6be71499-55a9-a965-7b83-c51cf9527529.png)

GUIで見ても消えている

今回はここまで、お疲れ様でした。