AWS Tools for PowerShell バージョン 5 (V5) はプレビュー版であるため、このコンテンツは変更される可能性があります。重大な変更、インストール、移行については、移行トピックを参照してください。リリースされたコンテンツについては、代わりにバージョン 4 ユーザーガイドを参照してください。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
でのパイプライン、出力、および反復 AWS Tools for PowerShell
パイプライン
PowerShell では、1 つのコマンドレットの出力を次のコマンドレットの入力に誘導するパイプライン
PS >
Get-EC2Instance | Stop-EC2Instance
コマンドレット出力
パイプライン処理をより適切にサポートするために、 のレスポンスの一部のデータはデフォルトで破棄 AWS SDK for .NET される場合があります。 AWS Tools for PowerShell コマンドレットからの出力は、出力されたコレクションオブジェクトのNote
プロパティとしてサービスレスポンスと結果インスタンスを含めるように再形成されません。代わりに、出力として単一のコレクションを送信する呼び出しについては、コレクションが PowerShell パイプラインに列挙されるようになりました。つまり、SDK レスポンスと結果データは、アタッチできるコレクションオブジェクトが含まれていないため、パイプラインに存在できません。
ほとんどのユーザーはおそらくこのデータを必要としませんが、 コマンドレットによって行われた基盤となる AWS サービス呼び出しとの間で送受信された内容を正確に確認できるため、診断目的で役立ちます。コマンドレットは、 -Select *
パラメータと 引数を使用してサービスレスポンス全体を返すことができます。
レスポンスのすべてのデータを返す方法を説明するために、次の例を検討してください。
最初の例では、Amazon S3 バケットのリストを返します。これがデフォルトの動作です。
PS >
Get-S3Bucket
CreationDate BucketName ------------ ---------- 9/22/2023 10:54:35 PM amzn-s3-demo-bucket1 9/22/2023 11:04:37 AM amzn-s3-demo-bucket2 9/22/2023 12:54:34 PM amzn-s3-demo-bucket3
2 番目の例では、 AWS SDK for .NET レスポンスオブジェクトを返します。-Select *
が指定されているため、出力には API レスポンス全体が含まれ、これには Buckets
プロパティ内のバケットのコレクションが含まれます。この例では、Format-List
コマンドレットは必須ではありませんが、すべてのプロパティが表示されるように存在します。
PS >
Get-S3Bucket -Select * | Format-List
LoggedAt : 10/1/2023 9:45:52 AM Buckets : {amzn-s3-demo-bucket1, amzn-s3-demo-bucket2, amzn-s3-demo-bucket3} Owner : Amazon.S3.Model.Owner ContinuationToken : ResponseMetadata : Amazon.Runtime.ResponseMetadata ContentLength : 0 HttpStatusCode : OK
ページ分割されたデータによる反復処理
以下のセクションでは、可能なさまざまなタイプの反復について説明します。
自動イテレーション
特定の呼び出しに対して返されるオブジェクトのデフォルトの最大数を課すサービス APIs、またはページ分割可能な結果セットをサポートするサービス API の場合、ほとんどのコマンドレットは自動反復を実装し、page-to-completion」のデフォルトの動作を有効にします。このシナリオでは、コマンドレットはユーザーに代わって必要な数だけ呼び出しを行い、完全なデータセットをパイプラインに返します。
コマンドGet-S3Object
レットを使用する次の例では、 $result
変数に という名前のバケット内のすべてのキーのS3Object
インスタンスが含まれています。これはamzn-s3-demo-bucket1
、非常に大きなデータセットである可能性があります。
PS >
$result = Get-S3Object -BucketName amzn-s3-demo-bucket1
次の例では、自動反復中の各ページの結果の数をデフォルト値の 1000 から 500 に減らします。この例では、自動反復呼び出しの 2 倍の数を実行します。これは、呼び出しごとに返される結果の数は半分に過ぎないためです。
PS >
$result = Get-S3Object -BucketName amzn-s3-demo-bucket1 -MaxKey 500
注記
ページ分割オペレーションのコマンドレットの中には、自動反復を実装しないものがあります。コマンドレットに次のセクションで説明する -NoAutoIteration
パラメータがない場合、自動反復は実装されません。
自動反復を無効にする
Tools for PowerShell がデータの最初のページのみを返すようにする場合は、 -NoAutoIteration
パラメータを追加して、データの追加ページが返されないようにできます。
次の例では、 -NoAutoIteration
および -MaxKey
パラメータを使用して、返されるS3Object
インスタンスの数をバケット内の最初の 500 個以下に制限します。
PS >
$result = Get-S3Object -BucketName amzn-s3-demo-bucket1 -MaxKey 500 -NoAutoIteration
より多くのデータが使用可能で返されなかったかどうかを判断するには、 -Select *
パラメータと 引数を使用して、次のトークンプロパティに値があるかどうかを確認します。
次の例では$true
、バケットに 500 個を超えるオブジェクトがある場合は を返します。$false
それ以外の場合は を返します。
PS >
$result = Get-S3Object -BucketName amzn-s3-demo-bucket1 -MaxKey 500 -NoAutoIteration -Select *
PS >
$null -eq $result.NextMarker
注記
次のトークンレスポンスプロパティとコマンドレットパラメータの名前は、コマンドレットによって異なります。詳細については、各コマンドレットのヘルプドキュメントを参照してください。
手動イテレーション
次の例では、各反復後に条件を評価する dodo
ループは、 Get-S3Object
が $result.NextMarker
に設定されるまで反復を実行し$null
、ページ分割されたデータが残っていないことを示します。ループの出力は $s3Objects
変数に割り当てられます。
$s3Objects = do { $splatParams = @{ BucketName = 'amzn-s3-demo-bucket1' MaxKey = 500 Marker = $result.NextMarker NoAutoIteration = $true Select = '*' } $result = Get-S3Object @splatParams $result.S3Objects } while ($null -ne $result.NextMarker)
この例では、PowerShell スプラッティング