View a markdown version of this page

Amazon S3 を PowerShell ドライブとして使用する - AWS Tools for PowerShell (バージョン 5)

のバージョン 5 (V5) AWS Tools for PowerShell がリリースされました。

重要な変更とアプリケーションの移行については、「移行トピック」を参照してください。

Orange button with text "Click here for details".

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon S3 を PowerShell ドライブとして使用する

5.0.288 AWS.Tools.S3 以降に適用されます。S3 ドライブプロバイダーとそのコマンドレットは、Windows PowerShell 5.1 および PowerShell 7+ (Windows、Linux、macOS) で動作する AWS.Tools.S3モジュールに付属しています。

S3 PowerShell ドライブを使用すると、Amazon S3 ストレージをドライブとしてマウントし、ローカルディスクと同じように操作できます。ドライブをマウントすると、プロバイダーはバケットとプレフィックスをフォルダとして、オブジェクトをファイルとして表示します。一般的なナビゲーションコマンドは、、、、Set-LocationGet-ChildItemGet-Content、 などSet-Content、S3 に対して直接機能しますRemove-Item。

このトピックでは、S3 ドライブの認証情報、リージョン、および安全動作に加えて、インストール、マウント、ナビゲーション、コンテンツの転送、アンマウントについて説明します。

パス区切り文字はプラットフォームによって異なります

このトピックの例では、ドライブがすべてのプラットフォームで受け入れるパス区切り文字/として を使用します。Windows では、ドライブは も受け入れるため\、 S3:\amzn-s3-demo-bucket\reportsと S3:/amzn-s3-demo-bucket/reportsは同等です。Linux および macOS /では区切り文字のみであるため、複数のプラットフォームで実行されるスクリプトでその形式を使用します。などのドライブが返すパスは、オペレーティングシステムのネイティブ区切り文字を使用します。Windows \では PSPath、Linux では 、macOS /では です。

前提条件

  • AWS.Tools.S3 モジュール、5.0.288 以降。PowerShell Gallery から直接インストールします (これもAWS.Tools.Common依存関係を取り込みます)。

    Install-Module -Name AWS.Tools.S3 -MinimumVersion 5.0.288

    または、AWS.Tools.Installerモジュールでモジュールツールを管理する場合は、最初にインストールしてから を使用しますInstall-AWSToolsModule。

    Install-Module -Name AWS.Tools.Installer # provides Install-AWSToolsModule Install-AWSToolsModule AWS.Tools.S3

    ドライブプロバイダーとそのコマンドレットは 内に出荷されますAWS.Tools.S3。追加のインストールは必要ありません。

  • AWS 認証情報は、S3 コマンドレット (名前付きプロファイル、環境変数、IAM ロール、または SSO) と同じ方法で設定されます。詳細については、「の使用を開始する AWS Tools for PowerShell」を参照してください。

モジュールをインポートすると、 という名前の PowerShell プロバイダーが登録されますAWS.S3。利用可能なことを確認できます。

Get-PSProvider AWS.S3

ドライブのマウント

Mount-S3PSDrive を使用してドライブを作成します。-Name パラメータはすべてのパスのドライブ名になります (たとえば、 は のようなパス-Name S3を提供しますS3:/amzn-s3-demo-bucket/reports/index.txt)。

# Mount an S3: drive using a named profile and Region Mount-S3PSDrive -Name S3 -ProfileName my-profile -Region us-east-1 # List buckets Get-ChildItem S3:/

サンプル出力:

Type LastModified Size Name ---- ------------ ---- ---- Bucket 2026-06-02 09:14:03 amzn-s3-demo-app-logs Bucket 2026-01-08 16:47:51 amzn-s3-demo-reports

Set-AWSCredential および でセッションのデフォルトを既に設定している場合はSet-DefaultAWSRegion、他のパラメータなしでマウントできます。

Set-AWSCredential -ProfileName my-profile Set-DefaultAWSRegion us-west-2 Mount-S3PSDrive -Name S3

Mount-S3PSDrive は、PowerShell 組み込み の薄いラッパーですNew-PSDrive。必要に応じて、ドライブを直接作成し、同じ認証情報とリージョンパラメータを渡すことができます。

New-PSDrive -Name S3 -PSProvider AWS.S3 -Root '' -Scope Global -ProfileName my-profile -Region us-east-1
New-PSDrive を直接使用する

