Domande frequenti per laAWS SDK for PHP versione 3 - AWS SDK for PHP

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à.

Domande frequenti per laAWS SDK for PHP versione 3

Quali metodi sono disponibili su un client?

L'AWS SDK for PHP utilizza descrizioni del servizio e metodi magic __call () dinamici per eseguire le operazioni API. Puoi trovare un elenco completo dei metodi disponibili per i client del servizio Web nella documentazione API del client.

Cosa devo fare in caso di errore cURL di un certificato SSL?

Questo problema può verificarsi quando si utilizza un pacchettoout-of-date CA con cURL e SSL. È possibile ovviare a questo problema aggiornando il pacchetto CA sul server o scaricando un altro pacchettoup-to-date CA direttamente dal sito Web cURL.

Per impostazione predefinita, l'AWS SDK for PHP utilizzerà il bundle CA configurato al momento della compilazione di PHP. Puoi modificare il bundle CA predefinito utilizzato da PHP modificando l'impostazione di configurazione openssl.cafile del file PHP.ini impostandola sul percorso di un file CA sul disco.

Quali versioni dell'API sono disponibili per un client?

L'opzione version è obbligatoria durante la creazione di un client. Un elenco delle versioni API disponibili è disponibile nella pagina di documentazione delle API di ciascun cliente:aws-php-class:<index.html>. Se non riesci a caricare una versione dell'API specifica, potrebbe essere necessario aggiornare la copia dell'AWS SDK for PHP.

Puoi specificare la stringa latest nel valore di configurazione "versione" per utilizzare la versione dell'API più recente disponibile che il provider dell'API del client è in grado di trovare (l'api_provider predefinito analizzerà la directory src/data dell'SDK per cercare i modelli di API).

avvertimento

Non è consigliabile utilizzare latest in un'applicazione di produzione, perché l'importazione di una nuova versione secondaria dell'SDK che include un aggiornamento dell'API potrebbe interrompere il funzionamento di tale applicazione di produzione.

Quali versioni della regione sono disponibili per un client?

L'opzione region è obbligatoria durante la creazione di un client e viene specificata tramite un valore di stringa. Per un elenco delleAWS regioni e degli endpoint disponibili, vedere AWSRegioni ed endpoint inRiferimenti generali di AWS.

// Set the Region to the EU (Frankfurt) Region. $s3 = new Aws\S3\S3Client([ 'region' => 'eu-central-1', 'version' => '2006-03-01' ]);

Perché non riesco a caricare o scaricare i file di dimensioni superiori a 2 GB?

Dal momento che il tipo di numero intero di PHP è firmato e molte delle piattaforme utilizzano i numeri interi a 32 bit, l'AWS SDK for PHP non è in grado di gestire correttamente i file di dimensioni superiori a 2 GB su uno stack a 32 bit (dove lo "stack" include CPU, sistema operativo, server Web e sistema binario PHP). Si tratta di un problema noto di PHP. Nel caso di Microsoft Windows, soltanto le build di PHP 7 supportano i numeri interi a 64 bit.

La soluzione consigliata è utilizzare uno stack di Linux a 64 bit, come l'AMI Amazon Linux a 64 bit, con la versione più recente di PHP installata.

Per ulteriori informazioni, consulta la sezione relativa alla dimensione dei file PHP e ai valori restituiti.

Come è possibile controllare i dati che vengono trasmessi in rete?

Utilizzando l'opzione debug in un costruttore di client, puoi ottenere le informazioni di debug, tra cui quelle relative ai dati trasmessi in rete. Se questa opzione è impostata su true, tutte le mutazioni del comando in esecuzione, la richiesta in fase di invio, la risposta in fase di ricezione e il risultato in fase di elaborazione vengono emessi in STDOUT. Sono inclusi i dati inviati e ricevuti in rete.

$s3Client = new Aws\S3\S3Client([ 'region' => 'us-standard', 'version' => '2006-03-01', 'debug' => true ]);

Come è possibile impostare delle intestazioni arbitrarie su una richiesta?

Puoi aggiungere intestazioni arbitrarie a un'operazione di servizio aggiungendo un middleware personalizzato all'Aws\HandlerList di una Aws\CommandInterface o Aws\ClientInterface. L'esempio seguente mostra come aggiungere un'X-Foo-Bazintestazione a una specificaPutObject operazione Amazon S3 utilizzando il metodoAws\Middleware::mapRequest helper.

Consulta mapRequest per ulteriori informazioni.

Come posso firmare una richiesta arbitraria?

È possibile firmare una richiesta arbitrariaaws-php-class:: PSR-7 <class-PSR.http.message. RequestInterface.html> utilizzando la classe:aws-php-class: SignatureV4 dell'SDK<class-Aws.Signature.SignatureV4.html>.

Vedi Firmare richieste diCloudSearch dominio Amazon personalizzate con laAWS SDK for PHP versione 3 per un esempio completo di come eseguire questa operazione.

Come posso modificare un comando prima di inviarlo?

Puoi modificare un comando prima di inviarlo aggiungendo un middleware personalizzato all'Aws\HandlerList di una Aws\CommandInterface o Aws\ClientInterface. L'esempio seguente mostra come aggiungere dei parametri di comando personalizzati a un comando prima dell'invio, essenzialmente tramite l'aggiunta delle opzioni predefinite. In questo esempio viene utilizzato il metodo helper Aws\Middleware::mapCommand.

Consulta mapCommand per ulteriori informazioni.

Che cos'è una CredentialsException?

Se visualizzi una Aws\Exception\CredentialsException durante l'uso dell'AWS SDK for PHP, vuol dire che l'SDK non dispone di credenziali e che non è stato in grado di trovarle nell'ambiente.

