AWS Tools for PowerShell バージョン 4 からバージョン 5 への移行 - AWS Tools for PowerShell (バージョン 5)

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

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

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

AWS Tools for PowerShell バージョン 4 からバージョン 5 への移行

AWS Tools for PowerShell バージョン 5 (V5) には重大な変更があるため、既存のスクリプトが機能しなくなる可能性があります。このトピックでは、V5 の重大な変更と、V4 から環境またはコードを移行するために必要となる可能性のある作業について説明します。

の注目すべき変更の詳細については、以下のリソース AWS Tools for PowerShell も参照してください。

注記

は AWS Tools for PowerShell に依存するため AWS SDK for .NET、SDK の V4 に関連する変更の一部は Tools for PowerShell の V5 にも影響する可能性があります。の V4 で何が変更されたかを確認するには AWS SDK for .NET、「 AWS SDK for .NET デベロッパーガイド」の「移行情報」を参照してください。

PowerShell の最小バージョン

AWSPowerShell AWS Tools for PowerShellと呼ばれるレガシーの Windows 固有のシングルラージモジュールバージョンでは、モジュールのサポートされている最小 PowerShell バージョンが 5.1 に更新されました。これは、.NET Framework 4.7.2 AWS SDK for .NET の新しい最小バージョンと一致するためです。

レガシー AWSPowerShell モジュールの詳細については、「」を参照してくださいWindows でのインストール

AWS.Tools V4 のインストールまたは更新

AWS Tools for PowerShellと呼ばれる のモジュール化されたバージョンをインストールまたは更新する場合AWS.Tools、 コマンドレットInstall-AWSToolsModuleと コマンドレットはAWS.Toolsデフォルトで のバージョン 5 Update-AWSToolsModule を使用します。何らかの理由で のバージョン 4 をインストールまたは更新する必要がある場合はAWS.Tools、それぞれ次のコマンドを使用して更新できます。

Install-AWSToolsModule -MaximumVersion '4.9.999' Update-AWSToolsModule -MaximumVersion '4.9.999'

Tools for PowerShell のインストールと更新の詳細については、「」を参照してください。 はじめに

CTRL+C および CMD+C を使用してコマンドレット実行をキャンセルする

のバージョン 5 AWS Tools for PowerShell では、Ctrl+C や CMD+C などのキーボードショートカットを使用して、コマンドレットの実行をキャンセルできます。

Nullable 値型

から採用されたタイプ AWS SDK for .NET は、SDK の新しい NULL 可能な変更を使用するように更新されました。たとえば、 タイプのプロパティintが に変更されましたNullable[int]。この変更は、AWS コマンドレットの入力パラメータ値を指定する方法には影響しません。これらの値タイプのパラメータはすでに nullable としてモデル化されているためです。ただし、コマンドレット出力の NULL 可能な型は重大な変更です。コマンドレット出力内のプロパティには、型のさまざまなデフォルト値$nullの代わりに が含まれるためです。

次の例は、Tools for PowerShell の V4 の動作を示しています。この例では、 MissingMetaプロパティは 型のデフォルト値であるため、0 に設定されていますint

# In V4 PS > Get-S3ObjectMetadata -BucketName amzn-s3-demo-bucket -Key 'test' | >> Select LastModified, MissingMeta, ObjectLockRetainUntilDate, BucketKeyEnabled LastModified MissingMeta ObjectLockRetainUntilDate BucketKeyEnabled ------------ ----------- ------------------------- ---------------- 8/29/2023 10:20:44 PM 0 1/1/0001 12:00:00 AM

次の例は、 Tools for PowerShell の V5 の動作を示しています。この例では、 MissingMetaプロパティは に設定されています$null

# In V5 PS > Get-S3ObjectMetadata -BucketName amzn-s3-demo-bucket -Key 'test' | >> Select LastModified, MissingMeta, ObjectLockRetainUntilDate, BucketKeyEnabled LastModified MissingMeta ObjectLockRetainUntilDate BucketKeyEnabled ------------ ----------- ------------------------- ---------------- 8/29/2023 10:20:44 PM

ほとんどの場合、PowerShell には null 可能な値型から null 不可能な値型への暗黙的な変換があるため、コードの変更は必要ありません。ただし、これは NULL 可能な値タイプのデフォルト値を明示的にチェックする比較ロジックコードの重大な変更です。null 不可能なタイプのデフォルト値をチェックする比較ロジックは、 をチェックするように変更する必要があります$null