New-PSDrive を直接使用する場合-Scope Globalは を渡します。これがないと、ドライブは現在のスコープに作成され、そのスコープが終了すると (例えば、それを作成したスクリプトまたは関数が返す場合など) は消えます。 はユーザー-Scope Globalに代わって Mount-S3PSDriveを設定します。

デフォルトでは、出力はMount-S3PSDrive生成されません。PSDriveInfo オブジェクトを戻す-PassThru場合は、 を追加します。

認証情報パラメータ名

認証情報パラメータの名前は -AWSCredentialではなく です-Credential。 New-PSDriveはすでに PSCredentialを別のタイプである -Credentialとして定義しているため、S3 ドライブは衝突を避けるために別の名前を使用します。

認証情報とリージョンの解決方法

S3 ドライブは、S3 コマンドレットとまったく同じリージョンを認証して選択します。最初に明示的なパラメータ、次にセッションのデフォルトが Set-AWSCredentialと で設定されSet-DefaultAWSRegion、次に SDK のデフォルトチェーンのプロファイル、環境、インスタンスメタデータソースが設定されます。完全な解決順序については、AWS 認証情報の使用「」および「」を参照してくださいの AWS リージョンを指定する AWS Tools for PowerShell。

リージョンを指定しない場合、ドライブは にフォールバックしますus-east-1。マウントするリージョンは開始リージョンにすぎません。1 つのドライブがリージョン間でバケットに到達できます (「」を参照1 つのドライブからリージョン間でバケットにアクセスする)。

不正なプロファイル、欠落しているバケット、またはプレフィックスが で失敗しますMount-S3PSDrive。一部のアクセス許可エラーは、オブジェクトにアクセスするまで表示されない場合があります。

ローカルドライブのように Amazon S3 を操作する

ドライブをマウントしたら、一般的な PowerShell ドライブコマンドで移動します。S3 には実際のフォルダはありませんが、プロバイダーはプレフィックスをフォルダとして表示するため、同じ方法で移動できます。

# Change into a bucket, then a prefix Set-Location S3:/amzn-s3-demo-reports/2026 # List the current location Get-ChildItem

サンプル出力:

Type LastModified Size Name ---- ------------ ---- ---- Folder q1 Folder q2 Object 2026-03-31 18:02:11 48210 summary.txt
# List a path without changing location Get-ChildItem S3:/amzn-s3-demo-bucket/reports/2026

タブ補完はバケット、プレフィックス、オブジェクトに対して機能するため、フルネームを入力せずにパスを完了できます。

Get-ChildItem は、、Name、Type、および LastModifiedプロパティを公開するオブジェクトとしてSize各項目を返します。これらのプロパティにより、 は Where-Objectや などのコマンドに直接パイプできますSort-Object。 Typeは Bucket、Folder、または のいずれかですObject。フォルダとバケットのサイズはありません。

# List the 10 largest objects with the prefix "2026" Get-ChildItem S3:/amzn-s3-demo-app-logs/2026 -Recurse | Where-Object Type -eq 'Object' | Sort-Object Size -Descending | Select-Object -First 10 Name, Size, LastModified

その他のナビゲーションコマンドもドライブで機能します。

# Retrieve the single item at an exact path (no children) Get-Item S3:/amzn-s3-demo-bucket/reports/index.txt # Test whether a path exists and whether it is a folder or an object Test-Path S3:/amzn-s3-demo-bucket/reports # -> True Test-Path S3:/amzn-s3-demo-bucket/reports -PathType Container # -> True (a prefix) Test-Path S3:/amzn-s3-demo-bucket/reports/index.txt -PathType Leaf # -> True (an object)
コマンドエイリアスはオペレーティングシステムによって異なります

これは PowerShell の動作であり、ドライブではありません。Windows では、Unix スタイルのエイリアス ls、rm、 が PowerShell コマンドレットにcatマッピングされるため、 はls S3:/amzn-s3-demo-bucket機能します。Linux および macOS では、PowerShell はそれらの名前を S3 パスを認識しないネイティブツール (/bin/ls、/bin/rm、/bin/cat) にバインドします。その結果、 はシステムls S3:/amzn-s3-demo-bucketを実行しls、失敗します。すべてのプラットフォームで実行されるスクリプトの場合は、完全なコマンドレット名 Get-ChildItem、Remove-Item、および を使用します Get-Content(cd および dirはすべてのプラットフォームでエイリアスされるため、これらはどこでも機能します)。

