新年あけましておめでとうございます、今年もよろしくお願いします。
昨年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]
Copyright (C) 2012 Microsoft Corporation. All rights reserved.
PS C:\>
PowerShellは従来初心者が取っつきにくいということがしばしばいわれていましたが、PowerShell3.0 から「GUI のあるコマンド ライン インターフェイス」が機能として搭載されて、これからPowerShellを触るという初心者にずいぶんやさしくなりました。
試しに "Show-Command "というコマンドレットを実行します。
試しに 「Get-Item」 を選んで引数として、Pathのフィールドに"C:\" をいれて実行ボタンを押下します。
すると、下記のようにPSプロンプト上に完全なコマンドにした形で実行し、その結果を確認することができます。
ディレクトリ:
Mode LastWriteTime Length Name
---- ------------- ------ ----
d--hs 2013/01/08 15:20 C:\
なお、をクリックするとヘルプが参照ができます、これ便利!
ただ、そのままだと一部のヘルプの内容が不足していて、全部が表示されないようで、一部が下記のようになります。
注釈
Get-Help を実行しましたが、このコンピューターにこのコマンドレットのヘルプ ファイルは見つかりませんでした。ヘルプ の一部だけが表示されています。
-- このコマンドレットを含むモジュールのヘルプ ファイルをダウンロードしてインストールするには、Update-Help を使 用してください。
-- このコマンドレットのヘルプ トピックをオンラインで確認するには、「Get-Help Get-Item -Online」と入力するか、
http://go.microsoft.com/fwlink/?LinkID=113319 を参照してください。
試しに下記を実行すると、ブラウザが開いてヘルプの全容を閲覧することが可能になります。
参考までにGet-Item のオンラインヘルプはこんな感じです。
下記のような実行サンプルがたくさん含まれており、非常に優れた学習ツールではないかと思います。
PowerShellの説明が長くなってしまいました。
過去に触ったときの取っつきにくいイメージが強い方が多いのではと思い、最新のPowerShellの機能を先にご紹介した次第です。
これ以外にもいろいろとあるのですが、以降はGoogle先生に聞いてくださいね。
(下記LINKは参考までに、MicorsoftさんのTechNetのサイトです。)
2.AWS Tools for Windows PowerShellの導入
ーhttp://aws.amazon.com/jp/powershell/#からキットをダウンロードします。
くくりとしてはあくまで.NET SDKですのでインストーラのファイル名は「AWSToolsAndSDKForNet.msi」です。
以前のインストーラ画面
今回のリリースからコンポーネントに”AWS Tools for Windows PowerShell”が含まれてます。
ー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
詳しい解説は@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」でも当然いけます、こんな感じです。
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]
参考;
PS C:\>Show-Command [Enter]でInitialize-AWSDefaultsを選択して、こんな感じでAWS Management Consoleからコピペすると楽ですね。
<実行結果例>
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
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の真骨頂であるパイプ処理です。
まずは簡単な例ということで、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}
ということで、かなりいい感じですね。
最後までお読みいただきありがとうございました。
- カテゴリ: クラウド
この記事に関するサービスのご紹介
導入/移行(プロフェッショナル)サービス
プロフェッショナルサービスでは主にSAPシステムの導入や移行、それに伴うテクニカルな支援を行います。ERPやS/4 HANA、SolManといった様々なSAP製品の新規導入、クラウドを含む様々なプラットフォームへのSAPシステムの最適な移行、保守切れに伴うバージョンアップ・パッチ適用等の作業だけでなく、パラメータ設計、パフォーマンスチューニング、導入・移行計画支援等についても対応いたします。
詳細はこちら