これらのタイプの一部について、次の例は、何も返されなかったかどうかを確認する V4 用に記述されたコードを更新する方法を示しています。

#Type int: # In V4, if you were checking whether an int is 0... if($s3Metadata.MissingMeta -eq 0){} # In V5, check if the int is null instead: if($s3Metadata.MissingMeta -eq $null) {} # Type datetime: # In V4, if you were checking whether a datetime is '0001-01-01'... if($s3Metadata.ObjectLockRetainUntilDate -eq '0001-01-01'){} # In V5, check if the datetime is null instead: if($s3Metadata.ObjectLockRetainUntilDate -eq $null){} # Type boolean: # In V4, if you were checking whether a boolean is $false... if($s3Metadata.BucketKeyEnabled -eq $false){} # In V5, check if the boolean is null instead: if($s3Metadata.BucketKeyEnabled -eq $null)

は AWS Tools for PowerShell に依存するため AWS SDK for .NET、同様の変更が SDK のバージョン 4 にどのように影響したかを調べると役立つ場合があります。この情報を確認するには、「 AWS SDK for .NET デベロッパーガイド」の「Value types migration content」を参照してください。

コレクション

一部のコマンドレット出力は、タイプ Listまたは の空のコレクション$nullではなく、 を返すように変更されましたDictionary。レガシー動作に戻す方法などの詳細については、「 AWS SDK for .NET デベロッパーガイド」の「 コレクションの移行コンテンツ」を参照してください。

DateTime と UTC DateTime

一部の V4 コマンドレットは、廃止された DateTime パラメータと代替の UTC DateTime パラメータを定義します。これらの古い DateTime パラメータは V5 コマンドレットから削除され、UTC DateTime パラメータの名前は UTC DateTime 以外のパラメータの元の名前に変更されました。

この変更が実装されたコマンドレットの例を次に示します。

  • Get-ASScheduledAction (V4 コマンドレットV5 コマンドレット):

    • StartTime パラメータが削除され、UtcStartTimeパラメータの名前がStartTime」に変更されました。

    • EndTime パラメータが削除され、UtcEndTimeパラメータの名前がEndTime」に変更されました。

  • Copy-S3Object (V4 コマンドレットV5 コマンドレット):

    • ModifiedSinceDate パラメータが削除され、UtcModifiedSinceDateパラメータの名前がModifiedSinceDate」に変更されました。

    • UnmodifiedSinceDate パラメータが削除され、UtcUnmodifiedSinceDateパラメータの名前がUnmodifiedSinceDate」に変更されました。

この変更の影響を受けるコマンドレットの完全なリストを次に示します。

パイプラインと $AWSHistory

V4 AWS Tools for PowerShell より前のバージョンの では、コマンドレット呼び出しと、呼び出しごとに受信したサービス応答の記録を保持する AWS というセッション変数が導入され$AWSHistoryました。

Tools for PowerShell の V4 では、このセッション変数は、サービスレスポンス全体を返すために使用できる -Select *パラメータと 引数を優先して廃止されました。-Select * パラメータについては、「」を参照してくださいパイプライン、出力、イテレーション

Tools for PowerShell の V5 では、$AWSHistoryセッション変数が完全に削除されました。その結果、 Set-AWSHistoryConfiguration コマンドレットClear-AWSHistoryと コマンドレットも削除されました。

-PassThru パラメータ

-PassThru パラメータは削除されました。コマンドレットがデフォルトで出力を返さない場合、ユーザーは を使用して返されたパラメータ値をリクエストできます-Select ^ParameterName。詳細と例については、ブログ記事V5 の AWS Tools for PowerShell プレビュー 1」を参照してください。

一部の DynamoDB コマンドレットが移動および名前変更されました

コマンドレットGet-DDBStreamGet-DDBStreamList コマンドレットが DynamoDBV2 モジュールから DynamoDBStreams と呼ばれる新しいモジュールに移動されました。また、それぞれ Get-DDBSStream と GetGet-DDBSStreamListに名前が変更されました。

機密情報のログ記録

ログ記録の動作が変更され、特に CI/CD 状況では、機密情報がコマンドレット出力に含まれる可能性が低くなりました。V4 の動作に戻す方法の詳細と手順については、「」を参照してください機密情報のログ記録

認証情報とプロファイルの解決

コマンドレットの認証情報を解決するときに特定の環境変数を使用するように が更新され AWS Tools for PowerShell ました: AWS_PROFILEAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY、および AWS_SESSION_TOKEN。さらに、認証情報とプロファイルの解決順序にいくつかの変更があります。詳細については、「認証情報とプロファイルの解決」を参照してください。

