1. 概要
PowerShell は、.NET Framework 上に構築されたコマンドライン シェルおよび関連するスクリプト言語です。これは、Windows 環境でデフォルトのタスク自動化および構成管理ツールです。PowerShell コマンドレットは、PowerShell 内で呼び出される軽量なコマンドです。
Cloud Tools for PowerShell は、Google Compute Engine、Google Cloud Storage、Google Cloud SQL、Google Cloud DNS などの Google Cloud リソースにアクセスして操作するためのコマンドレットのコレクションで、今後さらに追加される予定です。
このラボに沿って、PowerShell から Google Cloud リソースを操作する方法を学習します。
学習内容
- Cloud Tools for PowerShell をインストールする方法
- Google Cloud SDK での認証方法
- PowerShell から Google Compute Engine を作成および管理する方法。
- PowerShell から Google Cloud Storage にデータをバックアップする方法。
必要なもの
このチュートリアルの利用方法をお選びください。
Google Cloud Platform のご利用経験について、いずれに該当されますか?
<ph type="x-smartling-placeholder">2. 設定と要件
この Codelab では、PowerShell を操作するために Google Cloud プロジェクトが必要です。既存のプロジェクトがある場合は、それを使用するか、次の手順で新しいプロジェクトを作成できます。
セルフペース型の環境設定
Google アカウント(Gmail または G Suite)をまだお持ちでない場合は、アカウントを作成してください。Google Cloud コンソール(console.cloud.google.com)にログインし、新しいプロジェクトを作成します。
プロジェクト ID を覚えておいてください。プロジェクト ID は Google Cloud Platform のすべてのプロジェクトで一意の名前にしてください。以降、このコードラボでは PROJECT_ID
と呼びます。
次に、Google Cloud Datastore や Cloud Storage などの Google Cloud Platform リソースを使用するために、Google Cloud コンソールで課金を有効にする必要があります。
Google Cloud Platform の新規ユーザーは、$300 分の無料トライアルをご利用いただけます。この Codelab をすべて実行しても費用はかかりませんが、より多くのリソースを使用する場合や実行したままにする場合は、コストが高くなる可能性があります(このドキュメントの最後にある「クリーンアップ」セクションをご覧ください)。
3. 設置方法
セルフペース型の環境のインストール
PowerShell コマンドレットは Cloud SDK for Windows に含まれています。まだインストールしていない場合は、Windows 用クイックスタート ガイドの説明に沿って、Google Cloud SDK for Windows をダウンロードしてインストールします。Cloud SDK のインストール時に PowerShell オプションがオンになっていることを確認します。
4. 認証
Cloud Tools for PowerShell は、Cloud SDK に保存されている認証情報と設定を使用します。そのため、コマンドレットの使用を開始するには、まず Cloud SDK を使用してログインする必要があります。
セルフペース型の環境認証
Google Cloud SDK Shell を起動し、次のコマンドを実行します。
gcloud init
Google ユーザー アカウントを使用してログインするオプションを受け入れます。
To continue, you must log in. Would you like to log in (Y/n)? Y
ブラウザで、プロンプトが表示されたら Google ユーザー アカウントにログインし、[Allow] をクリックして Google Cloud Platform リソースへのアクセスを許可します。
コマンド プロンプトで、オーナー、編集者、閲覧者の権限を持つ Cloud Platform プロジェクトをリストから選択します。
Pick a cloud project to use:
[1] [my-project-1]
[2] [my-project-2]
...
Please enter your numeric choice:
5. PowerShell 内で Google Cloud コマンドレットを実行する
認証が完了すると、PowerShell 内で Google Cloud コマンドレットを使用できるようになります。PowerShell コマンドライン シェルを見つけて開きます。
Google Cloud コマンドレットが正しくインストールされていることを確認するには、Get-GceInstance
コマンドレットを実行します。プロジェクトに含まれる Compute Engine インスタンスが一覧表示されます。
6. Google Compute Engine インスタンスを作成、管理する
このセクションでは、Google Cloud Tools for PowerShell 内から Google Compute Engine を作成して管理します。
インスタンス構成を作成する
インスタンスを作成する前に、まずインスタンス構成を作成する必要があります。少なくとも、名前、マシンタイプ、ブートディスク イメージまたは既存のブートディスクが必要です。Get-GceImage
を使用してディスク イメージを作成し、New-GceInstanceConfig
を使用して構成を作成します。
$disk = Get-GceImage "windows-cloud" -Family "windows-2012-r2"
$config = New-GceInstanceConfig "my-vm-1" `
-MachineType "n1-standard-4" `
-DiskImage $disk
この時点で、インスタンスの作成に使用できる構成が完成しました。
インスタンスを作成する
Add-GceInstance
コマンドレットを使用して、新しい Compute Engine インスタンスを作成します。プロジェクトとゾーンを指定できますが、省略すると、パラメータ値として現在有効な Cloud SDK 構成の値がデフォルトで使用されます。プロジェクトを指定する場合は、PROJECT_ID
を実際のプロジェクト ID に置き換えてください。
$config | Add-GceInstance -Project PROJECT_ID -Zone europe-west1-b
インスタンスを管理する
プロジェクトの仮想マシン インスタンスを取得するには、Get-GceInstance
コマンドレットを使用します。インスタンス名はプロジェクトやゾーン間で一意でない場合があるため、プロジェクトまたはゾーンのパラメータを指定して検索を絞り込むことができます。デフォルトでは、コマンドレットはアクティブな Cloud SDK 構成にある値を使用します。
$instance = Get-GceInstance "my-vm-1"
Set-GceInstance
コマンドレットを使用してインスタンスを作成すると、インスタンス タグ、ディスク、アクセス構成、その他のメタデータを設定できます。次のようにメタデータを追加し、削除します。
Set-GceInstance $instance -AddMetadata @{"newKey" = "newValue"}
Set-GceInstance $instance -RemoveMetadata "newKey"
Set-GceInstance $instance -RemoveTag "beta" -AddTag "alpha"
ここで、後でインスタンスを削除するために使用するタグを追加します。
Set-GceInstance $instance -AddTag "to-be-removed"
さまざまなコマンドレットを使用して、インスタンスを起動、停止、再起動できます。インスタンスを参照するには、Get-GceInstance
コマンドレットから返される名前または厳密に型指定されたオブジェクトを使用します。以下のコマンドをいくつか試してみましょう。
Stop-GceInstance $instance
Start-GceInstance $instance
Restart-GceInstance "my-vm-1"
最後に、インスタンスが終了したら、Remove-GceInstance
コマンドレットを使用し、先ほど指定したタグを指定して Compute Engine からインスタンスを削除します。
Get-GceInstance -Project $project |
Where { $_.Tags.Items -contains "to-be-removed" } |
Remove-GceInstance -WhatIf
7. Google Cloud Storage へのデータのバックアップ
Codelab のこのパートでは、Cloud Tools for PowerShell を使用して、ローカルマシンから Google Cloud Storage にデータをバックアップします。
バケットを作成する
Cloud Storage にファイルをアップロードする前に、バケットを作成する必要があります。New-GcsBucket
コマンドレットを使用して新しいバケットを作成します。
$bucket = "my-gcs-bucket"
New-GcsBucket $bucket
バケットにファイルをアップロードする
New-GcsObject
を使用すると、ファイルまたはフォルダ全体をバケットにアップロードできます。
-File
パラメータを使用してファイルパスを指定すると、ローカル ファイルのコンテンツを Cloud Storage にアップロードできます。または、PowerShell パイプラインを介してオブジェクトのコンテンツを文字列として渡すか、-Value
パラメータを使用します。
次のように、マシン上のローカル ファイルを選択してバケットにアップロードします。
New-GcsObject -Bucket "my-gcs-bucket" -File "C:\path\to\some\file\hello.txt"
-UploadFolder
パラメータを使用してフォルダパスを指定すると、ローカル ディスクから Cloud Storage にディレクトリ全体をアップロードできます。フォルダを Cloud Storage バケットのルートに直接アップロードしない場合は、-ObjectNamePrefix
を使用して、アップロードするすべてのオブジェクトに適用される接頭辞を指定します。
次のように、マシン上のローカル フォルダを選択してバケットにアップロードします。
New-GcsObject -Bucket "my-gcs-bucket" -Folder "C:\path\to\some\folder"
検索データ
データを検索するには、コマンドレットを使用するか、プロバイダを使用して一般的なファイル検索コマンドレットを使用します。バケットで次のコマンドを試します。
Get-GcsObject $bucket | Select Name, Size | Out-GridView
名前とサイズを示すグリッドのポップアップが表示されます。
データを読み取る
データを読み取るには、Read-GcsObject
コマンドレットを使用します。たとえば、次のコマンドを使用して、デスクトップにある hello.txt
という名前のファイルを読み取ることができます。
Read-GcsObject $bucket "hello.txt" `
-OutFile "$Env:UserProfile\Desktop\hello.txt"
データを削除する
最後に、Remove-GcsObject
コマンドレットを使用してデータを削除できます。バケットのすべての内容を削除するには、次のコマンドを使用します。
Get-GcsObject $bucket | Remove-GcsObject
8. 完了
この Codelab では、Compute Engine インスタンスと Cloud Storage バケットを PowerShell から管理する方法を学習しましたが、これ以外にもさまざまな方法があります。PowerShell を使用して Cloud SQL と Cloud CDN のリソースを管理することもできます。詳しくは、以下の「次のステップ」をご覧ください。
学習した内容
- Cloud Tools for PowerShell をインストールする方法
- Google Cloud SDK での認証方法
- PowerShell から Google Compute Engine を作成および管理する方法。
- PowerShell から Google Cloud Storage にデータをバックアップする方法。
次のステップ
- Cloud Tools for PowerShell の使い方を学ぶ
- Google Cloud Platform 上の Windows の詳細を学ぶ
- Google Cloud Platform での .NET の詳細を学ぶ
- Google Cloud Platform 上の SQL サーバーの詳細を学ぶ
- Cloud Tools for Visual Studio の使い方を学ぶ