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à.
Migrazione del client di crittografia Amazon S3
Questo argomento mostra come migrare le applicazioni dalla versione 1 (V1) del client di crittografia Amazon Simple Storage Service (Amazon S3) alla versione 2 (V2) e garantire la disponibilità delle applicazioni durante tutto il processo di migrazione.
Panoramica della migrazione
Questa migrazione avviene in due fasi:
1. Aggiorna i client esistenti per leggere nuovi formati. Innanzitutto, distribuisci una versione aggiornata di nella AWS SDK for PHP tua applicazione. Ciò consente ai client di crittografia V1 esistenti di decrittografare gli oggetti scritti dai nuovi client V2. Se l'applicazione ne utilizza più di uno AWS SDKs, è necessario aggiornarli separatamente. SDK
2. Migra i client di crittografia e decrittografia alla V2. Una volta che tutti i client di crittografia V1 sono in grado di leggere nuovi formati, è possibile migrare i client di crittografia e decrittografia esistenti alle rispettive versioni V2.
Aggiorna i client esistenti per leggere nuovi formati
Il client di crittografia V2 utilizza algoritmi di crittografia che le versioni precedenti del client non supportano. Il primo passo della migrazione consiste nell'aggiornare i client di decrittografia V1 all'ultima versione. SDK Dopo aver completato questo passaggio, i client V1 dell'applicazione saranno in grado di decrittografare gli oggetti crittografati dai client di crittografia V2. Vedi i dettagli di seguito per ciascuna versione principale di. AWS SDK for PHP
Aggiornamento della versione 3 AWS SDK for PHP
La versione 3 è l'ultima versione di. AWS SDK for PHP Per completare questa migrazione, è necessario utilizzare la versione 3.148.0 o successiva del pacchetto. aws/aws-sdk-php
Installazione dalla riga di comando
Per i progetti che sono stati installati utilizzando Composer, nel file Composer, aggiorna il SDK pacchetto alla versione 3.148.0 di, quindi SDK esegui il comando seguente.
composer update aws/aws-sdk-php
Installazione tramite il file Phar o Zip
Utilizzare uno dei seguenti metodi. Assicurati di inserire il SDK file aggiornato nella posizione richiesta dal codice, che è determinata dall'istruzione require.
Per i progetti che sono stati installati utilizzando il file Phar, scarica il file aggiornato: aws.phar
.
<?php require '/path/to/aws.phar'; ?>
Per i progetti che sono stati installati utilizzando il file Zip, scarica il file aggiornato: .
<?php require '/path/to/aws-autoloader.php'; ?>
Migra i client di crittografia e decrittografia alla V2
Dopo aver aggiornato i client per leggere i nuovi formati di crittografia, è possibile aggiornare le applicazioni ai client di crittografia e decrittografia V2. I passaggi seguenti mostrano come migrare correttamente il codice dalla V1 alla V2.
Requisiti per l'aggiornamento ai client V2
1. Il contesto di AWS KMS crittografia deve essere passato ai S3EncryptionClientV2::putObjectAsync
metodi S3EncryptionClientV2::putObject
and. AWS KMS il contesto di crittografia è un array associativo di coppie chiave-valore, che è necessario aggiungere al contesto di crittografia per AWS KMS la crittografia a chiave. Se non è richiesto alcun contesto aggiuntivo, è possibile passare un array vuoto.
2. @SecurityProfile
deve essere passato ai getObjectAsync
metodi getObject
e inS3EncryptionClientV2
. @SecurityProfile
è un nuovo parametro obbligatorio dei getObject...
metodi. Se impostato su‘V2’
, solo gli oggetti crittografati in un formato compatibile con V2 possono essere decrittografati. L'impostazione di questo parametro su consente ‘V2_AND_LEGACY’
inoltre di decrittografare gli oggetti crittografati in un formato compatibile con V1. Per supportare la migrazione, impostare su. @SecurityProfile
‘V2_AND_LEGACY’
Utilizzare ‘V2’
solo per lo sviluppo di nuove applicazioni.
3. (opzionale) Includi il @KmsAllowDecryptWithAnyCmk
parametro in S3EncryptionClientV2::getObject
ed è stato aggiunto S3EncryptionClientV2::getObjectAsync* methods.
un nuovo parametro chiamato@KmsAllowDecryptWithAnyCmk
. L'impostazione di questo parametro true
consente la decrittografia senza fornire una chiave. KMS Il valore predefinito è false
.
4. Per la decrittografia con un client V2, se il @KmsAllowDecryptWithAnyCmk
parametro non è impostato su true
per le chiamate ai “getObject...”
metodi, è kms-key-id
necessario fornire un al costruttore. KmsMaterialsProviderV2
Esempi di migrazione
Esempio 1: migrazione ai client V2
Pre-migrazione
use Aws\S3\Crypto\S3EncryptionClient; use Aws\S3\S3Client; $encryptionClient = new S3EncryptionClient( new S3Client([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => 'latest', ]) );
Post-migrazione
use Aws\S3\Crypto\S3EncryptionClientV2; use Aws\S3\S3Client; $encryptionClient = new S3EncryptionClientV2( new S3Client([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => 'latest', ]) );
Esempio 2: utilizzo con AWS KMS kms-key-id
Nota
Questi esempi utilizzano importazioni e variabili definite nell'Esempio 1. Ad esempio $encryptionClient
.
Premigrazione
use Aws\Crypto\KmsMaterialsProvider; use Aws\Kms\KmsClient; $kmsKeyId = 'kms-key-id'; $materialsProvider = new KmsMaterialsProvider( new KmsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => 'latest', ]), $kmsKeyId ); $bucket = 'the-bucket-name'; $key = 'the-file-name'; $cipherOptions = [ 'Cipher' => 'gcm', 'KeySize' => 256, ]; $encryptionClient->putObject([ '@MaterialsProvider' => $materialsProvider, '@CipherOptions' => $cipherOptions, 'Bucket' => $bucket, 'Key' => $key, 'Body' => fopen('file-to-encrypt.txt', 'r'), ]); $result = $encryptionClient->getObject([ '@MaterialsProvider' => $materialsProvider, '@CipherOptions' => $cipherOptions, 'Bucket' => $bucket, 'Key' => $key, ]);
Post-migrazione
use Aws\Crypto\KmsMaterialsProviderV2; use Aws\Kms\KmsClient; $kmsKeyId = 'kms-key-id'; $materialsProvider = new KmsMaterialsProviderV2( new KmsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => 'latest', ]), $kmsKeyId ); $bucket = 'the-bucket-name'; $key = 'the-file-name'; $cipherOptions = [ 'Cipher' => 'gcm', 'KeySize' => 256, ]; $encryptionClient->putObject([ '@MaterialsProvider' => $materialsProvider, '@CipherOptions' => $cipherOptions, '@KmsEncryptionContext' => ['context-key' => 'context-value'], 'Bucket' => $bucket, 'Key' => $key, 'Body' => fopen('file-to-encrypt.txt', 'r'), ]); $result = $encryptionClient->getObject([ '@KmsAllowDecryptWithAnyCmk' => true, '@SecurityProfile' => 'V2_AND_LEGACY', '@MaterialsProvider' => $materialsProvider, '@CipherOptions' => $cipherOptions, 'Bucket' => $bucket, 'Key' => $key, ]);