では-Recurse、項目の Nameはプレフィックスに対するキーであり ( を含めることができるため/)、同じリーフ名は異なるプレフィックスの下に表示されます。リストされた項目を明確 (パイプ処理など) に識別する必要がある場合は、 PSPath ではなく を使用しますName。

Windows PowerShell 5.1 で -AsByteStream を使用してリストされたオブジェクトをパイプする

Windows PowerShell 5.1 では、 Get-ChildItem へのパイプが失敗Get-Content -AsByteStreamする可能性があります。パイプ処理された入力が S3 パスであること、および 5.1 の FileSystem プロバイダーにそのようなパラメータがないことを知る-AsByteStream前に、エンジンがバインドされる場合があります (「」を参照ローカルファイルのバイトの読み取りはエディションによって異なります)。PSPath 代わりに、両方のエディションで動作する明示的な で各項目を読みます。

# Read each listed object by explicit PSPath Get-ChildItem S3:/amzn-s3-demo-bucket/prefix | ForEach-Object { Get-Content -LiteralPath $_.PSPath -AsByteStream -Raw }

PowerShell 7 以降では、直接パイプは機能しますが、項目ごとのフォームは、両方のエディションで実行されるスクリプトの安全なデフォルトです。

リストは安全に中断できます

結果の各ページが S3 から到着すると、リストはストリーミングされ、Ctrl+C で中断しても安全です。 多数のオブジェクトを含むプレフィックスは、完全なリストが終了するのを待つ代わりに、すぐに出力を生成し始めます。

キーのワイルドカード文字

S3 キーには、PowerShell ワイルドカード文字 ([、]、、*) を法的に含めることができます?。このようなキーに文字通り対処するには、ファイルシステムプロバイダーで行うのと同じ方法で -LiteralPath (Get-Item、Set-Content、、および Get-ContentでサポートされていますRemove-Item) を使用します。

Get-Content -LiteralPath 'S3:/amzn-s3-demo-bucket/data[2026].csv' -Raw
読み取れないテストパスとオブジェクト

Test-Path は、読み取れないパス$trueを返します。パスが解決されたことを確認します。パスを読み書きするアクセス許可があることは確認されません。

S3 からオブジェクトを読み取る

Get-Content は オブジェクトをダウンロードします。デフォルトでは、テキスト行を行単位で返します。オブジェクト全体を単一の文字列として返-Rawすには、 を追加します。Get-Content と は、-Encodingテキストと-AsByteStreamバイナリコンテンツの両方Set-Contentをサポートしています。

# Read an object line by line Get-Content S3:/amzn-s3-demo-reports/2026/summary.txt # Read the whole object as one string Get-Content S3:/amzn-s3-demo-reports/2026/summary.txt -Raw

テキスト以外のオブジェクトの場合は、 -AsByteStream を使用して raw バイトを取得します。S3 パスでは、S3 プロバイダーが パラメータを指定するため、PowerShell 7+ と Windows PowerShell 5.1 の両方で機能します。ローカルファイルのみがエディションによって異なります (「」を参照ローカルファイルのバイトの読み取りはエディションによって異なります)。テキストデコードを制御するには、標準の PowerShell エンコード名 (UTF8、UTF8BOM、Unicode、 ASCIIなど) -Encodingのいずれかで を追加します。デフォルトは、 Get-Contentと の両方で BOM を使用しない UTF-8 ですSet-Content。

# Read raw bytes Get-Content S3:/amzn-s3-demo-bucket/images/logo.png -AsByteStream -Raw # Decode as a specific text encoding Get-Content S3:/amzn-s3-demo-bucket/data/report.csv -Encoding UTF8

Get-Content は、S3 最小 5 MiB から最大 5 GiB までのマルチパートダウンロードパートサイズをバイト単位で設定-PartSizeすることも受け入れます。アップロードパーツのサイズを設定する -PartSizeにミラーリングされます (Set-Content「」を参照非常に大きなオブジェクトをアップロードする)。

raw バイトを変数に読み込む

