KEMBAR78
AWS Tools for Windows PowerShell | PDF
AWS Tools for Windows PowerShell
アップデート
2016/09/27
アマゾン  ウェブ  サービス  ジャパン株式会社
ソリューションアーキテクト  渡邉源太
2
アジェンダ
•  AWS  Tools  for  Windows  PowerShellの基本
•  AWS  Tools  for  Windows  PowerShellアップ
デート
•  Amazon  EC2  Run  Command
AWS  Tools  for  Windows  PowerShell  
の基本
4
Infrastructure  as  Code
•  コードによるインフラストラクチャーの記述
•  コードを書くことでインフラストラクチャーの
プロビジョニングを⾃自動化できる
5
AWSでのInfrastructure  as  Code
Java
 Python (boto)
 PHP
 .NET
 Ruby
 Node.js
AWS Tools for
Windows
PowerShell
AWS CLI
JavaScript
CloudFormation
 OpsWorks
 Elastic
Beanstalk
6
⾃自動化のためのコマンドラインツール
AWS  Command  Line  Interface  (CLI)
•  “aws”という名前の単⼀一コマンドでAWSサービスを操作可能
•  プラットフォームや開発⾔言語などが限定されない
  Windows,  Linux,  Mac,  Unixなど
•  S3⽤用にはsyncなどの便便利利な機能あり
AWS  Tools  for  Windows  PowerShell
•  “AWSPowerShell”モジュール内のコマンドレットから、ほとん
どのAWSサービスを操作可能
•  PowerShellの強⼒力力なシェル機能が利利⽤用できる
7
Windows  PowerShellの基本
Microsoft社が開発したCLIシェル/スクリプト⾔言語
•  コマンドレット(cmdlet)と呼ばれる単位でプログラムを管理理
•  オブジェクト指向⾔言語
•  .NET  Frameworkクラス・ライブラリを利利⽤用可能
Get-‐‑‒Command  -‐‑‒Module  AWSPowerShell  
パラメーター
cmdlet名(”動詞”-‐‑‒”名詞”の形式が⼀一般的)
⽂文法
8
AWS  PowerShell  コマンドレット
基本的な使い⽅方はAWS  CLIと同様です。
コマンドレット名は  [動詞]-‐‑‒[サービス名][名詞]になっています。
Get-‐‑‒EC2AvailabilityZone  -‐‑‒Region  ap-‐‑‒northeast-‐‑‒1
aws  ec2  describe-‐‑‒availability-‐‑‒zones  -‐‑‒-‐‑‒region  ap-‐‑‒northeast-‐‑‒1
代表的なアクション動詞のAWS  APIとの対応は以下のとおりです。
読み取り 新規作成 上書き 削除
API describe,  list create put delete
PowerShell Get New Write Remove
Cmdlet  Reference:  http://docs.aws.amazon.com/powershell/latest/reference/Index.html
9
コマンドレットの検索索
Get-‐‑‒Commandコマンドレットは、インストールされたモジュール内のコマ
ンドレットを検索索することができます。
PS  C:>  Get-‐‑‒Command  -‐‑‒Module  AWSPowerShell  -‐‑‒Name  “*EC2*”
CommandType          Name                                                                                                                    Definition
-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                        -‐‑‒-‐‑‒-‐‑‒-‐‑‒                                                                                                                            -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                              
Cmdlet                                Add-‐‑‒EC2ClassicLinkVpc                                                                                  ...  
Cmdlet                                Add-‐‑‒EC2InternetGateway                                                                            ...  
Cmdlet                                Add-‐‑‒EC2NetworkInterface                                                                          ...    
"AWSPowerShell"モジュールのコマンドレットの中から、コマンドレット名
に”EC2”という⽂文字列列が含まれるものを取得
10
コマンドレットのHelp
Get-‐‑‒Helpコマンドレットは、コマンドレットのHelpを表⽰示できます。
PS  C:>  Get-‐‑‒Help  Get-‐‑‒Command
NAME
        Get-‐‑‒Command
        
SYNOPSIS
        コマンドレットおよびその他の  Windows  PowerShell  コマンド要素に関する基本情報を取得します。
        
SYNTAX
        Get-‐‑‒Command  [[-‐‑‒Name]  <string[]>]  [-‐‑‒CommandType  {Alias  |  Function  |  Filter  |  Cmdlet  |  
ExternalScript  |  Application  |  Script  |  All}]  [[-‐‑‒ArgumentList]  <Object[]>]  [-‐‑‒Module  <string[]>]  [-‐‑‒
Syntax]  [-‐‑‒TotalCount  <int>]  [<CommonParameters>]
        
"Get-‐‑‒Command"コマンドレットのHelp
11
出⼒力力オブジェクト
コマンドレット実⾏行行結果は、.NET  Frameworkオブジェクトの配列列として
出⼒力力されます。
PS  C:>  Get-‐‑‒EC2AvailabilityZone  |  ft  *
Region ZoneState Message Messages RegionName StateZoneName        
      
