【QuickStart】 AWS tools for Windows PowerShell を使ってみよう

 2013.01.08  リアルテックジャパン

新年あけましておめでとうございます、今年もよろしくお願いします。

昨年12月5日に発表があった AWS tools for Windows PowerShell を取り上げてみます。

AWSでは現状Linuxユーザの方が多いこともあり、それほど話題になっていない感じですが、SAP用途で日本だとWindows環境が多いことを前提にした場合、大変ありがたい機能です。

今までJava版しかなかったAPI ToolsにPowershell版がリリースされたということで、従来Java版のコマンドをawkやPerlで処理してパイプに渡すというわずらわしさからついに解放されることになります。

1.PowerShell の導入

AWS Tools for Windows PowerShell でサポートされているPowerShellのバージョンは、執筆時点でPowerShell 2.0および3.0です。

実用途を考えると、主流のOSに標準で入っている2.0がメジャーな状況ですが、弊社的には技術専業のコンサルファームなので、当然3.0でいきます。;)

Windows Server 2012/Windows 8 出荷とともにPowerShell のバージョンが3.0になり、コマンドレットも10倍以上増えていますし、後ほどの説明でも3.0ならではの便利機能を使って、従来のPowerShellの「とっつきにくさ」が少しでもなくなればできればと思います。

ちなみに、Windows2008/Windows7で標準で導入されているのはPowerShell 2.0なので、これを3.0にするためには2012年12月に公開された Winidows Management Flamework 3.0(WMF3.0)を事前に導入する必要があります。

WMF3.0 ダウンロードはこちらから。 http://www.microsoft.com/en-us/download/details.aspx?id=34595

ちなみにWMF3.0が導入可能なプラットーフォームは、ReadMeを見ていただく必要がありますが、執筆時点では下記の通りです。

・Windows 7 SP1

・Windows Server 2008 R2 (Including Server Core)SP1

・Windows Server 2008(not including Server Core)SP2

・IA64は導入不可

Microsoft .NET Framework 4.0」が入っていない場合は忘れずにいれておきましょう。

Microsoft .NET Framework 4 は下記から入手可能です。

・Webインストーラ:http://go.microsoft.com/fwlink/?LinkID=212547.

・スタンドアロンインストーラ:http://www.microsoft.com/ja-jp/download/details.aspx?id=17718

今回はWindows 7 SP1 / 32-bit環境にWMF3.0を導入しますので、Windows6.1-KB2506143-x86.msu を事前にダウンロードして導入します。http://www.microsoft.com/en-us/download/details.aspx?id=34595

コマンドプロンプトを開いて、下記のPSプロンプトが表示されれば導入完了です。

C:\> powershell  [Enter]

Windows PowerShell

Copyright (C) 2012 Microsoft Corporation. All rights reserved.

PS C:\>

PowerShellは従来初心者が取っつきにくいということがしばしばいわれていましたが、PowerShell3.0 から「GUI のあるコマンド ライン インターフェイス」が機能として搭載されて、これからPowerShellを触るという初心者にずいぶんやさしくなりました。

試しに "Show-Command "というコマンドレットを実行します。

PS C:\>Show-Command  [Enter] 
ダイアログ ボックスがポップアップして、コマンドレットの一覧が出てきます。

ps-Show-Command.png

試しに 「Get-Item」 を選んで引数として、Pathのフィールドに"C:\" をいれて実行ボタンを押下します。

ps-Get-Item.png

すると、下記のようにPSプロンプト上に完全なコマンドにした形で実行し、その結果を確認することができます。

PS C:\> Get-Item -Path c:\

ディレクトリ:

Mode            LastWriteTime       Length Name

----                -------------     ------    ----

d--hs        2013/01/08     15:20       C:\

このダイアログ ボックスにより、どこに何を入力するのかが、ずっとわかりやすくなりますね。
 

なお、ps-Question-button.pngをクリックするとヘルプが参照ができます、これ便利!

ただ、そのままだと一部のヘルプの内容が不足していて、全部が表示されないようで、一部が下記のようになります。