オブジェクトのバイトを変数にロードする場合 (ハッシュ、測定、または別の API に渡す場合)、まず-AsByteStream結果をフラット化します。そうしないと、 .Lengthとバイトの比較で誤った結果が生成されます。

$bytes = [byte[]]((Get-Content S3:/amzn-s3-demo-bucket/images/logo.png -AsByteStream -Raw) | ForEach-Object { $_ })

ファイルまたは別のコマンド ( のように S3 とローカルディスク間でオブジェクトをコピーする) へのパイプではSet-Content -AsByteStream、フラット化は必要ありません。

S3 へのオブジェクトの書き込み

Set-Content はオブジェクトをアップロード (および上書き) します。

# Write text Set-Content S3:/amzn-s3-demo-reports/2026/notes.txt -Value 'Draft complete' # Write several lines Set-Content S3:/amzn-s3-demo-bucket/notes/list.txt -Value @('alpha', 'beta', 'gamma') # Write raw bytes Set-Content S3:/amzn-s3-demo-bucket/images/logo.png -AsByteStream -Value $bytes

アップロードには次のオプションがあります。

パラメータ 目的

-Encoding

on-the-wireバイトのテキストエンコーディング (デフォルトは UTF-8、BOM なし)。

-NoNewline

各テキスト値の後に続く改行を省略します。

-StorageClass

このオブジェクトのストレージクラス (例: STANDARD_IA、GLACIER)。

-PartSize

このアップロードのマルチパートパートサイズ、バイト単位 (S3 最小 5 MiB から最大 5 GiB の間)。「非常に大きなオブジェクトをアップロードする」を参照してください。

Ctrl+C を使用すると、いつでもアップロードをキャンセルできます。 アップロードが完了するまで何もコミットされないため、キャンセルしても、半分書き込まれたオブジェクトが古いオブジェクトの代わりに残りません。

テキストアップロードでは LF 行末を使用する

テキストアップロードでは LF 行の末尾が使用されるため、Windows、Linux、または macOS で記述されたオブジェクトはバイト同一です。バイトを正確に制御する必要がある場合は、 を使用します-AsByteStream。

非常に大きなオブジェクトをアップロードする

ドライブを介したすべてのアップロードはマルチパートアップロードであり、S3 はマルチパートアップロードを 10,000 パートに制限します。デフォルトのパートサイズは 5 MiB で、1 つのオブジェクトは約 48 GiB で上限に達し、上限を超えたアップロードではパートが不足して失敗します。より大きなものをアップロードするには、少なくとも -PartSizeになるように を上げますobject size / 10,000。

# Upload a ~200 GiB object with 64 MiB parts (200 GiB / 10,000 = 21 MiB, so 64 MiB is plenty) # PowerShell 7+ Get-Content ./huge.bin -AsByteStream -ReadCount 8MB | Set-Content S3:/amzn-s3-demo-bucket/archive/huge.bin -AsByteStream -PartSize 64MB # Windows PowerShell 5.1 (local read uses -Encoding Byte; the S3 write keeps -AsByteStream -PartSize) Get-Content ./huge.bin -Encoding Byte -ReadCount 8MB | Set-Content S3:/amzn-s3-demo-bucket/archive/huge.bin -AsByteStream -PartSize 64MB

-PartSize および -StorageClassは S3 送信先パラメータです。パイプラインにバインドされた送信先オブジェクトではなく、明示的な S3 送信先パス (前の例のように) で使用します。

-PartSize は、S3 最小 5 MiB から最大 5 GiB までの値を受け入れます。最大 5 GiB では、10,000 個のパートが S3 がサポートする最大のオブジェクト (5 TiB) をカバーします。

パートサイズの選択

パートサイズが大きいほど、大きなアップロードのラウンドトリップも少なくなりますが、処理中の各パートはメモリに保持されるため、非常に大きなパートはより多くのメモリを使用します。5 MiB~数百 MiB は妥当な範囲です。オブジェクトサイズがそれを必要とする場合にのみ、大きくなります。

S3 とローカルディスク間でオブジェクトをコピーする

を使用した S3 内のコピーCopy-Itemはサポートされていません (「」を参照サポートされているオペレーションとサポートされていないオペレーション)。ローカルディスクと S3 の間でデータを移動するには、 Get-Contentと を通じてコンテンツをパイプしますSet-Content。