-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒              
ap-‐‑‒northeast-‐‑‒1 available {} {} ap-‐‑‒northeast-‐‑‒1 available ap-‐‑‒northeast-‐‑‒1a
ap-‐‑‒northeast-‐‑‒1 available {} {} ap-‐‑‒northeast-‐‑‒1 available ap-‐‑‒northeast-‐‑‒1c
Amazon.EC2.Model.AvailabilityZoneクラスの
2つのオブジェクトの配列列として出⼒力力
プロパティ名
12
パイプライン
実⾏行行結果をパイプライン”|”で次のコマンドレットに渡すことができます。
PS  C:>  Get-‐‑‒Command  -‐‑‒Module  AWSPowerShell  |  `̀
>>  Where-‐‑‒Object  {$_̲.Name  -‐‑‒eq  "Get-‐‑‒EC2Instance"}
CommandType          Name                                                                                                                    Definition
-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                        -‐‑‒-‐‑‒-‐‑‒-‐‑‒                                                                                                                            -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒
Cmdlet                                Get-‐‑‒EC2Instance                                                                                      ...            
"AWSPowerShell"モジュールのコマンドレットを全て取得し、その中から
コマンドレット名が“Get-‐‑‒EC2Instance”のものを絞り込んで表⽰示
※ PowerShellではスクリプト中の改⾏行行にはバッククォート"`̀"を使います。
13
オブジェクト構造の確認
Get-‐‑‒Memberコマンドレットは、クラスで定義されたプロパティとメソッドを表⽰示します。
PS  C:>  (Get-‐‑‒EC2Instance).Instances  |  Get-‐‑‒Member  -‐‑‒MemberType  Property  |  Select  Name,Definition
  
Name Definition                                                                                                                                                                                                  
-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                                                                                                                                                                                                  
AmiLaunchIndex   int  AmiLaunchIndex  {get;set;}                                                                                    
Architecture Amazon.EC2.ArchitectureValues  Architecture  {get;set;}                                                              
ClientToken string  ClientToken  {get;set;}  
EbsOptimized bool  EbsOptimized  {get;set;}  
Hypervisor Amazon.EC2.HypervisorType  Hypervisor  {get;set;}  
ImageId string  ImageId  {get;set;}                  
InstanceId string  InstanceId  {get;set;}
...
EC2インスタンスオブジェクトのプロパティを表⽰示
14
フォーマット指定
Format-‐‑‒List(fl)、Format-‐‑‒Table(ft)などのコマンドレットを利利⽤用して、表
⽰示形式を指定することができます。
PS  C:>  $EC2Instances  =    (Get-‐‑‒EC2Instance).Instances  |select  InstanceType,  LaunchTime
  