注釈

    Get-Help を実行しましたが、このコンピューターにこのコマンドレットのヘルプ ファイルは見つかりませんでした。ヘルプ  の一部だけが表示されています。

        -- このコマンドレットを含むモジュールのヘルプ ファイルをダウンロードしてインストールするには、Update-Help を使    用してください。

        -- このコマンドレットのヘルプ トピックをオンラインで確認するには、「Get-Help Get-Item -Online」と入力するか、

           http://go.microsoft.com/fwlink/?LinkID=113319 を参照してください。

試しに下記を実行すると、ブラウザが開いてヘルプの全容を閲覧することが可能になります。

PS C:\> Get-Help Get-Item -Online [Enter]

参考までにGet-Item のオンラインヘルプはこんな感じです。

 

下記のような実行サンプルがたくさん含まれており、非常に優れた学習ツールではないかと思います。

ps-help-online.png

PowerShellの説明が長くなってしまいました。

過去に触ったときの取っつきにくいイメージが強い方が多いのではと思い、最新のPowerShellの機能を先にご紹介した次第です。

これ以外にもいろいろとあるのですが、以降はGoogle先生に聞いてくださいね。

(下記LINKは参考までに、MicorsoftさんのTechNetのサイトです。)

Windows PowerShell: 新しいシェルの紹介

SAPデータコピーツール Data Sync Manager
SAPユーザー必見!テスト・トレーニング・データ移行時に機密データを守る方法は?

2.AWS Tools for Windows PowerShellの導入

http://aws.amazon.com/jp/powershell/#からキットをダウンロードします。

at0.pngのサムネイル画像

 くくりとしてはあくまで.NET SDKですのでインストーラのファイル名は「AWSToolsAndSDKForNet.msi」です。

以前のインストーラ画面

at1.png

今回のリリースからコンポーネントに”AWS Tools for Windows PowerShell”が含まれてます。

at2.png

ーPowerShellスクリプト実行許可を付与します。

ユーザアカウントごとに1回だけPowerShellコンソール上で設定が必要になります。

PS C:\> Get-ExecutionPolicy [Enter]

UnrestrictedかRemoteSignedになっていればOKですが、PowerShellインスト直後はRestrited(禁止)になっているので変更が必要です、注意してください。

PS C:\> Set-ExecutionPolicy RemoteSigned [Enter]

PS C:\> Get-ExecutionPolicy [Enter]

RemoteSigned

PS C:\>

詳しい解説は@IT様が解説されています。(下記LINKは@IT様のサイトです。)

PowerShellスクリプトの実行セキュリティ・ポリシーを変更する

ちなみに、グループポリシーでも設定は可能です。

ーAWS用モジュールのインポート

PS C:\> import-module "C:\Program Files\AWS Tools\PowerShell\AWSPowerShell\AWSPowerShell.psd1" [Enter]

ーモジュールのバージョン確認

PS C:\> Get-AWSPowerShellVersion [Enter]

AWS Tools for Windows PowerShell

Version 1.0.1.0

Copyright 2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.

Amazon Web Services SDK for .NET

Version 1.5.10.0

Copyright 2009-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.

This software includes third party software subject to the following copyrights

:

- Logging from log4net, Apache License

