PowerShellからS3を操作してみた
はじめに
WindowsServerからS3を操作する必要があり、AWS Tools for Windows PowerShellを試してみました。
検証環境
Windows2012R2の日本語AMIを利用しました。 また、EC2インスタンスにIAM Roleを設定しました。 AMI:Windows_Server-2012-R2_RTM-Japanese-64Bit-Base-2015.10.26 (ami-6a92ff6a)
AWS Tools for Windows PowerShellのバージョンアップ
バージョン確認
PowerShellを起動して、「Get-AWSPowerShellVersion」コマンドを実行します。 今回利用したAMIにはVersion 3.1.20.0がインストールされていました。
> Get-AWSPowerShellVersion AWS Tools for Windows PowerShell Version 3.1.20.0 Copyright 2012-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. Amazon Web Services SDK for .NET Version 3.1.3.2 Copyright 2009-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. Release notes: https://aws.amazon.com/releasenotes/PowerShell This software includes third party software subject to the following copyrights: - Logging from log4net, Apache License [http://logging.apache.org/log4net/license.html] >
バージョンアップ
http://aws.amazon.com/powershell/ページから、[AWS Tools for Windows]を選択します。 [AWSToolsAndSDKForNet_sdk-3.1.26.1_ps-3.1.26.0_tk-1.9.6.7.msi]がダウンロードされました。
msiファイルをインスタンスに配置し実行します。 デフォルト設定で[Next]を選択していきました。
PowerShellを起動して、「Get-AWSPowerShellVersion」コマンドを実行しましょう。 Version 3.1.26.0になりました。
> Get-AWSPowerShellVersion AWS Tools for Windows PowerShell Version 3.1.26.0 Copyright 2012-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. Amazon Web Services SDK for .NET Version 3.1.3.5 Copyright 2009-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. Release notes: https://aws.amazon.com/releasenotes/PowerShell This software includes third party software subject to the following copyrights: - Logging from log4net, Apache License [http://logging.apache.org/log4net/license.html] >
S3の操作
PowerShellからコマンドを実行します。
リージョンの指定
Tokyoリージョンを指定します。
> Initialize-AWSDefaults -Region ap-northeast-1
Administratorユーザで「Initialize-AWSDefaults」を実行した場合、 C:\Users\Administrator\AppData\Local\AWSToolkit\RegisteredAccounts.jsonが作成されます。 jsonファイルではTokyoリージョンがセットされています。
{ "*******-****-****-****-*******" : { "DisplayName" : "default", "CredentialsType" : "Amazon.Runtime.InstanceProfileAWSCredentials", "Region" : "ap-northeast-1" } }
バケットの作成
> New-S3Bucket bukectname CreationDate BucketName ------------ ---------- 2015/11/** **:**:** bukectname >
オブジェクトのアップロード
デスクトップ上のText1.txtをs3://bukectname/folder1/Text1.txtとしてアップロードします。
> Write-S3Object -BucketName bukectname -File .\Desktop\Text1.txt -Key "folder1/Text1.txt"
オブジェクトのダウンロード
> Copy-S3Object -BucketName bukectname -Key folder1/Text1.txt -LocalFile .\Desktop\Text1.txt
オブジェクトの削除
アップロードしたファイルを削除します。
> Remove-S3Object -BucketName bukectname -Key "folder1/Text1.txt"
おわりに
AWS Tools for Windows PowerShellを使ってみました。 他の操作については、コマンドレットリファレンスをご参照ください。
参考
AWS Documentation(Amazon S3 from the AWS Tools for Windows PowerShell) AWS Tools for Windows PowerShell Cmdlet Reference