Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
AWS Strumenti per PowerShell la versione 4 è un aggiornamento retrocompatibile alla versione 3.3. AWS Strumenti per PowerShell Aggiunge miglioramenti significativi pur mantenendo il comportamento dei cmdlet esistenti.
Gli script esistenti dovrebbero continuare a funzionare dopo l'aggiornamento alla nuova versione, ma si consiglia di verificarli accuratamente prima di eseguire l'aggiornamento agli ambienti di produzione.
Questa sezione descrive le modifiche e spiega come potrebbero influire sugli script.
Nuova versione AWS.Tools
completamente modularizzata
La Shell. AWSPower NetCore e i pacchetti AWSPower Shell erano «monolitici». Ciò significava che tutti i AWS servizi erano supportati nello stesso modulo, il che lo rendeva molto grande e cresceva man mano che venivano aggiunti nuovi AWS servizi e funzionalità. Il nuovo AWS.Tools
pacchetto è suddiviso in moduli più piccoli che offrono la flessibilità di scaricare e installare solo quelli necessari per i AWS servizi utilizzati. Il pacchetto include un modulo AWS.Tools.Common
condiviso richiesto da tutti gli altri moduli e un modulo AWS.Tools.Installer
che semplifica l'installazione, l'aggiornamento e la rimozione dei moduli secondo necessità.
Ciò consente anche l'importazione automatica dei cmdlet alla prima chiamata, senza dover effettuare la prima chiamata Import-module
. Tuttavia, per interagire con gli oggetti.NET associati prima di chiamare un cmdlet, è comunque necessario chiamare Import-Module
per comunicare i PowerShell tipi.NET pertinenti.
Ad esempio, il comando seguente ha un riferimento a Amazon.EC2.Model.Filter
. Questo tipo di riferimento non può attivare l'importazione automatica, quindi è necessario chiamare prima Import-Module
o il comando fallisce.
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
Nuovo cmdlet Get-AWSService
Per facilitare l'individuazione dei nomi dei moduli per ogni AWS servizio nell'AWS.Tools
insieme di moduli, è possibile utilizzare il Get-AWSService
cmdlet.
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 ...
Nuovo parametro -Select
per controllare l'oggetto restituito da un cmdlet
La maggior parte dei cmdlet nella versione 4 supporta un nuovo parametro -Select
. Ogni cmdlet chiama il AWS
servizio automaticamente utilizzando APIs . AWS SDK per .NET Il AWS Strumenti per PowerShell client converte quindi la risposta in un oggetto che è possibile utilizzare negli PowerShell script e reindirizzare ad altri comandi. A volte l' PowerShell oggetto finale ha più campi o proprietà nella risposta originale del necessario e altre volte potresti volere che l'oggetto includa campi o proprietà della risposta che non sono presenti per impostazione predefinita. Il parametro -Select
consente di specificare gli elementi inclusi nell'oggetto.NET restituito dal cmdlet.
Ad esempio, il Get-S3Objectcmdlet richiama l'operazione SDK Amazon S3. ListObjects Tale operazione restituisce un oggetto. ListObjectsResponse Tuttavia, per impostazione predefinita, il Get-S3Object
cmdlet restituisce all'utente solo l'S3Objects
elemento della risposta SDK. PowerShell Nell'esempio seguente, tale oggetto è un array con due elementi.
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
Nella AWS Strumenti per PowerShell versione 4, è possibile specificare di -Select *
restituire l'oggetto di risposta.NET completo restituito dalla chiamata API SDK.
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 :
È inoltre possibile specificare il percorso della proprietà nidificata specifica desiderata. L'esempio seguente restituisce solo la proprietà Key
di ciascun elemento della matrice S3Objects
.
PS >
Get-S3Object -BucketName
amzn-s3-demo-bucket
-Select S3Objects.Keyfile1.txt file2.txt
In alcune situazioni può essere utile restituire un parametro cmdlet. Tale operazione può essere eseguita con -Select ^ParameterName
. Questa funzione sostituisce il parametro -PassThru
, che è ancora disponibile ma deprecato.
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
L' argomento di riferimento per ogni cmdlet consente di identificare se supporta il parametro -Select
.
Limitazione più coerente del numero di elementi nell'output
Le versioni precedenti di AWS Strumenti per PowerShell consentivano di utilizzare il -MaxItems
parametro per specificare il numero massimo di oggetti restituiti nell'output finale.
Questo comportamento è stato rimosso da AWS.Tools
.
Questo comportamento è obsoleto in Shell. AWSPower NetCore e AWSPower Shell, e verranno rimossi da tali versioni in una versione futura.
Se l'API del servizio sottostante supporta un parametro MaxItems
, è ancora disponibile e funziona come specificato dall'API. Ma non ha più il comportamento ulteriore di limitare il numero di elementi restituiti nell'output del cmdlet.
Per limitare il numero di elementi restituiti nell'output finale, reindirizzate l'output al Select-Object
cmdlet e specificate il -First
parametro, dove n
n
è il numero massimo di elementi da includere nell'output finale.
PS >
Get-S3ObjectV2 -BucketName
amzn-s3-demo-bucket
-Select S3Objects.Key | select -first 2file1.txt file2.txt
Non tutti i AWS servizi sono supportati -MaxItems
allo stesso modo, quindi questo elimina l'incoerenza e i risultati imprevisti che a volte si verificavano. Inoltre, -MaxItems
in combinazione con il nuovo parametro -Select a volte potrebbe portare a risultati confusi.
Parametri di flusso più facili da usare
Parametri di tipo Stream
o byte[]
possono ora accettare valori string
, string[]
o FileInfo
.
Ad esempio, è possibile utilizzare uno dei seguenti esempi.
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 Strumenti per PowerShell converte tutte le stringhe byte[]
utilizzando la codifica UTF-8.
Estendere la pipe in base al nome della proprietà
Per rendere l'esperienza utente più coerente, è ora possibile passare l'input della pipeline specificando il nome della proprietà per qualsiasi parametro.
Nell'esempio seguente viene creato un oggetto personalizzato con proprietà con nomi corrispondenti ai nomi dei parametri del cmdlet di destinazione. Quando viene eseguito il cmdlet, vengono automaticamente consumate tali proprietà come parametri.
PS >
[pscustomobject] @{ BucketName='
amzn-s3-demo-bucket
'; Key='file1.txt'; PartNumber=1 } | Get-S3ObjectMetadata
Nota
Alcune proprietà lo supportavano nelle versioni precedenti di. AWS Strumenti per PowerShell La versione 4 rende questo più coerente abilitandolo per tutti i parametri.
Parametri comuni statici
Per migliorare la coerenza nella versione 4.0 di AWS Strumenti per PowerShell, tutti i parametri sono statici.
Nelle versioni precedenti di AWS Strumenti per PowerShell, alcuni parametri comuni comeAccessKey
,, o SecretKey
ProfileName
, erano dinamici Region
PS >
Get-EC2Region -Region us-west-2
Le versioni precedenti di PowerShell associavano il valore us-west-2
al parametro -RegionName
statico anziché al parametro -Region
dinamico. Probabilmente, questo potrebbe confondere gli utenti.
AWS.Tools
Dichiara e applica i parametri obbligatori
I moduli AWS.Tools.*
ora dichiarano e applicano parametri cmdlet obbligatori. Quando un AWS servizio dichiara che è necessario un parametro di un'API, PowerShell richiede il parametro del cmdlet corrispondente se non lo si è specificato. Questo vale solo per AWS.Tools
. Per garantire la compatibilità con le versioni precedenti, ciò non si applica a Shell. AWSPower NetCore o AWSPower Shell.
Tutti i parametri sono “nullable”
È ora possibile assegnare $null
ai parametri del tipo di valore (numeri e date). Questa modifica non dovrebbe influire sugli script esistenti. Ciò consente di ignorare la richiesta di un parametro obbligatorio. I parametri obbligatori sono applicati solo in AWS.Tools
.
Se viene eseguito l’esempio seguente utilizzando la versione 4, il medesimo ignora effettivamente la convalida lato client perché si fornisce un «valore» per ogni parametro obbligatorio. Tuttavia, la chiamata al servizio Amazon EC2 API non riesce perché il AWS servizio richiede ancora tali informazioni.
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
Rimozione di funzionalità precedentemente deprecate
Le seguenti funzionalità erano obsolete nelle versioni precedenti di AWS Strumenti per PowerShell e sono state rimosse nella versione 4:
-
Rimosso il parametro
-Terminate
dal cmdletStop-EC2Instance
. Usare inveceRemove-EC2Instance
. -
È stato rimosso il
-ProfileName
parametro dal cmdlet Clear-. AWSCredential Usare inveceRemove-AWSCredentialProfile
. -
Rimossi i cmdlet
Import-EC2Instance
eImport-EC2Volume
.