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

PowerShell

はじめに

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

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

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

実行環境

項目 バージョン
PS Version 5.1.18362.752
OS Windows 10 1909 Pro 64bit
.Net Framework 4.7.2
AWS Tool Version aws-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 Cmdlet

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

Sample

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 Cmdlet

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 

Sample

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

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

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

Syntax

Get-S3Object

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

Sample

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

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

ファイルダウンロード

アップロードしたファイルをダウンロードしてみます。

Syntax

Read-S3Object

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

Sample

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

上記で、Sample2のフォルダに先ほどアップロードしたファイルがダウンロードされました。

ファイルの削除

アップロードしたファイルを削除します。

Syntax

Remove-S3Bucket

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

Sample

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をコピーしました