バイナリデータの場合は、バイトを正確に読み書きします。S3 パスは両方の PowerShell エディション-AsByteStreamで を使用します。「」で説明されているように、ローカル側のみが異なりますローカルファイルのバイトの読み取りはエディションによって異なります。

# Upload a local file (PowerShell 7+; on Windows PowerShell 5.1 the local read uses -Encoding Byte) Get-Content ./report.csv -AsByteStream -ReadCount 8MB | Set-Content S3:/amzn-s3-demo-bucket/data/report.csv -AsByteStream # Download to a local file (on Windows PowerShell 5.1 the local write uses -Encoding Byte) Get-Content S3:/amzn-s3-demo-bucket/data/report.csv -AsByteStream | Set-Content ./report.csv -AsByteStream
バイナリデータの両端でバイトモードを使用する

バイナリデータをコピーするときの両端の読み取りバイトと書き込みバイト。テキストモードでは、コンテンツはデコードされ、再エンコードされます。改行は行ごとに正規化または追加され、テキスト以外のデータが破損します。読み取りと書き込みのバイトモードは、バイトを正確にコピーします。テキストファイルの場合、プレーンGet-Content | Set-Contentは機能します。ただし、テキストモードでは末尾の改行 (LF) Set-Contentが追加され、行末が正規化されるため、コピーはソースとbyte-for-byte同一ではありません。正確なコピーが必要な場合は、両端-AsByteStreamで を使用します。

ローカルファイルのバイトの読み取りはエディションによって異なります

ローカルファイルをターゲットにすると、PowerShell の組み込み FileSystem プロバイダーが使用され、そのプロバイダーには -AsByteStream Windows PowerShell 5.1 (PowerShell 6 に到着) に がありません。代わりに -Encoding Byte を使用します。これは 5.1 の制限であり、S3 ドライブが制御するものではなく、S3 パスが両方のエディション-AsByteStreamを引き受けます。

Edition ローカルファイルのバイトを読み取る ローカルファイルのバイトの書き込み

PowerShell 7+

Get-Content $f -AsByteStream -ReadCount 8MB

Set-Content $f -AsByteStream

Windows PowerShell 5.1

Get-Content $f -Encoding Byte -ReadCount 8MB

Set-Content $f -Encoding Byte

サーバー側の S3-to-S3 コピーの場合は、Copy-S3Object コマンドレットを使用します。

オブジェクトとプレフィックスを削除する

Remove-Item は 1 つのオブジェクトを削除します。プレフィックス (コンテンツを含むフォルダ) を削除するには、 が必要です。これにより-Recurse、その下にあるすべてがバッチで削除されます。

# Delete a single object Remove-Item S3:/amzn-s3-demo-bucket/notes/todo.txt # Delete a prefix and everything under it Remove-Item S3:/amzn-s3-demo-bucket/old-logs -Recurse

Remove-Item プロンプトがターゲットに依存するかどうか:

  • なしの 1 つのオブジェクト-Recurse: プロンプトなし。オブジェクトは削除されます。

  • プレフィックス。-Recurseプロンプトなし。プレフィックスのすべての が削除されます。

  • なしの空でないプレフィックス-Recurse: PowerShell は確認を求めます。これは、ファイルシステムプロバイダーの container-has-children の動作です。確認した場合、削除は繰り返されます。拒否した場合、何も削除されません。非インタラクティブホストでは、そのプロンプトはブロックされます。を渡-Recurseして、プロンプトを表示せずに続行します。

ネイティブ PowerShell スイッチを使用して、削除をプレビューまたはゲートします。

# Preview without deleting Remove-Item S3:/amzn-s3-demo-bucket/old-logs -Recurse -WhatIf # Ask for confirmation Remove-Item S3:/amzn-s3-demo-bucket/notes/todo.txt -Confirm
バージョニングが有効なバケットは以前のバージョンを保持します

Amazon S3 バージョニングが有効になっているバケットで、 は標準削除Remove-Itemを実行します。削除マーカーを追加し、現在のバージョンを非表示にしますが、保持され、引き続きストレージコストが発生する以前のバージョンは削除されません。バージョンを完全に削除するには、S3 コマンドレット (バージョン ID を持つ Remove-S3Object など) または Amazon S3 ライフサイクルルールを使用します。

Remove-Item - プロンプトを表示せずに削除を再帰する