PS  C:>  $EC2Instances  |  fl
InstanceType  :  m3.large
LaunchTime      :  2015/07/09  16:34:01
InstanceType  :  t2.micro
LaunchTime      :  2015/04/08  16:47:30
....
PS  C:>  $EC2Instances  |  ft
InstanceType LaunchTime                  
-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                  
m3.large 2015/07/09  16:34:01
t2.micro 2015/04/08  16:47:30
....
15
パイプラインの使い⽅方
パイプラインを利利⽤用して、AWSリソースの取得/操作をワンラインで操作できます。
http://docs.aws.amazon.com/ja_̲jp/powershell/latest/userguide/pstools-‐‑‒discovery-‐‑‒aliases.html
PC  C:>  Get-‐‑‒EC2Instance  |  Stop-‐‑‒EC2Instance  
取得したEC2インスタンスを全て停⽌止
PC  C:>    Get-‐‑‒AWSRegion  |  %  {  Get-‐‑‒EC2Image  -‐‑‒Owner  self  -‐‑‒Region  $_̲  }  
取得したAWSリージョン内の全AMIを取得
EC2インスタンスオブジェクトの配列列をStop-‐‑‒EC2Instanceの第⼀一引数(-‐‑‒Instance)に渡して実⾏行行
リージョンオブジェクトの配列列をGet-‐‑‒EC2Imageの-‐‑‒Region引数に渡して実⾏行行
※ PowerShellコマンドレットの引数にはポジションが設定されており、明⽰示的に引数を指定しない
場合、先⾏行行処理理の結果がパイプラインの後続コマンドレットの第⼀一引数の値として評価されます。
16
[options]  :  -‐‑‒Filter
AWSPowerShellコマンドレットの出⼒力力を、Filterクラスのオブジェク
トを⽤用いてフィルタリングする仕組みです。
PC  C:>    $tag  =  New-‐‑‒Object  Amazon.EC2.Model.Filter  -‐‑‒Property  @{Name="tag:Name";Values="TEST"}
PC  C:>    Get-‐‑‒EC2Instance  -‐‑‒Filter  $tag
Nameタグの値が”TEST”のEC2インスタンスを取得
PC  C:>    $SGNames  =  New-‐‑‒Object  Amazon.EC2.Model.Filter  -‐‑‒Property  `̀
>>  @{Name="group-‐‑‒name";Values=@("SG1","SG2")}
PC  C:>    Get-‐‑‒EC2SecurityGroup  -‐‑‒Filter  $SGNames
グループ名が”SG1”,"SG2"のセキュリティグループを取得
フィルターオブジェクトを作成
-‐‑‒Filterでフィルターオブジェクトを指定
17
Get-‐‑‒AWSPublicIpAddressRange
AWSが利利⽤用するパブリックIPアドレスレンジを取得するコマンドレット
です。AWS  CLIなどでは、ip-‐‑‒ranges.jsonをダウンロードする必要があ
りますが、AWS  PowerShellではコマンドレットが⽤用意されています。
PS  C:>  Get-‐‑‒AWSPublicIpAddressRange
IpPrefix Region Service
-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒
50.19.0.0/16 us-‐‑‒east-‐‑‒1 AMAZON
...
50.19.0.0/16 us-‐‑‒east-‐‑‒1 EC2
...
205.251.192.0/21GLOBAL ROUTE53
54.232.40.64/26 sa-‐‑‒east-‐‑‒1 ROUTE53_̲HEALTHCHECKS
...
204.246.176.0/20GLOBAL CLOUDFRONT
...
http://docs.aws.amazon.com/powershell/latest/reference/Index.html
http://docs.aws.amazon.com/ja_̲jp/general/latest/gr/aws-‐‑‒ip-‐‑‒ranges.html
18
(参考)Pro  PowerShell  for  Amazon  Web  
Services:  DevOps  for  the  AWS  Cloud
•  Create,  manage,  and  terminate  Windows  
servers  in  the  cloud
•  Manage  storage  options  including  backup  and  
recovery
•  Configure  a  virtual  network  including  subnets  
and  route  tables
•  Secure  your  servers  using  security  groups  and  
access  control  lists
•  Use  Auto  Scaling  to  respond  to  changing  
conditions
•  Deploy  SQL  Server  using  Relational  Database  
Service
•  Use  Simple  Storage  Service  (S3)  to  reliably  store  
and  archive  data
•  Control  access  to  resources  using  Identity  and  
Access  Management  (IAM)
https://www.amazon.co.jp/Pro-PowerShell-Amazon-Web-Services-ebook/dp/B00HG2CQ3O/
AWS  Tools  for  Windows  PowerShell
アップデート
20
PowerShell  Galleryサポート
https://blogs.aws.amazon.com/net/post/Tx3E4TIMWDG4604/Announcing-‐‑‒Support-‐‑‒for-‐‑‒the-‐‑‒PowerShell-‐‑‒Gallery
https://www.powershellgallery.com/packages/AWSPowerShell/
PowerShell  Gallery
–  Microsoftが提供するPowerShellの統合リポジトリ(2015年年7⽉月時点ではプレビュー中)
–  リポジトリから最新モジュールのインストール/アップデートが可能
–  利利⽤用開始前にWindows  Management  Framework  v5  previewのインストールが必要
•  AWS  PowerShellのインストール
•  AWS  PowerShellのアップデート
PS  C:>  Install-‐‑‒Module  -‐‑‒Name  AWSPowerShell  
PS  C:>  Update-‐‑‒Module  -‐‑‒Name  AWSPowerShell  
2015年年5⽉月
※ アップデートは、  PowerShell  Galleryを利利⽤用してインストールしたモジュールのみ実施可能です。
AWS  PowerShellが既にインストールされている場合、⼀一旦アンインストールしてから再インストー
ルする必要があります。
21
Get-‐‑‒AWSCmdletName  
Get-‐‑‒AWSCmdletNameで、-‐‑‒Serviceパラメータによるコマンドの検索索が可能に
PS  C:>  Get-‐‑‒AWSCmdletName  -‐‑‒Service  compute
CmdletName                                            ServiceOperation                          ServiceName
-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                                            -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                          -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒
Add-‐‑‒EC2ClassicLinkVpc                      AttachClassicLinkVpc                  Amazon  Elastic  Compute  Cloud
PS  C:>  Get-‐‑‒AWSCmdletName  -‐‑‒Service  EC2
CmdletName                                            ServiceOperation                      ServiceName
-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                                            -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                      -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒
Add-‐‑‒EC2ClassicLinkVpc                      AttachClassicLinkVpc              Amazon  Elastic  Compute  Cloud
コンピュートサービスのコマンドレットを取得
“EC2”に属するコマンドレット名を取得
2015年年10⽉月
https://blogs.aws.amazon.com/net/post/Tx14OU1G9A1W5PY/Listing-Cmdlets-by-Service
22
AWS  Tools  for  Windows  PowerShellユーザーの
フェデレーションをサポート
•  Set-‐‑‒AWSSamlEndpointとSet-‐‑‒AWSSamlRoleProfileを使
⽤用してADFSによるフェデレーションを設定可能
https://blogs.aws.amazon.com/net/post/Tx2PI5SQTDMAHQR/New-Support-for-Federated-Users-in-the-AWS-
Tools-for-Windows-PowerShell
2015年年12⽉月
#  first  configure  the  endpoint  that  one  or  more  role  profiles  will  reference  by  name
$endpoint  =  "https://adfs.example.com/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices"
Set-‐‑‒AWSSamlEndpoint  -‐‑‒Endpoint  $endpoint  -‐‑‒StoreAs  "endpointname"
#  if  the  principal  and  role  ARN  data  of  a  role  is  known,  it  can  be  specified  directly
$params  =  @{
  "PrincipalARN"="arn:aws:iam::012345678912:saml-‐‑‒provider/ADFS"
  "RoleARN"="arn:aws:iam::012345678912:role/ADFS-‐‑‒Dev"
}
Set-‐‑‒AWSSamlRoleProfile  -‐‑‒EndpointName  "endpointname"  -‐‑‒StoreAs  "ADFS-‐‑‒Dev"  @params
23
AWS  Tools  for  PowerShell  Core  Edition
•  Windows/Linux/Mac  OS  Xに対応した
PowerShell  Core  Edition⽤用のAWS  Toolsを提
供
–  ほぼすべてのCmdletをサポート
–  PowerShell  Garalleyからインストール可能
2016年年8⽉月
https://blogs.aws.amazon.com/net/post/TxTUNCCDVSG05F/Introducing-AWS-Tools-for-PowerShell-Core-
Edition
Install-‐‑‒Package  -‐‑‒Name  AWSPowerShell.NetCore  -‐‑‒Source  https://www.powershellgallery.com/
api/v2/  -‐‑‒ProviderName  NuGet  -‐‑‒ExcludeVersion  -‐‑‒Destination  destfolder
Import-‐‑‒Module  AWSPowerShell.NetCore
※事前に.NET CoreとPowerShell Coreのインストールが必要
Amazon  EC2  Run  Command
25
Amazon  EC2におけるスクリプト実⾏行行の⾃自動化
•  User  Dataの使⽤用
•  Amazon  EC2  Run  Command
26
User  Dataの使⽤用
•  User  DataにコマンドまたはPowerShellスクリプトを埋
め込むことで、インスタンス起動時の処理理を⾃自動化
–  <powershell>Read-‐‑‒S3Object  -‐‑‒BucketName  myS3Bucket  -‐‑‒Key  
myFolder/myFile.zip  -‐‑‒File  c:destinationFile.zip</powershell>
•  User  DataはEC2Configサービスが起動されるとすぐに
実⾏行行される
•  EC2Configバージョン2.1.10からユーザーデータを実⾏行行
後にプラグインを有効化
–  <persist>true</persist>
27
Amazon  EC2  Run  Command  
•  実⾏行行中のEC2インスタン
スをリモート操作
–  OSやアプリケーションの設定変更更
–  ログファイルやシステムリソースの表
⽰示・収集
•  対象OS
–  Amazon  Linux,  Ubuntu  Server,  
RHEL,  CentOS,  etc.
※SSM  Agentの設定が必要
–  Windows  Server  2003-‐‑‒2012および
R2
28
EC2  Run  Commandの前提条件
•  サポートされるオペレーティングシステム
–  Windows  Server  2003/2003  R2/2008/2008  R2/2012/2012  R2
•  エージェント
–  EC2Configの最新バージョン
•  IAMロールとアクセス許可
–  コマンドを処理理するEC2インスタンスのIAMロール
–  コマンドを実⾏行行するユーザーのロール
•  インターネットアクセス
–  EC2インスタンスからアウトバウンドのインターネットが可能であること
•  Amazon  S3バケット(オプション)
–  コマンド出⼒力力をS3バケットに保存可能
29
EC2  Run  Command⽤用のIAMロールとユーザーの設定
•  SSM管理理ポリシーの使⽤用
–  AmazonEC2RoleforSSM  (インスタンス信頼ポリシー)
–  AmazonSSMFullAccess  (ユーザー信頼ポリシー)
–  AmazonSSMReadOnlyAccess  (ユーザー信頼ポリシー)
•  EC2インスタンスロールおよびユーザーを作成
•  EC2インスタンスロールを使⽤用して新しいイン
スタンスを作成
30
AWS  Directory  Serviceドメインへの⾃自動参加
•  インスタンスの起動時にドメインを指定して⾃自動的に参
加させることが可能
1. [Enable]に設定	
2. Directory Serviceドメインを指定	
3. SSMへのアクセスを有効にした
ロールを指定
31
EC2  Run  Commandを使⽤用したコマンドの実⾏行行
•  PowerShell  コマンドまたはスクリプトの実⾏行行
•  アプリケーションのインストール
•  PowerShell  モジュールのインストール
•  EC2  インスタンスのドメインへの結合
•  EC2  インスタンスから  Amazon  CloudWatch  へのログのアップ
ロード
•  Windows  Updates  の有効化または無効化
•  EC2Config  サービスの更更新
•  Windows  ⽤用の  Amazon  EC2  インスタンスのインベントリを作成
する
•  EC2  Windows  インスタンスの更更新プログラムの管理理
32
EC2  コンソールを使⽤用したEC2  Run  Commandの実⾏行行
•  Amazon  EC2コンソールで「コマンド」から
「コマンドの実⾏行行」を選択して実⾏行行
1.  [AWS-‐‑‒RunPowerShellScript]を選択
2.  対象となるインスタンスを指定
3.  実⾏行行するスクリプトを⼊入⼒力力
Windows  PowerShellによるEC2  Run  Commandの
実⾏行行
#使⽤用可能なパラメータを表⽰示
Get-SSMDocumentDescription -Name "AWS-RunPowerShellScript“
#パラメータの詳細情報を表⽰示
Get-SSMDocumentDescription -Name "AWS-RunPowerShellScript" | select -ExpandProperty Parameters
#AWS-RunPowerShellScript ドキュメントを使⽤用してコマンドを送信
$runPSCommand=Send-SSMCommand -InstanceId @('Instance-ID', 'Instance-ID') -DocumentName AWS-
RunPowerShellScript -Comment 'Demo AWS-RunPowerShellScript with two instances' -Parameter
@{'commands'=@('dir C:Users', 'dir C:')}
34
まとめ
•  AWS  Tools  for  Windows  PowerShell
–  PowerShellからAWSのサービスを管理理するためのモジュール
–  PowerShell標準コマンドレットを活⽤用してAWSの管理理を効率率率化可
能
–  AWS  Tools  for  PowerShell  CoreによりLinux/Mac  OS  X環境にも
対応
•  Amazon  EC2  Run  Command
–  任意のコマンドをリモートのEC2インスタンスに対して実⾏行行
–  AWS  Tools  for  Windows  PowerShellと組み合わせることにより
さまざまなタスクの⾃自動化が可能に
35
ご参加ありがとうございました。

AWS Tools for Windows PowerShell

  • 1.
    AWS Tools forWindows PowerShell アップデート 2016/09/27 アマゾン  ウェブ  サービス  ジャパン株式会社 ソリューションアーキテクト  渡邉源太
  • 2.
    2 アジェンダ •  AWS  Tools for  Windows  PowerShellの基本 •  AWS  Tools  for  Windows  PowerShellアップ デート •  Amazon  EC2  Run  Command
  • 3.
    AWS  Tools  for Windows  PowerShell   の基本
  • 4.
    4 Infrastructure  as  Code • コードによるインフラストラクチャーの記述 •  コードを書くことでインフラストラクチャーの プロビジョニングを⾃自動化できる
  • 5.
    5 AWSでのInfrastructure  as  Code Java Python (boto) PHP .NET Ruby Node.js AWS Tools for Windows PowerShell AWS CLI JavaScript CloudFormation OpsWorks Elastic Beanstalk
  • 6.
    6 ⾃自動化のためのコマンドラインツール AWS  Command  Line Interface  (CLI) •  “aws”という名前の単⼀一コマンドでAWSサービスを操作可能 •  プラットフォームや開発⾔言語などが限定されない   Windows,  Linux,  Mac,  Unixなど •  S3⽤用にはsyncなどの便便利利な機能あり AWS  Tools  for  Windows  PowerShell •  “AWSPowerShell”モジュール内のコマンドレットから、ほとん どのAWSサービスを操作可能 •  PowerShellの強⼒力力なシェル機能が利利⽤用できる
  • 7.
    7 Windows  PowerShellの基本 Microsoft社が開発したCLIシェル/スクリプト⾔言語 •  コマンドレット(cmdlet)と呼ばれる単位でプログラムを管理理 • オブジェクト指向⾔言語 •  .NET  Frameworkクラス・ライブラリを利利⽤用可能 Get-‐‑‒Command  -‐‑‒Module  AWSPowerShell   パラメーター cmdlet名(”動詞”-‐‑‒”名詞”の形式が⼀一般的) ⽂文法
  • 8.
    8 AWS  PowerShell  コマンドレット 基本的な使い⽅方はAWS CLIと同様です。 コマンドレット名は  [動詞]-‐‑‒[サービス名][名詞]になっています。 Get-‐‑‒EC2AvailabilityZone  -‐‑‒Region  ap-‐‑‒northeast-‐‑‒1 aws  ec2  describe-‐‑‒availability-‐‑‒zones  -‐‑‒-‐‑‒region  ap-‐‑‒northeast-‐‑‒1 代表的なアクション動詞のAWS  APIとの対応は以下のとおりです。 読み取り 新規作成 上書き 削除 API describe,  list create put delete PowerShell Get New Write Remove Cmdlet  Reference:  http://docs.aws.amazon.com/powershell/latest/reference/Index.html
  • 9.
    9 コマンドレットの検索索 Get-‐‑‒Commandコマンドレットは、インストールされたモジュール内のコマ ンドレットを検索索することができます。 PS  C:>  Get-‐‑‒Command -‐‑‒Module  AWSPowerShell  -‐‑‒Name  “*EC2*” CommandType          Name                                                                                                                    Definition -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                        -‐‑‒-‐‑‒-‐‑‒-‐‑‒                                                                                                                            -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                               Cmdlet                                Add-‐‑‒EC2ClassicLinkVpc                                                                                  ...   Cmdlet                                Add-‐‑‒EC2InternetGateway                                                                            ...   Cmdlet                                Add-‐‑‒EC2NetworkInterface                                                                          ...     "AWSPowerShell"モジュールのコマンドレットの中から、コマンドレット名 に”EC2”という⽂文字列列が含まれるものを取得
  • 10.
    10 コマンドレットのHelp Get-‐‑‒Helpコマンドレットは、コマンドレットのHelpを表⽰示できます。 PS  C:>  Get-‐‑‒Help Get-‐‑‒Command NAME        Get-‐‑‒Command         SYNOPSIS        コマンドレットおよびその他の  Windows  PowerShell  コマンド要素に関する基本情報を取得します。         SYNTAX        Get-‐‑‒Command  [[-‐‑‒Name]  <string[]>]  [-‐‑‒CommandType  {Alias  |  Function  |  Filter  |  Cmdlet  |   ExternalScript  |  Application  |  Script  |  All}]  [[-‐‑‒ArgumentList]  <Object[]>]  [-‐‑‒Module  <string[]>]  [-‐‑‒ Syntax]  [-‐‑‒TotalCount  <int>]  [<CommonParameters>]         "Get-‐‑‒Command"コマンドレットのHelp
  • 11.
    11 出⼒力力オブジェクト コマンドレット実⾏行行結果は、.NET  Frameworkオブジェクトの配列列として 出⼒力力されます。 PS  C:> Get-‐‑‒EC2AvailabilityZone  |  ft  * Region ZoneState Message Messages RegionName StateZoneName               -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒               ap-‐‑‒northeast-‐‑‒1 available {} {} ap-‐‑‒northeast-‐‑‒1 available ap-‐‑‒northeast-‐‑‒1a ap-‐‑‒northeast-‐‑‒1 available {} {} ap-‐‑‒northeast-‐‑‒1 available ap-‐‑‒northeast-‐‑‒1c Amazon.EC2.Model.AvailabilityZoneクラスの 2つのオブジェクトの配列列として出⼒力力 プロパティ名
  • 12.
    12 パイプライン 実⾏行行結果をパイプライン”|”で次のコマンドレットに渡すことができます。 PS  C:>  Get-‐‑‒Command -‐‑‒Module  AWSPowerShell  |  `̀ >>  Where-‐‑‒Object  {$_̲.Name  -‐‑‒eq  "Get-‐‑‒EC2Instance"} CommandType          Name                                                                                                                    Definition -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                        -‐‑‒-‐‑‒-‐‑‒-‐‑‒                                                                                                                            -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ Cmdlet                                Get-‐‑‒EC2Instance                                                                                      ...             "AWSPowerShell"モジュールのコマンドレットを全て取得し、その中から コマンドレット名が“Get-‐‑‒EC2Instance”のものを絞り込んで表⽰示 ※ PowerShellではスクリプト中の改⾏行行にはバッククォート"`̀"を使います。
  • 13.
    13 オブジェクト構造の確認 Get-‐‑‒Memberコマンドレットは、クラスで定義されたプロパティとメソッドを表⽰示します。 PS  C:>  (Get-‐‑‒EC2Instance).Instances |  Get-‐‑‒Member  -‐‑‒MemberType  Property  |  Select  Name,Definition   Name Definition                                                                                                                                                                                                   -‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                                                                                                                                                                                                   AmiLaunchIndex   int  AmiLaunchIndex  {get;set;}                                                                                     Architecture Amazon.EC2.ArchitectureValues  Architecture  {get;set;}                                                               ClientToken string  ClientToken  {get;set;}   EbsOptimized bool  EbsOptimized  {get;set;}   Hypervisor Amazon.EC2.HypervisorType  Hypervisor  {get;set;}   ImageId string  ImageId  {get;set;}                   InstanceId string  InstanceId  {get;set;} ... EC2インスタンスオブジェクトのプロパティを表⽰示
  • 14.
    14 フォーマット指定 Format-‐‑‒List(fl)、Format-‐‑‒Table(ft)などのコマンドレットを利利⽤用して、表 ⽰示形式を指定することができます。 PS  C:>  $EC2Instances =    (Get-‐‑‒EC2Instance).Instances  |select  InstanceType,  LaunchTime   PS  C:>  $EC2Instances  |  fl InstanceType  :  m3.large LaunchTime      :  2015/07/09  16:34:01 InstanceType  :  t2.micro LaunchTime      :  2015/04/08  16:47:30 .... PS  C:>  $EC2Instances  |  ft InstanceType LaunchTime                   -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                   m3.large 2015/07/09  16:34:01 t2.micro 2015/04/08  16:47:30 ....
  • 15.
    15 パイプラインの使い⽅方 パイプラインを利利⽤用して、AWSリソースの取得/操作をワンラインで操作できます。 http://docs.aws.amazon.com/ja_̲jp/powershell/latest/userguide/pstools-‐‑‒discovery-‐‑‒aliases.html PC  C:>  Get-‐‑‒EC2Instance |  Stop-‐‑‒EC2Instance   取得したEC2インスタンスを全て停⽌止 PC  C:>    Get-‐‑‒AWSRegion  |  %  {  Get-‐‑‒EC2Image  -‐‑‒Owner  self  -‐‑‒Region  $_̲  }   取得したAWSリージョン内の全AMIを取得 EC2インスタンスオブジェクトの配列列をStop-‐‑‒EC2Instanceの第⼀一引数(-‐‑‒Instance)に渡して実⾏行行 リージョンオブジェクトの配列列をGet-‐‑‒EC2Imageの-‐‑‒Region引数に渡して実⾏行行 ※ PowerShellコマンドレットの引数にはポジションが設定されており、明⽰示的に引数を指定しない 場合、先⾏行行処理理の結果がパイプラインの後続コマンドレットの第⼀一引数の値として評価されます。
  • 16.
    16 [options]  :  -‐‑‒Filter AWSPowerShellコマンドレットの出⼒力力を、Filterクラスのオブジェク トを⽤用いてフィルタリングする仕組みです。 PC C:>    $tag  =  New-‐‑‒Object  Amazon.EC2.Model.Filter  -‐‑‒Property  @{Name="tag:Name";Values="TEST"} PC  C:>    Get-‐‑‒EC2Instance  -‐‑‒Filter  $tag Nameタグの値が”TEST”のEC2インスタンスを取得 PC  C:>    $SGNames  =  New-‐‑‒Object  Amazon.EC2.Model.Filter  -‐‑‒Property  `̀ >>  @{Name="group-‐‑‒name";Values=@("SG1","SG2")} PC  C:>    Get-‐‑‒EC2SecurityGroup  -‐‑‒Filter  $SGNames グループ名が”SG1”,"SG2"のセキュリティグループを取得 フィルターオブジェクトを作成 -‐‑‒Filterでフィルターオブジェクトを指定
  • 17.
    17 Get-‐‑‒AWSPublicIpAddressRange AWSが利利⽤用するパブリックIPアドレスレンジを取得するコマンドレット です。AWS  CLIなどでは、ip-‐‑‒ranges.jsonをダウンロードする必要があ りますが、AWS  PowerShellではコマンドレットが⽤用意されています。 PS C:>  Get-‐‑‒AWSPublicIpAddressRange IpPrefix Region Service -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ 50.19.0.0/16 us-‐‑‒east-‐‑‒1 AMAZON ... 50.19.0.0/16 us-‐‑‒east-‐‑‒1 EC2 ... 205.251.192.0/21GLOBAL ROUTE53 54.232.40.64/26 sa-‐‑‒east-‐‑‒1 ROUTE53_̲HEALTHCHECKS ... 204.246.176.0/20GLOBAL CLOUDFRONT ... http://docs.aws.amazon.com/powershell/latest/reference/Index.html http://docs.aws.amazon.com/ja_̲jp/general/latest/gr/aws-‐‑‒ip-‐‑‒ranges.html
  • 18.
    18 (参考)Pro  PowerShell  for Amazon  Web   Services:  DevOps  for  the  AWS  Cloud •  Create,  manage,  and  terminate  Windows   servers  in  the  cloud •  Manage  storage  options  including  backup  and   recovery •  Configure  a  virtual  network  including  subnets   and  route  tables •  Secure  your  servers  using  security  groups  and   access  control  lists •  Use  Auto  Scaling  to  respond  to  changing   conditions •  Deploy  SQL  Server  using  Relational  Database   Service •  Use  Simple  Storage  Service  (S3)  to  reliably  store   and  archive  data •  Control  access  to  resources  using  Identity  and   Access  Management  (IAM) https://www.amazon.co.jp/Pro-PowerShell-Amazon-Web-Services-ebook/dp/B00HG2CQ3O/
  • 19.
    AWS  Tools  for Windows  PowerShell アップデート
  • 20.
    20 PowerShell  Galleryサポート https://blogs.aws.amazon.com/net/post/Tx3E4TIMWDG4604/Announcing-‐‑‒Support-‐‑‒for-‐‑‒the-‐‑‒PowerShell-‐‑‒Gallery https://www.powershellgallery.com/packages/AWSPowerShell/ PowerShell  Gallery – Microsoftが提供するPowerShellの統合リポジトリ(2015年年7⽉月時点ではプレビュー中) –  リポジトリから最新モジュールのインストール/アップデートが可能 –  利利⽤用開始前にWindows  Management  Framework  v5  previewのインストールが必要 •  AWS  PowerShellのインストール •  AWS  PowerShellのアップデート PS  C:>  Install-‐‑‒Module  -‐‑‒Name  AWSPowerShell   PS  C:>  Update-‐‑‒Module  -‐‑‒Name  AWSPowerShell   2015年年5⽉月 ※ アップデートは、  PowerShell  Galleryを利利⽤用してインストールしたモジュールのみ実施可能です。 AWS  PowerShellが既にインストールされている場合、⼀一旦アンインストールしてから再インストー ルする必要があります。
  • 21.
    21 Get-‐‑‒AWSCmdletName   Get-‐‑‒AWSCmdletNameで、-‐‑‒Serviceパラメータによるコマンドの検索索が可能に PS  C:> Get-‐‑‒AWSCmdletName  -‐‑‒Service  compute CmdletName                                            ServiceOperation                          ServiceName -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                                            -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                          -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ Add-‐‑‒EC2ClassicLinkVpc                      AttachClassicLinkVpc                  Amazon  Elastic  Compute  Cloud PS  C:>  Get-‐‑‒AWSCmdletName  -‐‑‒Service  EC2 CmdletName                                            ServiceOperation                      ServiceName -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                                            -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒                      -‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒ Add-‐‑‒EC2ClassicLinkVpc                      AttachClassicLinkVpc              Amazon  Elastic  Compute  Cloud コンピュートサービスのコマンドレットを取得 “EC2”に属するコマンドレット名を取得 2015年年10⽉月 https://blogs.aws.amazon.com/net/post/Tx14OU1G9A1W5PY/Listing-Cmdlets-by-Service
  • 22.
    22 AWS  Tools  for Windows  PowerShellユーザーの フェデレーションをサポート •  Set-‐‑‒AWSSamlEndpointとSet-‐‑‒AWSSamlRoleProfileを使 ⽤用してADFSによるフェデレーションを設定可能 https://blogs.aws.amazon.com/net/post/Tx2PI5SQTDMAHQR/New-Support-for-Federated-Users-in-the-AWS- Tools-for-Windows-PowerShell 2015年年12⽉月 #  first  configure  the  endpoint  that  one  or  more  role  profiles  will  reference  by  name $endpoint  =  "https://adfs.example.com/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices" Set-‐‑‒AWSSamlEndpoint  -‐‑‒Endpoint  $endpoint  -‐‑‒StoreAs  "endpointname" #  if  the  principal  and  role  ARN  data  of  a  role  is  known,  it  can  be  specified  directly $params  =  @{  "PrincipalARN"="arn:aws:iam::012345678912:saml-‐‑‒provider/ADFS"  "RoleARN"="arn:aws:iam::012345678912:role/ADFS-‐‑‒Dev" } Set-‐‑‒AWSSamlRoleProfile  -‐‑‒EndpointName  "endpointname"  -‐‑‒StoreAs  "ADFS-‐‑‒Dev"  @params
  • 23.
    23 AWS  Tools  for PowerShell  Core  Edition •  Windows/Linux/Mac  OS  Xに対応した PowerShell  Core  Edition⽤用のAWS  Toolsを提 供 –  ほぼすべてのCmdletをサポート –  PowerShell  Garalleyからインストール可能 2016年年8⽉月 https://blogs.aws.amazon.com/net/post/TxTUNCCDVSG05F/Introducing-AWS-Tools-for-PowerShell-Core- Edition Install-‐‑‒Package  -‐‑‒Name  AWSPowerShell.NetCore  -‐‑‒Source  https://www.powershellgallery.com/ api/v2/  -‐‑‒ProviderName  NuGet  -‐‑‒ExcludeVersion  -‐‑‒Destination  destfolder Import-‐‑‒Module  AWSPowerShell.NetCore ※事前に.NET CoreとPowerShell Coreのインストールが必要
  • 24.
  • 25.
    25 Amazon  EC2におけるスクリプト実⾏行行の⾃自動化 •  User Dataの使⽤用 •  Amazon  EC2  Run  Command
  • 26.
    26 User  Dataの使⽤用 •  User DataにコマンドまたはPowerShellスクリプトを埋 め込むことで、インスタンス起動時の処理理を⾃自動化 –  <powershell>Read-‐‑‒S3Object  -‐‑‒BucketName  myS3Bucket  -‐‑‒Key   myFolder/myFile.zip  -‐‑‒File  c:destinationFile.zip</powershell> •  User  DataはEC2Configサービスが起動されるとすぐに 実⾏行行される •  EC2Configバージョン2.1.10からユーザーデータを実⾏行行 後にプラグインを有効化 –  <persist>true</persist>
  • 27.
    27 Amazon  EC2  Run Command   •  実⾏行行中のEC2インスタン スをリモート操作 –  OSやアプリケーションの設定変更更 –  ログファイルやシステムリソースの表 ⽰示・収集 •  対象OS –  Amazon  Linux,  Ubuntu  Server,   RHEL,  CentOS,  etc. ※SSM  Agentの設定が必要 –  Windows  Server  2003-‐‑‒2012および R2
  • 28.
    28 EC2  Run  Commandの前提条件 • サポートされるオペレーティングシステム –  Windows  Server  2003/2003  R2/2008/2008  R2/2012/2012  R2 •  エージェント –  EC2Configの最新バージョン •  IAMロールとアクセス許可 –  コマンドを処理理するEC2インスタンスのIAMロール –  コマンドを実⾏行行するユーザーのロール •  インターネットアクセス –  EC2インスタンスからアウトバウンドのインターネットが可能であること •  Amazon  S3バケット(オプション) –  コマンド出⼒力力をS3バケットに保存可能
  • 29.
    29 EC2  Run  Command⽤用のIAMロールとユーザーの設定 • SSM管理理ポリシーの使⽤用 –  AmazonEC2RoleforSSM  (インスタンス信頼ポリシー) –  AmazonSSMFullAccess  (ユーザー信頼ポリシー) –  AmazonSSMReadOnlyAccess  (ユーザー信頼ポリシー) •  EC2インスタンスロールおよびユーザーを作成 •  EC2インスタンスロールを使⽤用して新しいイン スタンスを作成
  • 30.
    30 AWS  Directory  Serviceドメインへの⾃自動参加 • インスタンスの起動時にドメインを指定して⾃自動的に参 加させることが可能 1. [Enable]に設定 2. Directory Serviceドメインを指定 3. SSMへのアクセスを有効にした ロールを指定
  • 31.
    31 EC2  Run  Commandを使⽤用したコマンドの実⾏行行 • PowerShell  コマンドまたはスクリプトの実⾏行行 •  アプリケーションのインストール •  PowerShell  モジュールのインストール •  EC2  インスタンスのドメインへの結合 •  EC2  インスタンスから  Amazon  CloudWatch  へのログのアップ ロード •  Windows  Updates  の有効化または無効化 •  EC2Config  サービスの更更新 •  Windows  ⽤用の  Amazon  EC2  インスタンスのインベントリを作成 する •  EC2  Windows  インスタンスの更更新プログラムの管理理
  • 32.
    32 EC2  コンソールを使⽤用したEC2  Run Commandの実⾏行行 •  Amazon  EC2コンソールで「コマンド」から 「コマンドの実⾏行行」を選択して実⾏行行 1.  [AWS-‐‑‒RunPowerShellScript]を選択 2.  対象となるインスタンスを指定 3.  実⾏行行するスクリプトを⼊入⼒力力
  • 33.
    Windows  PowerShellによるEC2  Run Commandの 実⾏行行 #使⽤用可能なパラメータを表⽰示 Get-SSMDocumentDescription -Name "AWS-RunPowerShellScript“ #パラメータの詳細情報を表⽰示 Get-SSMDocumentDescription -Name "AWS-RunPowerShellScript" | select -ExpandProperty Parameters #AWS-RunPowerShellScript ドキュメントを使⽤用してコマンドを送信 $runPSCommand=Send-SSMCommand -InstanceId @('Instance-ID', 'Instance-ID') -DocumentName AWS- RunPowerShellScript -Comment 'Demo AWS-RunPowerShellScript with two instances' -Parameter @{'commands'=@('dir C:Users', 'dir C:')}
  • 34.
    34 まとめ •  AWS  Tools for  Windows  PowerShell –  PowerShellからAWSのサービスを管理理するためのモジュール –  PowerShell標準コマンドレットを活⽤用してAWSの管理理を効率率率化可 能 –  AWS  Tools  for  PowerShell  CoreによりLinux/Mac  OS  X環境にも 対応 •  Amazon  EC2  Run  Command –  任意のコマンドをリモートのEC2インスタンスに対して実⾏行行 –  AWS  Tools  for  Windows  PowerShellと組み合わせることにより さまざまなタスクの⾃自動化が可能に
  • 35.