Powershellを利用したAWS S3操作まとめ

AWS S3に対して PowershellのCmdletを利用してダウンロードやアップロードなどの操作を行うための方法を備忘録として残しておきます。

本記事では、下記についてまとめておきます。

  • AWS S3Bucketの作成
  • AWS S3へのファイルアップロード
  • AWS S3のBucketおよびKey情報の取得
  • AWS S3からのファイルダウンロード
  • AWS S3からファイルを削除する

\自身のスキルを向上するには技術書で!!/

月額¥980で技術書が読み放題!!

  • ビジネススキルとマインド向上したい!!
  • 決断や行動を先送りにしてしまう方!!

Kindle Unlimitedでは30日間無料体験実施中!登録はこちら!

実行環境

項目バージョン
PS Version5.1.18362.752
OSWindows 10 1909 Pro 64bit
.Net Framework4.7.2
AWS Tool Versionaws-cli/2.0.44

共通引数

AWS S3用のコマンドレットに対して、共通で利用できるパラメータについては下記の通りです。(基本的によく使うもののみを抜粋)

AWS Tools for PowerShell – Amazon Simple Storage Service (S3)

-AccessKeyアクセスキー
-ProfileNameプロファイル名
-Regionリージョン
-SecretKeyシークレットキー
-SessionTokenッショントークン

S3 Bucketの作成

まずはAWS S3にBucketを作成します。

[Syntax]

New-S3Bucket
    -BucketName 
    -CannedACLName 
    -PublicReadOnly 
    -PublicReadWrite 
    -Force 
    -Select 
    -UseAccelerateEndpoint 
    -UseDualstackEndpoint 
    -ForcePathStyleAddressing

New-S3Bucket Cmdlet

サンプルコードは下記の通りである

New-S3Bucket -BucketName samplebucket -Region ap-northeast-1

CreationDate                     BucketName
------------                           ----------
2020/09/09 13:12:54   samplebucket

ファイルのアップロード

先ほど作成したBucketにファイルをアップロードします。
アップロードするファイルパスは「C:¥Sample」フォルダ内にあるsample01.txt、sample02.txtとします。

[Syntax]

Write-S3Object
    -BucketName 
    -Key 
    -File 
    -CannedACLName 
    -PublicReadOnly 
    -PublicReadWrite 
    -ContentType 
    -StorageClass 
    -StandardStorage 
    -ReducedRedundancyStorage 
    -ServerSideEncryption 
    -ServerSideEncryptionKeyManagementServiceKeyId 
    -ServerSideEncryptionCustomerMethod 
    -ServerSideEncryptionCustomerProvidedKey 
    -ServerSideEncryptionCustomerProvidedKeyMD5 
    -Metadata 
    -HeaderCollection 
    -TagSet 
    -ConcurrentServiceRequest 
    -Force 
    -UseAccelerateEndpoint 
    -UseDualstackEndpoint 
    -ForcePathStyleAddressing

Write-S3Object Cmdlet

サンプルコードについては下記の通りである。

Write-S3Object -BucketName samplebucket -KeyPrefix sampleKey -Folder C:¥Sample

アップロードしたファイル情報を確認する

先ほどアップロードしたファイルを確認します。

[Syntax]

Get-S3Object
    -BucketName 
    -Prefix 
    -Encoding 
    -RequestPayer 
    -Delimiter 
    -Marker 
    -MaxKey 
    -Select 
    -PassThru 
    -NoAutoIteration 
    -UseAccelerateEndpoint 
    -UseDualstackEndpoint 
    -ForcePathStyleAddressing

Get-S3Object

サンプルコードについては下記の通りである

Get-S3Object -BucketName samplebucket -KeyPrefix sampleKey

ETag         : "ed92477a90933697ae437028efcf9034"
BucketName   : samplebucket
Key          : sampleKey/sample01.txt
LastModified : 2020/09/03 12:34:05
Owner        : 
Size         : 382
StorageClass : STANDARD

ETag         : "39d930f8vk29d6e54be20i3oe8f120do"
BucketName   : samplebucket
Key          : sampleKey/sample02.txt
LastModified : 2020/09/03 12:34:05
Owner        : 
Size         : 5678
StorageClass : STANDARD

問題なくアップロードができることを確認できました。

ファイルのダウンロード

アップロードしたファイルをダウンロードしてみます。ダウンロードする場合は「Read-S3Object」Cmdletを利用します。

[Syntax]

Read-S3Object
    -BucketName 
    -Key 
    -File 
    -Version 
    -ModifiedSinceDate 
    -UnmodifiedSinceDate 
    -UtcModifiedSinceDate 
    -UtcUnmodifiedSinceDate 
    -ServerSideEncryptionCustomerMethod 
    -ServerSideEncryptionCustomerProvidedKey 
    -ServerSideEncryptionCustomerProvidedKeyMD5 
    -UseAccelerateEndpoint 
    -UseDualstackEndpoint 
    -ForcePathStyleAddressing

Read-S3Object

サンプルコードについては下記の通りです

Read-S3Object -BucketName samplebucket -KeyPrefix sampleKey -Folder C:¥Sample2

上記を実行した結果、Sample2フォルダに先ほどアップロードしたファイルのダウンロードに成功しました。

ファイルの削除

アップロード済みのファイルをS3から削除します。ファイルの削除については「Remove-S3Bucket」Cmdletを利用して削除します。

[Syntax]

Remove-S3Bucket
    -BucketName 
    -DeleteBucketContent 
    -Force 
    -Select 
    -UseAccelerateEndpoint 
    -UseDualstackEndpoint 
    -ForcePathStyleAddressing

Remove-S3Bucket

削除時のサンプルコードは下記の通りです

Remove-S3Object -BucketName samplebucket -KeyPrefix sampleKey

確認
この操作を実行しますか?
対象 "" に対して操作 "Remove-S3Object (DeleteObjects)" を実行しています。
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"):

DeleteMarker VersionId RequestCharged
------------ --------- --------------

問題なく削除ができました。

最後に

S3コンテナの基本的なCmdletについてまとめました。

default以外のプロファイルを利用する場合は「-ProfileName [profile名]」を指定し、リージョンを個別に指定することも可能です。

AWS S3の利用が多くなっていきている中、まず基本的なCmdletは抑えておきたいですね。

次回は、AWS .NETでの操作についてまとめたいと思います。

タイトルとURLをコピーしました