[http://logging.apache.org/log4net/license.html]

ーモジュールに含まれているコマンドレット一覧取得

PS C:\>get-command -module AWSPowerShell [Enter]

 

コマンドレットの数を数えると・・・

PS C:\> (get-command -module AWSPowerShell).count [Enter]

605

昨年12月の時点で578個だったので、さらに増えてますね。

それっぽいコマンドの探し方はCmdlet Discovery and Aliasesを参照すると雰囲気がわかります。

ちなみに先に紹介した「Show-Command」でも当然いけます、こんな感じです。

at4.pngat5.png

ー認証情報設定

Java版にはないAccessKeyとSecretKeyのキーペア認証がサポート、すばらしい!

コマンドレッド実行毎(a single AWS command)、セッション毎(all AWS commands in the session)、ユーザ毎(default credentials)と設定可能。ついでにデフォルトリージョンも設定できます。

ーデフォルト認証情報設定

PS C:\> Initialize-AWSDefaults -AccessKey 【アクセスキー】 -SecretKey 【シークレットキー】 -Region ap-northeast-1  [Enter]

【アクセスキー】と【シークレットキー】は、AWS Management Consoleを開いて、右上の自分の名前をクリックして出てくるプルダウンメニューの中から「Security Credentials」を選択した後の画面で、下記のフィールドで有効になっているデータを入力します。

key.pngのサムネイル画像

参考;

PS C:\>Show-Command [Enter]でInitialize-AWSDefaultsを選択して、こんな感じでAWS Management Consoleからコピペすると楽ですね。

at6.png

<実行結果例> 

Credentials retrieved from Strings 

Region retrieved from String 

Credentials and region will be saved in this session

ー登録済み認証情報確認

PS C:\> Get-AWSCredentials –ListStoredCredentials

<実行結果例>

AWS PS Default 

ー動作確認

自分のEC2インスタンスが取得できるか確認してみましょう。

PS C:\> (Get-EC2Instance)[0].RunningInstance

<実行結果例>

InstanceId            : xxxxxxxxxxxxxxx

ImageId               : ami-xxxxxxxxxx

InstanceState         : Amazon.EC2.Model.InstanceState

PrivateDnsName        :

PublicDnsName         :

StateTransitionReason : User initiated (2011-08-26 11:55:33 GMT)

KeyName               : xxxxxxxxxxxxxx

AmiLaunchIndex        : 0

ProductCodes          : {}

InstanceType          : m1.large

LaunchTime            : xxxxxxxxxxxxxxxxxxxxxxxxxx

Placement             : Amazon.EC2.Model.Placement

KernelId              :

RamdiskId             :

Platform              : windows

Monitoring            : Amazon.EC2.Model.Monitoring

SubnetId              :

VpcId                 :

PrivateIpAddress      :

IpAddress             :

SourceDestCheck       : False

以降省略・・・

以上で基本的な設定は完了です。

最後に、PowerShellの真骨頂であるパイプ処理です。

ーリージョン内のEBSボリュームすべてのスナップショットを取得する

まずは簡単な例ということで、get-ec2volumeコマンドレッドで取得できるEBSボリュームのスナップショットを取得します。

<実行結果例>

PS C:\> (get-ec2volume)|%{new-ec2snapshot $_.volumeId}

 

SnapshotId  : snap-xxxxxxxxx

VolumeId    : vol-xxxxxxxxx

Status      : pending

StartTime   : 2013-01-08T09:25:46.000Z

Progress    :

OwnerId     : xxxxxxxxxxx

VolumeSize  : 35

Description :

OwnerAlias  :

Tag         : {}

SnapshotId  : snap-xxxxxxxxx

VolumeId    : vol-xxxxxxxxxx

Status      : pending

StartTime   : 2013-01-08T09:25:47.000Z

Progress    :

OwnerId     : xxxxxxxxxxxx

VolumeSize  : 180

Description :

OwnerAlias  :

Tag         : {}

以降省略・・・

最後に一つだけですが、お年玉代わりに実践編を ;)

特定のEC2インスタンスにアタッチされているEBSボリュームのスナップショットを作成する

EC2ボリュームを列挙しそのうちAttachment.InstanceIDプロパティに”i-xxxxxx”がセットされているボリュームのスナップショットを生成します。

PS C:\> (Get-Ec2Volume)|?{$_.attachment[0].InstanceID -eq "i-xxxxxx"}|%{new-ec2snapshot $_.volumeId}

ということで、かなりいい感じですね。

最後までお読みいただきありがとうございました。

REALTECH Japan Blog Task Force

RECENT POST「クラウド」の最新記事


クラウド

オンプレミスからクラウドへ移行するメリット

クラウド

クラウド移行を考えてみる

クラウド

SAPをAWSに移行する方法とポイント

クラウド

Nutanix 拡張性:SAP on Nutanix

【QuickStart】 AWS tools for Windows PowerShell を使ってみよう
New Call-to-action

RECENT POST 最新記事

RANKING人気記事ランキング

ブログ購読のお申込み