Se crei istanze di un client senza credenziali, la prima volta che effettui un'operazione di servizio, l'SDK tenterà di cercare le credenziali. Prima controlla alcune variabili di ambiente specifiche, quindi cerca le credenziali del profilo dell'istanza, che sono disponibili solo sulle istanze Amazon EC2 configurate. Se le credenziali non vengono specificate o trovate, viene generata una Aws\Exception\CredentialsException.

Se riscontri questo errore e intendi utilizzare le credenziali del profilo di istanza, devi assicurarti che l'istanza Amazon EC2 su cui è in esecuzione l'SDK sia configurata con un ruolo IAM appropriato.

Se visualizzi questo errore e non intendi utilizzare le credenziali del profilo dell'istanza, devi assicurarti di specificare le credenziali corrette nell'SDK.

Per ulteriori informazioni, consulta Credenziali per laAWS SDK for PHP versione 3.

L'AWS SDK for PHP funziona su HHVM?

Al momento, non puoi eseguire l'AWS SDK for PHP su HHVM finché non verrà risolto il problema con la semantica di rendimento in HHVM.

Come posso disabilitare il protocollo SSL?

Puoi disabilitare il protocollo SSL impostando il parametro scheme in un metodo client factory su "http". È importante tenere presente che non tutti i servizi supportano l'accesso http. Vedi AWSRegioni ed endpoint inRiferimenti generali di AWS per un elenco di regioni, endpoint e schemi supportati.

$client = new Aws\DynamoDb\DynamoDbClient([ 'version' => '2012-08-10', 'region' => 'us-west-2', 'scheme' => 'http' ]);
avvertimento

Dal momento che, rispetto al protocollo TCP, il protocollo SSL richiede la crittografia di tutti i dati e più pacchetti TCP per il completamento di un handshake connessione, la sua disabilitazione può comportare un leggero miglioramento delle prestazioni. Tuttavia, con il protocollo SSL disabilitato, tutti i dati vengono trasmessi in rete senza essere crittografati. Prima di disabilitare il protocollo SSL, valuta attentamente le implicazioni a livello di protezione e le probabilità di intercettazione sulla rete.

Cosa devo fare se visualizzo un "Errore di analisi"?

Il motore PHP genera degli errori di analisi quando incontra una sintassi che non è in grado di interpretare. Ciò si verifica quasi sempre quando tenti di eseguire il codice scritto per una versione diversa di PHP.

Se riscontri un errore di analisi, controlla il tuo sistema e assicurati che soddisfi i requisiti e i consigli dell'SDK per laAWS SDK for PHP versione 3.

Perché il client Amazon S3 decomprime i file compressi con gzip?

Per impostazione predefinita, alcuni gestori HTTP, incluso il gestore predefinito Guzzle 6 HTTP, decomprimono i corpi della di risposta compressi. Puoi sostituire questo comportamento impostando l'opzione HTTP decode_content su false. Per motivi di compatibilità con le versioni precedenti, questa impostazione predefinita non può essere modificata, ma ti consigliamo di disabilitare la decodifica dei contenuti al livello del client S3.

Consulta decode_content per un esempio di come disabilitare la decodifica automatica dei contenuti.

Come faccio a disattivare il body sign in Amazon S3?

Puoi disabilitare la firma del corpo impostando il parametro ContentSHA256 nell'oggetto comando su Aws\Signature\S3SignatureV4::UNSIGNED_PAYLOAD. Quindi loAWS SDK for PHP useranno come intestazione 'x-amz-content-sha-256' e come checksum del corpo nella richiesta canonica.

$s3Client = new Aws\S3\S3Client([ 'version' => '2006-03-01', 'region' => 'us-standard' ]); $params = [ 'Bucket' => 'foo', 'Key' => 'baz', 'ContentSHA256' => Aws\Signature\S3SignatureV4::UNSIGNED_PAYLOAD ]; // Using operation methods creates command implicitly $result = $s3Client->putObject($params); // Using commands explicitly. $command = $s3Client->getCommand('PutObject', $params); $result = $s3Client->execute($command);

Come viene gestito lo schema dei nuovi tentativi nell'AWS SDK for PHP?

L'AWS SDK for PHP dispone di un RetryMiddleware che gestisce il comportamento relativo ai nuovi tentativi. In termini dei codici di stato HTTP 5xx relativi agli errori del server, l'SDK ritenta su 500, 502, 503 e 504.

Con i nuovi tentativi vengono gestite anche le eccezioni di throttling, incluse RequestLimitExceeded, Throttling, ProvisionedThroughputExceededException, ThrottlingException, RequestThrottled e BandwidthLimitExceeded.

L'AWS SDK for PHP integra inoltre il ritardo esponenziale con un algoritmo jitter e di backoff nello schema dei nuovi tentativi. Inoltre, il comportamento predefinito dei tentativi è configurato come3 per tutti i servizi tranne Amazon DynamoDB, che è10.

Come posso gestire le eccezioni con codici di errore?

Oltre alleException classiAWS SDK for PHP personalizzate, ogni client delAWS servizio ha una propria classe di eccezioni da cui eredita AwsExceptionAwsException. Puoi determinare i tipi di errore più specifici da individuare con gli errori specifici dell'API elencati nella sezione Errors di ciascun metodo.

Le informazioni sul codice di errore sono disponibili con getAwsErrorCode () fromAws\Exception\AwsException.

$sns = new \Aws\Sns\SnsClient([ 'region' => 'us-west-2', 'version' => 'latest', ]); try { $sns->publish([ // parameters ... ]); // Do something } catch (SnsException $e) { switch ($e->getAwsErrorCode()) { case 'EndpointDisabled': case 'NotFound': // Do something break; } }