AWS Tools for Windows
PowerShellをつかいこなそう
アマゾンデータサービスジャパン
ソリューションアーキテクト
渡邉源太

2013/12/21
自己紹介(1/2)
名前

• 渡邉源太

所属

• ソリューションアーキテクト
• アマゾンデータサービスジャパン株式会社

Twitter ID

• @gentaw0

好きなAWSサービス

• Amazon WorkSpaces

2
自己紹介(2/2)
)
自己紹介(
Microsoft MVP for Virtualization - Virtual Machine(
Jul 2007 - Jun 2010)
Publications
日経BP すべてわかる仮想化大全
• http://coin.nikkeibp.co.jp/coin/itpro/virtual/index.html

@IT連載 三大仮想化ソフトウェア機能比較
• http://www.atmarkit.co.jp/fwin2k/operation/indexpage/inde
x.html#vmcomp
AWSサービスメニュー
お客様のアプリケーション
ライブラリ & SDKs
Java, PHP, .NET,
Python, Ruby

IDEプラグイン
Eclipse
Visual Studio

メッセージ

Web管理画⾯
Management
Console

認証
AWS IAM

モニタリング
Amazon
CloudWatch

検索エンジン

Amazon SNS
Amazon SQS
Amazon SES

Amazon Cloud Search

コンテンツ配信

分散処理

Amazon CloudFront

コンピュータ処理
Amazon EC2
Auto Scale

Elastic MapReduce

ストレージ

Amazon S3
Amazon EBS
Amazon Glacier
AWS StorageGateway

デプロイと自動化
AWS Elastic
Beanstalk
AWS CloudFromation

ワークフロー管理
Amazon SWF

キャッシング

データベース

Amazon RDS
Amazon DynamoDB
Amazon SimpleDB

ネットワーク & ルーティング

AZ

AWS グローバルインフラ

Application
Service

Amazon Elasticache

Amazon VPC / Amazon Elastic Load Balancer / Amazon Route 53 /AWS Direct Connect

Region

Development &
Administration

Geographical Regions, Availability Zones, Points of Presence

Infrastructure
Service
AWSのグローバルインフラストラクチャ
GovCloud

US West

US West

US East

(US ITAR
Region)

(Northern
California)

(Oregon)

(Northern
Virginia)

South
America
(Sao Paulo)

EU
(Ireland)

Asia
Pacific

Asia
Pacific

(Singapore)

(Tokyo)

1. どのリージョンでも同じ使い勝手、同じやり
AWS Regions
方で自由に利⽤可能
AWS Edge Locations
2. リージョンを指定して、アプリケーション
やデータを配置する事が可能
リージョンとアベイラビリティゾーン(AZ)

1リージョン内にAZ(データセンター群)が複数拠点存在
AZはお互いに地理的・電源的・ネットワーク的に分離されている
AZ間は高速専⽤線で接続(リージョン間はインターネット経由)
Amazon Web Servicesとマイクロソフト
Windows on AWSがもたらすお客様のビジネスへのメ
リット
新しいハードウェアは不要
数分で利⽤開始

テスト環境をオンデマンドに

既存のMicrosoftライセンスを使⽤

迅速なパフォーマンス

AWS上で利⽤可能なWindows製品
ライセンスモビリ
ティ

Microsoft
Windows
Server

Microsoft SQL
Server

Microsoft
SharePoint
Amazon EC2 - Windowsインスタンス
Amazon EC2で実⾏可能なWindowsイメージ
以下のバージョンのWindowsが利⽤可能
•
•
•
•

Windows
Windows
Windows
Windows

Server
Server
Server
Server

2012
2008 R2
2008
2003 R2

Windowsのバージョンに応じたSQL Server導入済みイ
メージもご⽤意
• SQL Server Express Edition(無料)
• SQL Server Web Edition(時間課⾦)
• SQL Server Standard Edition(時間課⾦)
SQL Server AlwaysOn可用性グループ
on AWS
Windows Server Failover Cluster Managerおよび
SQL Server 2012 Availability GroupをAWS上で構成
可能に!
Availability Zoneをまたいだレプリケーションと高可⽤
性を実現
環境構築のためのCloudformationテンプレートも提供

Domain
Controller

SQL
Server DB

SQL
Server DB

Domain
Controller
Availability Zone

Availability Zone
AWS Cloud

9
Amazon RDS for SQL Server
標準機能
•
•
•
•
•

SQL Server Migration Assistant
Database Engine Tuning Advisor (SE, EE, Web)
SQL Server Agent
SSL接続
Transparent Data Encryption(TDE)

バージョンアップ

• 2008 R2から 2012へのメジャーバージョンアップ機能

詳細情報

• 機能情報

• http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQ
LServer.Concepts.General.html

• FAQ

• http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/RD
SFAQ.SQLServer.html
CloudFormationによる
SharePointサーバーファーム構築
CloudFormationテンプレートのサンプルを使⽤して6
ステップでSharePointサーバーファームを構築
• http://aws.amazon.com/articles/9982940049271604

テンプレートは環境にあわせて自由にカスタマイズ可能
コストは約$3250/月
AWSのサービス操作と言えば
AWS Management Console

AWSコマンドラインツール
マネージメントコンソールだけでなく、
APIからプログラマブルにアクセス
ec2-run-instances ami-b232d0db
--instance-count 3
--availability-zone
ap-northeast-1a
--instance-type m1.small

ec2-run-instances ami-b232d0db
--instance-count 3
--availability-zone
ap-northeast-1b
--instance-type m1.small

Tokyo リージョン
動作イメージ
起動、停止

Put,Get

REST
AWS SDK

SOAP
認証情報

ロギング

DB起動
バックアップ

情報取得
認証情報
AWSマネジメントコンソールのIAMタブで認証情報作成
• アクセスキー、シークレットキ-、(optional:MFA)
• シークレットキーは作成時のみ取得可能
操作の種類
例:EC2

インスタンス起動・・・RunInstances
リブート・・・ RebootInstances
IPアドレス付与・・AllocateAddress
などさまざまな操作が、プログラムから実⾏可能
http://docs.amazonwebservices.com/AWSEC2/latest/APIR
eference/Welcome.html
• SDKによってサポートする操作が異なる

•
•
•
•
•

APIコールに対する制限は、 Identity and Access
Management(IAM) のドキュメントを参照
AWS SDK
下記の言語/環境で提供中

Java

Python

JavaScript
in nodeJS

PHP

JavaScript
in the Browser

.NET

iOS

Ruby

Android
AWS SDK for .NET
AWS SDK for .NET

Amazon提供のAWS開発⽤.NET SDK
http://aws.amazon.com/sdkfornet/
環境:

• .NET Framework 3.5以降
• Visual Studio 2010以降

最新版2.0.4
C#およびVisual Basicをサポート
サンプル:EC2インスタンス起動
// EC2操作⽤のクライアント
var ec2Client = new AmazonEC2Client();
// ⽴ち上げたいインスタンス情報の作成
var runInstanceRequest = new RunInstancesRequest{
ImageId = "ami-xxx",
MaxCount = 1,
MinCount = 1,
KeyName = “YourKeyName",
SecurityGroups = { “yourSecurityGroup” },
InstanceType = InstanceType.M1Small
};
// インスタンスの起動
ec2Client.RunInstances(runInstanceRequest);
AWS SDK for .NETに含まれるもの
AWS Toolkit for Microsoft Visual Studio
Visual Studioプロジェクトテンプレート
AWS Tools for Windows PowerShell
AWS .NETライブラリ
C#コードサンプル
ドキュメント
AWS Tools for Windows PowerShell
AWSへの容易なコマンドラインアクセス
• 800以上のコマンドレット
• AWS SDK for .NETがベース

スクリプトによる管理の自動化に対応
EC2, S3をはじめ多くのサービスの管理が可能
• http://aws.amazon.com/jp/powershell/

21
インストール方法
以下のページの右上隅にある「AWS
Tools for Windows」ボタンをクリック
• http://aws.amazon.com/powershell/

ファイルを保存するかどうかをたずねる
メッセージがブラウザに表示されたら、
ローカルのディスクに保存
保存したインストーラを開いてインス
トールプロセスを開始
サポートしているサービス
初期設定と動作確認
Windows PowerShell for AWSの起動

• 「スタート」→「Amazon Web Services」→「Windows
PowerShell for AWS」

クレデンシャルとデフォルトリージョンの設定
• PS C:> Initialize-AWSDefaults

バージョンと利⽤可能なサービスの確認

• PS C:> Get-AWSPowerShellVersion -ListServices

24
リージョンの設定
リージョン一覧の確認

• PS C:> Get-AWSRegion

デフォルトリージョンの指定

• PS C:> Set-DefaultAWSRegion ap-northeast-1

デフォルトリージョンの確認

• PS C:> Get-DefaultAWSRegion

25
EC2:Key Pairの作成
Key Pairの作成

• PS C:> $myPSKeyPair = New-EC2KeyPair –KeyName
myPSKeyPair

Private Keyのファイルへの書き出し

• PS C:> $myPSKeyPair.KeyMaterial | Out-File -Encoding
ascii myPSKeyPair.pem

26
Key Pairとは?
Key Pairを作成すると、1組の公開鍵・秘密鍵が作成される
公開鍵はAWS側で保管。EC2起動時にインスタンスにコピー
秘密鍵はローカル側で保管。Windowsインスタンスの場合、パスワードの
復号化に必要
リージョンごとに独⽴
公開鍵は、AWSに
よってEC2起動時
に埋め込まれる
EC2インスタ
ンスは2つの
鍵を用いる

キーペアの作成
秘密鍵は、デスク
トップにダウン
ロードされる
EC2:Security Groupの作成
Security Groupの作成

• PS C:> New-EC2SecurityGroup –GroupName
myPSSecurityGroup –GroupDescription “AWS Security Group
from PowerShell”

Security Groupの確認

• PS C:> Get-EC2SecurityGroup -GroupNames
myPSSecurityGroup

ポート番号の設定

• PS C:> Grant-EC2SecurityGroupIngress –GroupId sg3997fc38 –IpProtocol tcp –FromPort 3389 –to
Port 3389 –CidrIp 0.0.0.0/0

28
Security Groupとは?
ポート25
(SMTP)

インスタンスへのトラフィック
を制限するSemi-statefulな
ファイアーウォール機能
デフォルトでは全トラフィック
が閉じており、外からアクセス
できない
必要な受信アクセスに対してア
クセスルールを定義する
•
•
•

プロトコル( TCP/UDP)
宛先ポート
アクセス元IP / Security Group

設定したルール以外の受信トラ
フィックは破棄される
ルールをひとまとめにしたテン
プレートを Security Groupと
呼ぶ

Security Group
ポート80
(HTTP)
ポート3389
(RDP)

EC2
インスタンス

EC2ファイアウォール
EC2:AMIの取得
AMI一覧の取得

• PS C:> Get-EC2Image –owner amazon, self

AMI名前一覧の取得

• PS C:> Get-EC2ImageByName

特定のAMI IDの取得

• PS C:> Get-EC2ImageByName –Names
WINDOWS_2012_BASE

30
Amazon Machine Image (AMI)
AMIはインスタンス作成に使⽤するイメージテンプレート
AWS公式AMIや、サードパーティもAMIを提供
•
•

https://aws.amazon.com/amis/
https://aws.amazon.com/marketplace/

選択したAMIから起動する
EC2インスタンスから、任意のタイミングで
カスタムAMIを作成できる
launch

Amazon
Machine
Image (AMI)

Amazon EC2インスタンス
EC2:インスタンスの起動と開始
EC2インスタンスの起動

• PS C:> New-EC2Instance –ImageID ami-b1492eb0 –
MinCount 1 –MaxCount 1 –KeyName myPSKeyPair –
SecurityGroup myPSSecurityGroup –InstanceType t1.micro

Windowsパスワードの取得

• PS C:> Get-EC2PasswordData –InstanceId i-7d5ccd78 –
PemFile myPSKeyPair.pem

EC2インスタンスの停止・開始

• PS C:> Stop-EC2Instance –InstanceIds i-7d5ccd78
• PS C:> Start-EC2Instance –InstanceIds i-7d5ccd78
32
起動時にパラメーターを渡す
起動時に16KB以内で任意のものを渡せる

ChefやPuppetなどを利⽤して、自⼰構成できるAMIに

参照 AWSマイスター CloudFormation資料
http://www.slideshare.net/kentamagawa/cloudformationaws5
EC2: User Dataの使用
User Dataにスクリプト(<script></script>)または
PowerShell(<powershell></powershell>)を埋め
込むことで、インスタンス起動時の処理を自動化
• <powershell>Add-WindowsFeature –Name WebServer</powershell>

User Dataはbase64でエンコードする必要がある
Windowsインスタンスが利⽤可能になるとすぐに実⾏
される
S3:S3の操作(1/2)
S3バケットの作成

• PS C:>New-S3Bucket –BucketName mypsbucket

オブジェクトのアップロード

• PS C:>Write-S3Object –BucketName mypsbucket –Key
sample.txt –File .sample.txt

フォルダーのアップロード

• PS C:>Write-S3Object –BucketName mypsbucket –
Folder .Scripts –KeyPrefix SampleScripts

35
S3:S3の操作(2/2)
オブジェクトの削除

• PS C:>Remove-S3Object –BucketName mypsbucket –
Key sample.txt

S3バケットの削除

• PS C:>Remove-S3Bucket –BucketName mypsbucket

36
S3:スクリプトによる操作
例:C:Logsにある1週間より前のファイルをS3のバケットにアッ
プロードしてローカルから削除するスクリプト
foreach ($i in Get-ChildItem C:Logs)
{
if ($i.CreationTime -lt ($(Get-Date).AddDays(-7)))
{
if ($i.Length -gt 0)
{
Write-S3Object -BucketName mylogbucket -Key
Logs/$i -File $i.FullName
}
Remove-Item $i.FullName
}
}
37
DynamoDB:テーブルの作成(1/2)
テーブルスキーマの作成

• PS C:> New-DDBTableSchema

キースキーマの追加

• PS C:> Add-DDBKeySchema -KeyName "ForumName" -KeyDataType
"S"
• PS C:> Add-DDBKeySchema -KeyName "Subject" -KeyType "range" KeyDataType "S“

インデックススキーマの追加

• PS C:> Add-DDBIndexSchema -IndexName "LastPostIndex" `
-RangeKeyName "LastPostDateTime" `
-RangeKeyDataType "S" `
-ProjectionType "keys_only"

テーブルの作成

• New-DDBTable "Threads" -ReadCapacity 10 -WriteCapacity 5

38
DynamoDB:テーブルの作成(2/2)
スキーマを指定したテーブルの作成
PS C:> New-DDBTableSchema `
| Add-DDBKeySchema -KeyName "ForumName" KeyDataType "S" `
| Add-DDBKeySchema -KeyName "Subject" -KeyType
"range" -KeyDataType "S" `
| Add-DDBIndexSchema -IndexName "LastPostIndex" `
-RangeKeyName "LastPostDateTime" `
-RangeKeyDataType "S" `
-ProjectionType "keys_only" `
| New-DDBTable "Threads" -ReadCapacity 10 WriteCapacity 5
39
まとめ
Amazon Web ServicesはWindowsを利⽤するためにも
最適なクラウドサービス
AWS Tools for Windows PowerShellにより、
PowerShellからAWSのさまざまなサービスを管理する
ことが可能に
スクリプティングで管理の自動化も自由自在に!

40
参考情報
Windows PowerShell

• http://technet.microsoft.com/ja-jp/library/bb978526.aspx

Windows PowerShellでのスクリプティング
• http://technet.microsoft.com/jajp/scriptcenter/powershell.aspx

AWS Tools for Windows PowerShell

• http://aws.amazon.com/jp/powershell/

AWS Tools for Windows PowerShell User Guide

• http://docs.aws.amazon.com/powershell/latest/userguide
/pstools-welcome.html

41

Aws tools for power shellをつかいこなそう