windows2020のブログ

AWSはじめました

AWS Tools for Windows PowerShell でインスタンス作成

今日はコマンドラインでのインスタンス作成をしてみます。

大きな流れは以下になります。

  1. AWS Tools for Windows PowerShell の初期設定
  2. キーペアの作成
  3. セキュリティグループの作成
  4. 作成するインスタンスのOSイメージを検索
  5. インスタンスの作成

参考:http://docs.aws.amazon.com/powershell/latest/userguide/pstools-ec2-keypairs.html

AWS Tools for Windows PowerShell の初期設定

まずは前回作成したプロファイルをデフォルトで使用されるようセットします。

その後、デフォルトで使用されるリージョンをセットします。

us-west-2はオレゴンを指します。

Initialize-AWSDefaults -ProfileName psprofile -Region us-west-2
Set-DefaultAWSRegion -Region us-west-2

キーペアの作成

次にキーペアの作成すが、1行目でキーペアを作成し、2行目でファイルとして出力します。ファイルで出力されたものをインスタンスへのログイン時に使用するので、出力したファイルパスは覚えておきましょう。

$myPSKeyPair = New-EC2KeyPair -KeyName myPSKeyPair
$myPSKeyPair.KeyMaterial | Out-File -Encoding ascii myPSKeyPair.pem

セキュリティグループの作成

セキュリティグループを作成することで接続元IPや接続先ポート番号を制限することができます。以下の例は特定のIPアドレスからリモートデスクトップでの接続だけを許可した設定です。

New-EC2SecurityGroup -GroupName myPSSecurityGroup -GroupDescription "EC2-Classic from PowerShell"

#どのIPからどのポートでの通信を許可するか決める。
$cidrBlocks = New-Object 'System.Collections.Generic.List[string]'
$cidrBlocks.add("接続元IPアドレス")
$ipPermissions = New-Object Amazon.EC2.Model.IpPermission
$ipPermissions.IpProtocol = "tcp"
$ipPermissions.FromPort = 3389
$ipPermissions.ToPort = 3389
$ipPermissions.IpRanges = $cidrBlocks
Grant-EC2SecurityGroupIngress -GroupName myPSSecurityGroup -IpPermissions $ipPermissions

作成するインスタンスのOSイメージを検索

awsではかなり多くのOSイメージが登録されていますので、その中から使用したいイメージを探す必要があります。以下の例は1行目でオーナーがamazonのものを抽出しておき、2行目でさらに抽出条件を追加して、検索する例です。

#起動するOSイメージを探す
$amilist = Get-EC2Image -Owner amazon, self
$amilist | select -first 100 | where{$_.ImageOwnerAlias -eq "amazon" -and $_.Platform -eq "Windows" -and $_.name -like "*2012*Base*"} |select Name,ImageId

今回は以下のイメージを使用することにしました。

Windows_Server-2012-RTM-Japanese-64Bit-Base-2017.04.12             ami-02c65962

あとで気づきましたが2012R2ではなく、R2なし版だったので、スタートボタンがありませんでした。

インスタンスの作成

最後に以下のコマンドでインスタンスを作成します。

-ImageIdでは先ほど検索したOSイメージのImageIdを入力し、ほかにキーペア、セキュリティグループも指定します。

New-EC2Instance -ImageId ami-02c65962 -MinCount 1 -MaxCount 1 -KeyName myPSKeyPair -SecurityGroups myPSSecurityGroup -InstanceType t2.micro

上記実行してしばらくするとインスタンスの作成は完了です。作成が完了するしたかどうかはAWSのコンソール画面で確認しました。この辺もコマンドで確認できるようにしたいです。

作成が完了した後は、リモートデスクトップでの接続も無事成功しました。