認証情報エラーメッセージ

適切な認証情報を取得できない場合に が AWS Tools for PowerShell 返すエラーメッセージが変更されました。

ツールの v4 では、メッセージは次のようになります。

Get-SFNExecutionList -Region us-west-2 Get-SFNExecutionList: No credentials specified or obtained from persisted/shell defaults.

ツールの V5 では、代わりにメッセージは次のようになります。

Get-SFNExecutionList -Region us-west-2 Get-SFNExecutionList: Failed to resolve AWS credentials. The credential providers used to search for credentials returned the following errors: ... <list of specific exceptions>

一貫した自動反復

ページ分割されたコマンドレットはすべて、デフォルトですべてのデータを自動反復するように更新されました。Set-AWSAutoIterationMode コマンドレットを使用して、この動作を元に戻すことができます。を実行するとSet-AWSAutoIterationMode -IterationMode v4、v4 で自動反復されたオペレーションは引き続き自動反復されますが、残りは手動反復に戻ります。自動反復がどのモードに設定されているかを判断するには、Get-AWSAutoIterationMode コマンドレットを使用します。

この方法で更新されたコマンドレットの例を確認するには、Get-CWLLogEvent「 コマンドレット (V4 コマンドレットV5 コマンドレット)」を参照してください。

自動反復の詳細については、「」を参照してくださいページ分割されたデータによる反復処理

S3 コマンドレットの廃止と置き換え

Amazon S3 では、Get-S3ACL コマンドレットと Set-S3ACL コマンドレットは廃止されました。代わりに、GetGet-S3BucketACLSet-S3BucketACLGet-S3ObjectACLSet-S3ObjectACL の新しいコマンドレットを使用します。

S3 キーパラメータのクリーニングとトリミング

特定の Amazon S3 コマンドレットは、 Keyおよび という名前のパラメータを受け入れますKeyPrefix。の V4 AWS Tools for PowerShell は、先頭のスペース、スラッシュ (「/」)、バックスラッシュ (「」) の削除、他のすべてのバックスラッシュのスラッシュへの変換、末尾のスペースの削除の方法でこれらのパラメータをクリーンアップおよびトリミングします。Tools for PowerShell の V5 では、これはデフォルトの動作ではなくなりました。この動作に戻すには、 -EnableLegacyKeyCleaningパラメータを指定します。

この情報は、次のコマンドレットに適用されます。

インタラクティブセッション機能

AWS CLI 動作に沿ったインタラクティブセッション機能が Start-SSMSession コマンドレットに追加されました。例:

Start-SSMSession -Target 'i-1234567890abcdef0'

レガシー動作が必要な場合は、 Start-SSMSession コマンドに -DisablePluginInvocationパラメータを含めます。

CloudWatch アラーム

Get-CWAlarm コマンドレットは、デフォルトでメトリクスアラームと複合 Amazon CloudWatch アラームの両方を返すように更新されました。出力をメトリクスアラームまたは複合アラームに制限するには、-AlarmTypeパラメータ Get-CWAlarm -AlarmType 'MetricAlarms'または Get-CWAlarm -AlarmType 'CompositeAlarms'をそれぞれ指定する必要があります。

LitJson

AWS Tools for PowerShell は、シリアル化System.Text.JsonLitJsonではなく を使用するように更新されました。 LitJsonはツールの V5 から削除されています。

LoggedAt 出力プロパティ

LoggedAt 出力プロパティが削除されました。ツールの V4 では、このプロパティは一部のコマンドレット ( Get-SSMCommandInvocationDetailや など) でデフォルトで返されましたInvoke-LMFunction

LoggedAt 出力プロパティによって提供された情報をレプリケートする必要がある場合は、次のような情報をスクリプトに含めることができます。

$loggedAt = (Get-Date).ToUniversalTime().ToString('s')

削除された要素のプログラミング

Tools for PowerShell の V5 から多くのプログラミング要素が削除されました。これらは、以前に説明されていない場合は、削除に対応するために実行できる潜在的な手順とともに、以下に一覧表示されます。

  • Invoke-LMFunctionAsync コマンドレット。

  • Get-EC2ImageByName コマンドレット。代わりに Get-SSMLatestEC2Image コマンドレットを使用します。

  • Write-S3Object コマンドレットの CalculateContentMD5Headerパラメータ。