翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Tools for PowerShell バージョン 3.3 からバージョン 4 への移行
AWS Tools for PowerShell バージョン 4 は、 AWS Tools for PowerShell バージョン 3.3 への下位互換性のある更新です。既存のコマンドレットの動作を維持しながら、大幅な機能強化を追加します。
既存のスクリプトは、新しいバージョンにアップグレードした後も引き続き動作しますが、本番環境をアップグレードする前に十分にテストすることをお勧めします。
このセクションでは、変更点を示し、これらがスクリプトに与える影響について説明します。
完全モジュール化された新しい AWS.Tools
バージョン
AWSPowerShell.NetCore and AWSPowerShell パッケージは「モノリシック」でした。つまり、すべての AWS サービスが同じモジュールでサポートされていたため、非常に大きくなり、新しい AWS サービスや機能が追加されたたびに大きくなります。新しいAWS.Tools
パッケージは、使用する AWS サービスに必要なものだけを柔軟にダウンロードしてインストールできる小さなモジュールに分割されています。パッケージには、他のすべてのモジュールと共有される必須の AWS.Tools.Common
モジュールと、必要に応じてモジュールのインストール、更新、および削除を簡素化するための AWS.Tools.Installer
モジュールが含まれています。
これにより、最初に Import-module
を呼び出すことなく、最初の呼び出しでコマンドレットを自動的にインポートできます。ただし、関連付けられた .NET オブジェクトを操作するには、コマンドレットを呼び出す前に、 を呼び出しImport-Module
て、関連する .NET タイプについて PowerShell 知らせる必要があります。
たとえば、次のコマンドには Amazon.EC2.Model.Filter
への参照があります。このタイプの参照は自動インポートをトリガーできないため、Import-Module
を最初に呼び出さないと、コマンドは失敗します。
PS >
$filter = [Amazon.EC2.Model.Filter]@{Name="vpc-id";Values="vpc-1234abcd"}
InvalidOperation: Unable to find type [Amazon.EC2.Model.Filter].
PS >
Import-Module AWS.Tools.EC2
PS >
$filter = [Amazon.EC2.Model.Filter]@{Name="vpc-id";Values="vpc-1234abcd"}
PS >
Get-EC2Instance -Filter $filter -Select Reservations.Instances.InstanceId
i-0123456789abcdefg i-0123456789hijklmn
新しい Get-AWSService
コマンドレット
モジュールのAWS.Tools
コレクション内の各 AWS サービス用のモジュール名を見つけるには、 Get-AWSService
コマンドレットを使用できます。
PS >
Get-AWSService
Service : ACMPCA CmdletNounPrefix : PCA ModuleName : AWS.Tools.ACMPCA SDKAssemblyVersion : 3.3.101.56 ServiceName : Certificate Manager Private Certificate Authority Service : AlexaForBusiness CmdletNounPrefix : ALXB ModuleName : AWS.Tools.AlexaForBusiness SDKAssemblyVersion : 3.3.106.26 ServiceName : Alexa For Business ...
コマンドレットから返されるオブジェクトを制御するための新しい -Select
パラメータ
バージョン 4 のほとんどのコマンドレットは、新しい -Select
パラメータをサポートしています。各コマンドレットは AWS 、 を使用して APIs サービスを呼び出します AWS SDK for .NET。次に、 AWS Tools for PowerShell クライアントはレスポンスを PowerShell スクリプトで使用できるオブジェクトに変換し、他のコマンドにパイプします。最終 PowerShell オブジェクトには、元のレスポンスに必要な数よりも多くのフィールドまたはプロパティがある場合もあれば、デフォルトでは含まれていないレスポンスのフィールドまたはプロパティをオブジェクトに含める必要がある場合もあります。-Select
パラメータを使用すると、 コマンドレットによって返される .NET オブジェクトに含まれるものを指定できます。
例えば、 Get-S3Object コマンドレットは Amazon S3 SDKオペレーション を呼び出しますListObjects。このオペレーションはListObjectsResponseオブジェクトを返します。ただし、デフォルトでは、Get-S3Object
コマンドレットはSDKレスポンスの S3Objects
要素のみを PowerShell ユーザーに返します。次の例では、そのオブジェクトは 2 つの要素を持つ配列です。
PS >
Get-S3Object -BucketName
amzn-s3-demo-bucket
ETag : "01234567890123456789012345678901111" BucketName :
amzn-s3-demo-bucket
Key : file1.txt LastModified : 9/30/2019 1:31:40 PM Owner : Amazon.S3.Model.Owner Size : 568 StorageClass : STANDARD ETag : "01234567890123456789012345678902222" BucketName :amzn-s3-demo-bucket
Key : file2.txt LastModified : 7/15/2019 9:36:54 AM Owner : Amazon.S3.Model.Owner Size : 392 StorageClass : STANDARD
AWS Tools for PowerShell バージョン 4 では、 -Select *
を指定して、SDKAPI呼び出しによって返される完全な .NET レスポンスオブジェクトを返すことができます。
PS >
Get-S3Object -BucketName
amzn-s3-demo-bucket
-Select *IsTruncated : False NextMarker : S3Objects : {file1.txt, file2.txt} Name :
amzn-s3-demo-bucket
Prefix : MaxKeys : 1000 CommonPrefixes : {} Delimiter :
特定のネストされたプロパティへのパスを指定することもできます。次の例では、S3Objects
配列内の各要素の Key
プロパティのみを返します。
PS >
Get-S3Object -BucketName
amzn-s3-demo-bucket
-Select S3Objects.Keyfile1.txt file2.txt
状況によっては、コマンドレットパラメータを返すと便利です。そのためには、-Select ^ParameterName
を使用します。この機能は、-PassThru
パラメータに代わるものです。このパラメータはまだ使用可能ですが、非推奨です。
PS >
Get-S3Object -BucketName
amzn-s3-demo-bucket
-Select S3Objects.Key |>>
Write-S3ObjectTagSet -Select ^Key -BucketName
amzn-s3-demo-bucket
-Tagging_TagSet @{ Key='key'; Value='value'}file1.txt file2.txt
各コマンドレットの参照トピックは、-Select
パラメータをサポートしているかどうかを示します。
より一貫した方法による出力内の項目数の制限
以前のバージョンの AWS Tools for PowerShell では、 -MaxItems
パラメータを使用して、最終出力で返されるオブジェクトの最大数を指定できます。
この動作は AWS.Tools
から削除されています。
この動作は AWSPowerShell. NetCore および では廃止され AWSPowerShell、今後のリリースではこれらのバージョンから削除されます。
基盤となるサービスが MaxItems
パラメータAPIをサポートしている場合、引き続き使用可能であり、 がAPI指定します。ただし、コマンドレットの出力で返される項目の数を制限する追加動作はなくなりました。
最終出力で返される項目の数を制限するには、出力を Select-Object
コマンドレットにパイプし、 -First
パラメータを指定します。ここで、n
n
は、最終出力に含めるアイテムの最大数です。
PS >
Get-S3ObjectV2 -BucketName
amzn-s3-demo-bucket
-Select S3Objects.Key | select -first 2file1.txt file2.txt
すべての AWS サービス-MaxItems
が同じ方法でサポートされているわけではないため、この不整合と、ときに発生した予期しない結果を削除します。また、-MaxItems
と新しい -Select パラメータと組み合わせて使用すると、混乱する結果が生じることがあります。
ストリームパラメータの使用の容易化
Stream
タイプまたは string
タイプのパラメータが、string[]
、FileInfo
、byte[]
の各値を受け入れるようになりました。
次のいずれかの例を使用できます。
PS >
Invoke-LMFunction -FunctionName MyTestFunction -PayloadStream '{
>>
"some": "json"
>>
}'
PS >
Invoke-LMFunction -FunctionName MyTestFunction -PayloadStream (ls .\some.json)
PS >
Invoke-LMFunction -FunctionName MyTestFunction -PayloadStream @('{', '"some": "json"', '}')
AWS Tools for PowerShell は、UTF-8 エンコーディングbyte[]
を使用して、すべての文字列を に変換します。
プロパティ名によるパイプの拡張
ユーザーエクスペリエンスをより一貫させるために、任意のパラメータにプロパティ名を指定して、パイプライン入力を渡すことができるようになりました。
次の例では、ターゲットコマンドレットのパラメータ名と一致する名前を持つプロパティを持つカスタムオブジェクトを作成します。コマンドレットを実行すると、これらのプロパティが自動的にパラメータとして使用されます。
PS >
[pscustomobject] @{ BucketName='
amzn-s3-demo-bucket
'; Key='file1.txt'; PartNumber=1 } | Get-S3ObjectMetadata
注記
一部のプロパティは、以前のバージョンの でこれをサポートしていました AWS Tools for PowerShell。バージョン 4 では、これをすべてのパラメータで有効にすることで、より一貫させています。
一般的な静的パラメータ
バージョン 4.0 の一貫性を向上させるために AWS Tools for PowerShell、すべてのパラメータは静的です。
以前のバージョンの では AWS Tools for PowerShell、Region
、、AccessKey
SecretKey
、 ProfileName
などの一般的なパラメータの一部は動的
PS >
Get-EC2Region -Region us-west-2
以前のバージョンの は、-Region
動的パラメータではなく-RegionName
静的パラメータus-west-2
に値を PowerShell バインドしました。これも、ユーザーの混乱につながる可能性があります。
AWS.Tools
による必須パラメータの宣言と適用
AWS.Tools.*
モジュールは、必須のコマンドレットパラメータを宣言して適用するようになりました。 AWS サービスAPIが のパラメータが必要であると宣言すると、 はそれを指定しなかった場合、対応する コマンドレットパラメータを PowerShell プロンプトします。これは AWS.Tools
にのみ適用されます。下位互換性を確保するために、これは AWSPowerShell. NetCore または には適用されません AWSPowerShell。
すべてのパラメータが NULL を使用可能
値タイプパラメータ (数値と日付) に $null
に割り当てることができるようになりました。この変更は、既存のスクリプトには影響しません。これにより、必須パラメータを要求するプロンプトをバイパスできます。必須パラメータは、AWS.Tools
でのみ要求されます。
バージョン 4 を使用して次の例を実行すると、各必須パラメータに「値」を指定するため、クライアント側の検証は効果的にバイパスされます。ただし、Amazon EC2APIサービスの呼び出しは失敗します。これは AWS 、サービスが引き続きその情報を必要とするためです。
PS >
Get-EC2InstanceAttribute -InstanceId $null -Attribute $null
WARNING: You are passing $null as a value for parameter Attribute which is marked as required. In case you believe this parameter was incorrectly marked as required, report this by opening an issue at https://github.com/aws/aws-tools-for-powershell/issues. WARNING: You are passing $null as a value for parameter InstanceId which is marked as required. In case you believe this parameter was incorrectly marked as required, report this by opening an issue at https://github.com/aws/aws-tools-for-powershell/issues. Get-EC2InstanceAttribute : The request must contain the parameter instanceId
以前の非推奨機能の削除
以前の リリースでは以下の機能は廃止 AWS Tools for PowerShell され、バージョン 4 では削除されました。
-
Stop-EC2Instance
コマンドレットから-Terminate
パラメータを削除しました。代わりにRemove-EC2Instance
を使用します。 -
Clear-AWSCredential コマンドレットから
-ProfileName
パラメータを削除しました。代わりにRemove-AWSCredentialProfile
を使用します。 -
Import-EC2Instance
コマンドレットとImport-EC2Volume
コマンドレットを削除しました。