Remove-Item -Recurse は、 と同様に、プロンプトなしでプレフィックスのすべてのオブジェクトを削除しますrm -r。バージョニングのないバケットでは、再帰的な削除は永続的です。バージョニングが有効なバケットでは、前のメモで説明したように削除マーカーを追加します。削除する内容が不明な場合は、-WhatIfまず を使用します。

バケットライフサイクルオペレーションは範囲外であるため、ドライブを介してバケット全体を削除することはできません。代わりに Remove-S3Bucket を使用します。

ドライブを 1 つのバケットまたはプレフィックスにスコープする

を使用してマウント-Rootし、ドライブをバケットまたはバケット内のプレフィックスに制限します。ドライブのルートはその場所になり、ナビゲーションはその下に限定されます。

# Mount rooted at a bucket: the drive root lists the bucket's top-level entries Mount-S3PSDrive -Name Data -Root amzn-s3-demo-bucket -ProfileName my-profile -Region us-east-1 Get-ChildItem Data:/ # top-level keys in amzn-s3-demo-bucket Get-Content Data:/reports/index.txt # -> amzn-s3-demo-bucket/reports/index.txt # Mount rooted at a bucket + prefix Mount-S3PSDrive -Name Reports -Root amzn-s3-demo-reports/2026 -ProfileName my-profile -Region us-east-1 Get-ChildItem Reports:/ # contents of amzn-s3-demo-reports/2026/

ルートは既に存在している必要があります。存在しないバケットまたはプレフィックスはマウントに失敗します。相対パスはルートを超えることができないため (.. エンジンによってブロックされます)、スコープ付きマウントを使用すると、1 つのプロジェクトのデータだけに焦点を当てたビューが得られます。

1 つのドライブからリージョン間でバケットにアクセスする

単一のマウントされたドライブは、リージョン間でバケットに到達できます。バケットに初めてタッチすると、プロバイダーはそのリージョンを検索し、後続の呼び出しを自動的に適切なエンドポイントにルーティングします。リージョンごとに個別のドライブは必要ありません。

# Mounted in us-east-1, but this bucket is in us-west-2 and commands work without extra configuration Mount-S3PSDrive -Name S3 -ProfileName my-profile -Region us-east-1 Get-ChildItem S3:/amzn-s3-demo-west-bucket Get-Content S3:/amzn-s3-demo-west-bucket/data/report.csv -Raw

デフォルトのストレージクラスを設定する

を使用して、マウント時にドライブ全体のデフォルトストレージクラスを設定します-StorageClass。そのドライブを介したすべてのアップロードは、特定の が独自の でSet-Content上書きしない限り、指定されたクラスを使用します-StorageClass。

# Set all uploads to default to STANDARD_IA Mount-S3PSDrive -Name Archive -ProfileName my-profile -Region us-east-1 -StorageClass STANDARD_IA Set-Content Archive:/amzn-s3-demo-bucket/cold/data.txt -Value '...' # STANDARD_IA Set-Content Archive:/amzn-s3-demo-bucket/hot/data.txt -Value '...' -StorageClass STANDARD # overrides to STANDARD

ドライブのアンマウント

Dismount-S3PSDrive ( のラッパーRemove-PSDrive) を使用してドライブを削除します。PowerShell は現在の場所であるドライブを削除しないため、最初に別の場所に変更します。

Set-Location $HOME # or C:\ on Windows Dismount-S3PSDrive -Name S3

サポートされているオペレーションとサポートされていないオペレーション

オブジェクトコンテンツを参照および移動するには、 ドライブを使用します。バケットのライフサイクルとサーバー側のコピーオペレーションは、専用の S3 コマンドレットに保持されます。

サポート対象

  • ナビゲーションとリスト: Set-Location、 Get-ChildItem ( を含む-Recurse)Get-Item、、Test-Path、タブ補完

  • コンテンツ: Get-Content (ダウンロード)、 Set-Content (アップロード)

  • 削除: Remove-Item (単一のオブジェクト、プレフィックスは -Recurse)

  • リストされた項目を Get-Contentと にパイプする Remove-Item

サポートされません

コマンド 代わりに使用する理由/内容

Copy-Item

S3-to-S3コピーは、ドライブを介して公開されません。サーバー側のコピーには Copy-S3Object を使用します。local-to-S3 または S3-to-local 転送の場合は、 をパイプしますGet-Content | Set-Content。

Move-Item, Rename-Item

S3 の名前は変更されません。コマンドレットを使用してコピーと削除を実行します。

New-Item (ディレクトリ)

S3 には実際のフォルダはありません。プレフィックスは、その下にオブジェクトを記述するときに表示されます。

Clear-Content, Add-Content

オブジェクトは によって全体に書き込まれますSet-Content。インプレース追加やクリアはありません。

Get-ItemProperty, Set-ItemProperty, Clear-ItemProperty

ドライブは PowerShell プロパティインターフェイスを実装していないため、これらのコマンドは、ドライブのメッセージではなく PowerShell エンジン独自のinterface-not-supportedエラーで失敗します。Get-ChildItem および がGet-Item返す項目には、Name、Type、Size、および のみが含まれますLastModified。S3 オブジェクトメタデータを読み取りまたは設定するには、Get-S3ObjectMetadata または Write-S3Object を使用します。

バケットの作成または削除

New-S3Bucket / Remove-S3Bucket を使用します。

サポートされていないコマンドは失敗し、コマンドに名前を付け、「Copy-Item is not supported by the S3 drive。Copy-S3Object を使用するか、Get-Content to Set-Content」をパイプします。*-ItemProperty コマンドは、前の表で説明したように例外です。

コマンドリファレンス

Mount-S3PSDrive と Dismount-S3PSDrive の完全なパラメータリストについては、AWS Tools for PowerShell 「 コマンドレットリファレンス」を参照してください。

S3 パスでは、ドライブは動的パラメータを に追加Get-ContentしSet-Content、それらのコマンドレットの PowerShell ドキュメントではカバーされません。

コマンド パラメータ

Get-Content

-AsByteStream, -Raw, -Encoding, -PartSize

Set-Content

-AsByteStream、-Encoding、-NoNewline、-StorageClass、 -PartSize (「」を参照非常に大きなオブジェクトをアップロードする)

トラブルシューティング

「使用中のため、ドライブをアンマウントできません。」

S3 ドライブは現在の場所です。を などの別のドライブ上の場所に変更し$HOME、もう一度実行Dismount-S3PSDriveします。

「ルートが見つからなかったか、到達できません」でマウントが失敗します。

のバケットまたはプレフィックスが存在し-Rootません。名前 (およびバケットが認証情報がデフォルトではないリージョンにある場合はリージョン) を確認します。認証情報に障害が発生すると、この「到達できない」メッセージではなく、別のエラーが発生します。ルートのアクセス許可エラーは、オブジェクトにアクセスするまで表示されない可能性があるため、成功したマウントでは、ルートのすべてのパスを読み取ることができるとは限りません。

空でないプレフィックスを削除すると、スクリプトでハングします。

これは、 なしで空でないプレフィックスを削除した場合に発生します-Recurse。PowerShell エンジンは、プレフィックスに子 (ファイルシステムプロバイダーの container-has-children 動作) があるため、確認プロンプトを生成します。非インタラクティブホストはプロンプトに応答できないため、コマンドはブロックします。

を渡-Recurseしてプロンプトを表示せずにプレフィックスの内容を削除するか、インタラクティブに確認して続行します (-Force はドライブの削除パスでは参照されないため、ここでは効果がありません)。

「ドライブの外で先ほど変更したオブジェクトには、古いリストがまだ表示されます。」

リストは、ナビゲーションを高速化するために短時間 (約 1 秒) キャッシュされます。ドライブを通じて行われた変更は、すぐに表示されます。別のツールによって行われた変更は、ショートキャッシュの有効期限が切れた後に表示されます。

「キーにはバックスラッシュが含まれています。」

ドライブはプラットフォームのネイティブパス区切り文字を受け入れるため、ドライブがバックスラッシュを含むキーに対応できるかどうかはオペレーティングシステムによって異なります。

  • Windows - \はパス区切り文字であるため、ドライブはこれを 1 つとして読み取り、 に正規化します/。リテラルバックスラッシュを含むキーは、ドライブを介してアドレス指定することはできません。代わりに、Get-S3Object や Read-S3Object などの S3 コマンドレットを使用します。 Get-S3Object

  • Linux および macOS - /パス区切り文字のみです。バックスラッシュはキーの通常の文字であるため、ドライブは通常これらのキーに対処します。