

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

# Esempi di codice con linee guida per AWS SDK per PHP
<a name="examples_index"></a>

Questa sezione contiene esempi di codice che illustrano AWS scenari comuni che utilizzano. AWS SDK per PHP

Tutto il codice di esempio per AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

**Topics**
+ [Credenziali](#examplecredentials)
+ [CloudFront Esempi di Amazon](cf-examples.md)
+ [Amazon CloudSearch](service_cloudsearch-custom-requests.md)
+ [CloudWatch Esempi di Amazon](cw-examples.md)
+ [EC2 Esempi di Amazon](ec2-examples.md)
+ [OpenSearch Servizio Amazon](service_es-data-plane.md)
+ [AWS Identity and Access Management esempi](iam-examples.md)
+ [AWS Key Management Service](kms-examples.md)
+ [Esempi di Kinesis](kinesis-examples.md)
+ [AWS Elemental MediaConvert](emc-examples.md)
+ [Esempi di Amazon S3](s3-examples.md)
+ [Gestione dei segreti AWS](secretsmanager-examples-manage-secret.md)
+ [Esempi di Amazon SES](ses-examples.md)
+ [Esempi di Amazon SNS](sns-examples.md)
+ [Esempi di Amazon SQS](sqs-examples.md)
+ [Amazon EventBridge](eventbridge-examples.md)

# CloudFront Esempi di Amazon che utilizzano la AWS SDK per PHP versione 3
<a name="cf-examples"></a>

Amazon CloudFront è un servizio AWS Web che velocizza la pubblicazione di contenuti Web statici e dinamici dal tuo server Web o da un AWS server, come Amazon S3. CloudFront fornisce contenuti attraverso una rete mondiale di data center denominati edge location. Quando un utente richiede i contenuti con cui li distribuisci CloudFront, viene indirizzato all'edge location che offre la latenza più bassa. Se i contenuti non sono già archiviati nella cache, CloudFront recupera una copia dal server di origine, la serve e quindi la memorizza nella cache per le richieste future.

Per ulteriori informazioni CloudFront, consulta l'[Amazon CloudFront Developer Guide](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/).

Tutto il codice di esempio per la AWS SDK per PHP versione 3 è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

# Gestione delle CloudFront distribuzioni Amazon utilizzando l' CloudFront API e la AWS SDK per PHP versione 3
<a name="cloudfront-example-distribution"></a>

Amazon CloudFront memorizza nella cache i contenuti nelle edge location di tutto il mondo per accelerare la distribuzione di file statici e dinamici archiviati sul tuo server o su un servizio Amazon come Amazon S3 e Amazon. EC2 Quando gli utenti richiedono contenuti dal tuo sito Web, li CloudFront invia dalla edge location più vicina, se il file è memorizzato nella cache. Altrimenti CloudFront recupera una copia del file, lo serve e quindi lo memorizza nella cache per la richiesta successiva. Il caching dei contenuti in una edge location riduce la latenza di richieste utente simili in tale area.

Per ogni CloudFront distribuzione creata, specificate dove si trova il contenuto e come distribuirlo quando gli utenti effettuano richieste. Questo argomento descrive le distribuzioni di file statici e dinamici, ad esempio HTML, CSS, JSON e file di immagine. Per informazioni sull'utilizzo CloudFront con video on demand, consulta [Video on demand e live streaming con CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/on-demand-streaming-video.html).

Gli esempi seguenti mostrano come:
+ Crea una distribuzione utilizzando [CreateDistribution](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#createdistribution).
+ Ottieni una distribuzione usando [GetDistribution](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#getdistribution).
+ Elenca le distribuzioni utilizzando [ListDistributions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#listdistributions).
+ Aggiorna le distribuzioni utilizzando. [UpdateDistributions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#updatedistribution)
+ Disabilita le distribuzioni utilizzando. [DisableDistribution](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#disabledistribution)
+ Elimina le distribuzioni utilizzando. [DeleteDistributions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#deletedistribution)

Tutto il codice di esempio per AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per ulteriori informazioni sull'uso di Amazon CloudFront, consulta l'[Amazon CloudFront Developer Guide](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/).

## Crea una CloudFront distribuzione
<a name="create-a-cf-distribution"></a>

Crea una distribuzione da un bucket Amazon S3. Nell'esempio seguente, i parametri opzionali vengono commentati, ma i valori di default vengono visualizzati. Per aggiungere personalizzazioni alla distribuzione, rimuovi i commenti dal valore e dal parametro all'interno di `$distribution`.

Per creare una CloudFront distribuzione, usa l'[CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function createS3Distribution($cloudFrontClient, $distribution)
{
    try {
        $result = $cloudFrontClient->createDistribution([
            'DistributionConfig' => $distribution
        ]);

        $message = '';

        if (isset($result['Distribution']['Id'])) {
            $message = 'Distribution created with the ID of ' .
                $result['Distribution']['Id'];
        }

        $message .= ' and an effective URI of ' .
            $result['@metadata']['effectiveUri'] . '.';

        return $message;
    } catch (AwsException $e) {
        return 'Error: ' . $e['message'];
    }
}

function createsTheS3Distribution()
{
    $originName = 'my-unique-origin-name';
    $s3BucketURL = 'amzn-s3-demo-bucket.s3.amazonaws.com';
    $callerReference = 'my-unique-caller-reference';
    $comment = 'my-comment-about-this-distribution';
    $defaultCacheBehavior = [
        'AllowedMethods' => [
            'CachedMethods' => [
                'Items' => ['HEAD', 'GET'],
                'Quantity' => 2
            ],
            'Items' => ['HEAD', 'GET'],
            'Quantity' => 2
        ],
        'Compress' => false,
        'DefaultTTL' => 0,
        'FieldLevelEncryptionId' => '',
        'ForwardedValues' => [
            'Cookies' => [
                'Forward' => 'none'
            ],
            'Headers' => [
                'Quantity' => 0
            ],
            'QueryString' => false,
            'QueryStringCacheKeys' => [
                'Quantity' => 0
            ]
        ],
        'LambdaFunctionAssociations' => ['Quantity' => 0],
        'MaxTTL' => 0,
        'MinTTL' => 0,
        'SmoothStreaming' => false,
        'TargetOriginId' => $originName,
        'TrustedSigners' => [
            'Enabled' => false,
            'Quantity' => 0
        ],
        'ViewerProtocolPolicy' => 'allow-all'
    ];
    $enabled = false;
    $origin = [
        'Items' => [
            [
                'DomainName' => $s3BucketURL,
                'Id' => $originName,
                'OriginPath' => '',
                'CustomHeaders' => ['Quantity' => 0],
                'S3OriginConfig' => ['OriginAccessIdentity' => '']
            ]
        ],
        'Quantity' => 1
    ];
    $distribution = [
        'CallerReference' => $callerReference,
        'Comment' => $comment,
        'DefaultCacheBehavior' => $defaultCacheBehavior,
        'Enabled' => $enabled,
        'Origins' => $origin
    ];

    $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    echo createS3Distribution($cloudFrontClient, $distribution);
}

// Uncomment the following line to run this code in an AWS account.
// createsTheS3Distribution();
```

## Recupera una distribuzione CloudFront
<a name="retrieve-a-cf-distribution"></a>

Per recuperare lo stato e i dettagli di una CloudFront distribuzione specificata, utilizzate l'[GetDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetDistribution.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function getDistribution($cloudFrontClient, $distributionId)
{
    try {
        $result = $cloudFrontClient->getDistribution([
            'Id' => $distributionId
        ]);

        $message = '';

        if (isset($result['Distribution']['Status'])) {
            $message = 'The status of the distribution with the ID of ' .
                $result['Distribution']['Id'] . ' is currently ' .
                $result['Distribution']['Status'];
        }

        if (isset($result['@metadata']['effectiveUri'])) {
            $message .= ', and the effective URI is ' .
                $result['@metadata']['effectiveUri'] . '.';
        } else {
            $message = 'Error: Could not get the specified distribution. ' .
                'The distribution\'s status is not available.';
        }

        return $message;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function getsADistribution()
{
    $distributionId = 'E1BTGP2EXAMPLE';

    $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    echo getDistribution($cloudFrontClient, $distributionId);
}

// Uncomment the following line to run this code in an AWS account.
// getsADistribution();
```

## Elenca CloudFront le distribuzioni
<a name="list-cf-distributions"></a>

Ottieni un elenco delle CloudFront distribuzioni esistenti nella AWS regione specificata dal tuo account corrente utilizzando l'[ListDistributions](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListDistributions.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function listDistributions($cloudFrontClient)
{
    try {
        $result = $cloudFrontClient->listDistributions([]);
        return $result;
    } catch (AwsException $e) {
        exit('Error: ' . $e->getAwsErrorMessage());
    }
}

function listTheDistributions()
{
    $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-2'
    ]);

    $distributions = listDistributions($cloudFrontClient);

    if (count($distributions) == 0) {
        echo 'Could not find any distributions.';
    } else {
        foreach ($distributions['DistributionList']['Items'] as $distribution) {
            echo 'The distribution with the ID of ' . $distribution['Id'] .
                ' has the status of ' . $distribution['Status'] . '.' . "\n";
        }
    }
}

// Uncomment the following line to run this code in an AWS account.
// listTheDistributions();
```

## Aggiorna una distribuzione CloudFront
<a name="update-a-cf-distribution"></a>

L'aggiornamento di una CloudFront distribuzione è simile alla creazione di una distribuzione. Tuttavia, quando aggiorni una distribuzione, sono richiesti più campi e devono essere inclusi tutti i valori. Per apportare modifiche a una distribuzione esistente, ti consigliamo di recuperare la distribuzione esistente e aggiornare i valori da modificare nell'array `$distribution`.

Per aggiornare una CloudFront distribuzione specificata, usa l'[UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\CloudFront\CloudFrontClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function updateDistribution(
    $cloudFrontClient,
    $distributionId,
    $distributionConfig,
    $eTag
) {
    try {
        $result = $cloudFrontClient->updateDistribution([
            'DistributionConfig' => $distributionConfig,
            'Id' => $distributionId,
            'IfMatch' => $eTag
        ]);

        return 'The distribution with the following effective URI has ' .
            'been updated: ' . $result['@metadata']['effectiveUri'];
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function getDistributionConfig($cloudFrontClient, $distributionId)
{
    try {
        $result = $cloudFrontClient->getDistribution([
            'Id' => $distributionId,
        ]);

        if (isset($result['Distribution']['DistributionConfig'])) {
            return [
                'DistributionConfig' => $result['Distribution']['DistributionConfig'],
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        } else {
            return [
                'Error' => 'Error: Cannot find distribution configuration details.',
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        }
    } catch (AwsException $e) {
        return [
            'Error' => 'Error: ' . $e->getAwsErrorMessage()
        ];
    }
}

function getDistributionETag($cloudFrontClient, $distributionId)
{
    try {
        $result = $cloudFrontClient->getDistribution([
            'Id' => $distributionId,
        ]);

        if (isset($result['ETag'])) {
            return [
                'ETag' => $result['ETag'],
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        } else {
            return [
                'Error' => 'Error: Cannot find distribution ETag header value.',
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        }
    } catch (AwsException $e) {
        return [
            'Error' => 'Error: ' . $e->getAwsErrorMessage()
        ];
    }
}

function updateADistribution()
{
    // $distributionId = 'E1BTGP2EXAMPLE';
    $distributionId = 'E1X3BKQ569KEMH';

    $cloudFrontClient = new CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    // To change a distribution, you must first get the distribution's
    // ETag header value.
    $eTag = getDistributionETag($cloudFrontClient, $distributionId);

    if (array_key_exists('Error', $eTag)) {
        exit($eTag['Error']);
    }

    // To change a distribution, you must also first get information about
    // the distribution's current configuration. Then you must use that
    // information to build a new configuration.
    $currentConfig = getDistributionConfig($cloudFrontClient, $distributionId);

    if (array_key_exists('Error', $currentConfig)) {
        exit($currentConfig['Error']);
    }

    // To change a distribution's configuration, you can set the
    // distribution's related configuration value as part of a change request,
    // for example:
    // 'Enabled' => true
    // Some configuration values are required to be specified as part of a change
    // request, even if you don't plan to change their values. For ones you
    // don't want to change but are required to be specified, you can just reuse
    // their current values, as follows.
    $distributionConfig = [
        'CallerReference' => $currentConfig['DistributionConfig']["CallerReference"],
        'Comment' => $currentConfig['DistributionConfig']["Comment"],
        'DefaultCacheBehavior' => $currentConfig['DistributionConfig']["DefaultCacheBehavior"],
        'DefaultRootObject' => $currentConfig['DistributionConfig']["DefaultRootObject"],
        'Enabled' => $currentConfig['DistributionConfig']["Enabled"],
        'Origins' => $currentConfig['DistributionConfig']["Origins"],
        'Aliases' => $currentConfig['DistributionConfig']["Aliases"],
        'CustomErrorResponses' => $currentConfig['DistributionConfig']["CustomErrorResponses"],
        'HttpVersion' => $currentConfig['DistributionConfig']["HttpVersion"],
        'CacheBehaviors' => $currentConfig['DistributionConfig']["CacheBehaviors"],
        'Logging' => $currentConfig['DistributionConfig']["Logging"],
        'PriceClass' => $currentConfig['DistributionConfig']["PriceClass"],
        'Restrictions' => $currentConfig['DistributionConfig']["Restrictions"],
        'ViewerCertificate' => $currentConfig['DistributionConfig']["ViewerCertificate"],
        'WebACLId' => $currentConfig['DistributionConfig']["WebACLId"]
    ];

    echo updateDistribution(
        $cloudFrontClient,
        $distributionId,
        $distributionConfig,
        $eTag['ETag']
    );
}

// Uncomment the following line to run this code in an AWS account.
// updateADistribution();
```

## Disabilita una CloudFront distribuzione
<a name="disable-a-cf-distribution"></a>

Per disattivare o rimuovere una distribuzione, modifica il relativo stato da distribuito a disabilitato.

Per disabilitare la CloudFront distribuzione specificata, utilizzare l'[DisableDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DisableDistribution.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function disableDistribution(
    $cloudFrontClient,
    $distributionId,
    $distributionConfig,
    $eTag
) {
    try {
        $result = $cloudFrontClient->updateDistribution([
            'DistributionConfig' => $distributionConfig,
            'Id' => $distributionId,
            'IfMatch' => $eTag
        ]);
        return 'The distribution with the following effective URI has ' .
            'been disabled: ' . $result['@metadata']['effectiveUri'];
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function getDistributionConfig($cloudFrontClient, $distributionId)
{
    try {
        $result = $cloudFrontClient->getDistribution([
            'Id' => $distributionId,
        ]);

        if (isset($result['Distribution']['DistributionConfig'])) {
            return [
                'DistributionConfig' => $result['Distribution']['DistributionConfig'],
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        } else {
            return [
                'Error' => 'Error: Cannot find distribution configuration details.',
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        }
    } catch (AwsException $e) {
        return [
            'Error' => 'Error: ' . $e->getAwsErrorMessage()
        ];
    }
}

function getDistributionETag($cloudFrontClient, $distributionId)
{
    try {
        $result = $cloudFrontClient->getDistribution([
            'Id' => $distributionId,
        ]);

        if (isset($result['ETag'])) {
            return [
                'ETag' => $result['ETag'],
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        } else {
            return [
                'Error' => 'Error: Cannot find distribution ETag header value.',
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        }
    } catch (AwsException $e) {
        return [
            'Error' => 'Error: ' . $e->getAwsErrorMessage()
        ];
    }
}

function disableADistribution()
{
    $distributionId = 'E1BTGP2EXAMPLE';

    $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    // To disable a distribution, you must first get the distribution's
    // ETag header value.
    $eTag = getDistributionETag($cloudFrontClient, $distributionId);

    if (array_key_exists('Error', $eTag)) {
        exit($eTag['Error']);
    }

    // To delete a distribution, you must also first get information about
    // the distribution's current configuration. Then you must use that
    // information to build a new configuration, including setting the new
    // configuration to "disabled".
    $currentConfig = getDistributionConfig($cloudFrontClient, $distributionId);

    if (array_key_exists('Error', $currentConfig)) {
        exit($currentConfig['Error']);
    }

    $distributionConfig = [
        'CacheBehaviors' => $currentConfig['DistributionConfig']["CacheBehaviors"],
        'CallerReference' => $currentConfig['DistributionConfig']["CallerReference"],
        'Comment' => $currentConfig['DistributionConfig']["Comment"],
        'DefaultCacheBehavior' => $currentConfig['DistributionConfig']["DefaultCacheBehavior"],
        'DefaultRootObject' => $currentConfig['DistributionConfig']["DefaultRootObject"],
        'Enabled' => false,
        'Origins' => $currentConfig['DistributionConfig']["Origins"],
        'Aliases' => $currentConfig['DistributionConfig']["Aliases"],
        'CustomErrorResponses' => $currentConfig['DistributionConfig']["CustomErrorResponses"],
        'HttpVersion' => $currentConfig['DistributionConfig']["HttpVersion"],
        'Logging' => $currentConfig['DistributionConfig']["Logging"],
        'PriceClass' => $currentConfig['DistributionConfig']["PriceClass"],
        'Restrictions' => $currentConfig['DistributionConfig']["Restrictions"],
        'ViewerCertificate' => $currentConfig['DistributionConfig']["ViewerCertificate"],
        'WebACLId' => $currentConfig['DistributionConfig']["WebACLId"]
    ];

    echo disableDistribution(
        $cloudFrontClient,
        $distributionId,
        $distributionConfig,
        $eTag['ETag']
    );
}

// Uncomment the following line to run this code in an AWS account.
// disableADistribution();
```

## Eliminare una CloudFront distribuzione
<a name="delete-a-cf-distribution"></a>

Una volta che una distribuzione è in uno stato disabilitato, puoi eliminarla.

Per rimuovere una CloudFront distribuzione specificata, utilizzare l'[DeleteDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DeleteDistribution.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function deleteDistribution($cloudFrontClient, $distributionId, $eTag)
{
    try {
        $result = $cloudFrontClient->deleteDistribution([
            'Id' => $distributionId,
            'IfMatch' => $eTag
        ]);
        return 'The distribution at the following effective URI has ' .
            'been deleted: ' . $result['@metadata']['effectiveUri'];
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function getDistributionETag($cloudFrontClient, $distributionId)
{
    try {
        $result = $cloudFrontClient->getDistribution([
            'Id' => $distributionId,
        ]);

        if (isset($result['ETag'])) {
            return [
                'ETag' => $result['ETag'],
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        } else {
            return [
                'Error' => 'Error: Cannot find distribution ETag header value.',
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        }
    } catch (AwsException $e) {
        return [
            'Error' => 'Error: ' . $e->getAwsErrorMessage()
        ];
    }
}

function deleteADistribution()
{
    $distributionId = 'E17G7YNEXAMPLE';

    $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    // To delete a distribution, you must first get the distribution's
    // ETag header value.
    $eTag = getDistributionETag($cloudFrontClient, $distributionId);

    if (array_key_exists('Error', $eTag)) {
        exit($eTag['Error']);
    } else {
        echo deleteDistribution(
            $cloudFrontClient,
            $distributionId,
            $eTag['ETag']
        );
    }
}

// Uncomment the following line to run this code in an AWS account.
// deleteADistribution();
```

# Gestione delle CloudFront invalidazioni di Amazon utilizzando l' CloudFront API e la versione 3 AWS SDK per PHP
<a name="cloudfront-example-invalidation"></a>

Amazon CloudFront memorizza nella cache copie di file statici e dinamici in edge location in tutto il mondo. Per rimuovere o aggiornare un file su tutte le edge location, crea un invalidamento per ogni file o per un gruppo di file.

Ogni mese di calendario, i primi 1.000 invalidamenti sono gratuiti. Per ulteriori informazioni sulla rimozione di contenuti da una CloudFront edge location, consulta [Invalidating](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html) Files.

Gli esempi seguenti mostrano come:
+ Crea un'invalidazione della distribuzione utilizzando. [CreateInvalidation](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#createinvalidation)
+ Ottieni un'invalidazione della distribuzione utilizzando. [GetInvalidation](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#getinvalidation)
+ Elenca le distribuzioni utilizzando. [ListInvalidations](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#listinvalidations)

Tutto il codice di esempio per AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per ulteriori informazioni sull'uso di Amazon CloudFront, consulta l'[Amazon CloudFront Developer Guide](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/).

## Crea un'invalidazione della distribuzione
<a name="create-a-distribution-invalidation"></a>

Crea un'invalidazione della CloudFront distribuzione specificando la posizione del percorso per i file che devi rimuovere. Questo esempio consente di invalidare tutti i file nella distribuzione, ma puoi identificare file specifici in `Items`.

Per creare un'invalidazione CloudFront della distribuzione, usa l'operazione. [CreateInvalidation](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateInvalidation.html)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function createInvalidation(
    $cloudFrontClient,
    $distributionId,
    $callerReference,
    $paths,
    $quantity
) {
    try {
        $result = $cloudFrontClient->createInvalidation([
            'DistributionId' => $distributionId,
            'InvalidationBatch' => [
                'CallerReference' => $callerReference,
                'Paths' => [
                    'Items' => $paths,
                    'Quantity' => $quantity,
                ],
            ]
        ]);

        $message = '';

        if (isset($result['Location'])) {
            $message = 'The invalidation location is: ' . $result['Location'];
        }

        $message .= ' and the effective URI is ' . $result['@metadata']['effectiveUri'] . '.';

        return $message;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function createTheInvalidation()
{
    $distributionId = 'E17G7YNEXAMPLE';
    $callerReference = 'my-unique-value';
    $paths = ['/*'];
    $quantity = 1;

    $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    echo createInvalidation(
        $cloudFrontClient,
        $distributionId,
        $callerReference,
        $paths,
        $quantity
    );
}

// Uncomment the following line to run this code in an AWS account.
// createTheInvalidation();
```

## Ottieni un'invalidazione della distribuzione
<a name="get-a-distribution-invalidation"></a>

Per recuperare lo stato e i dettagli sull'invalidazione di una CloudFront distribuzione, usa l'operazione. [GetInvalidation](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetInvalidation.html)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function getInvalidation($cloudFrontClient, $distributionId, $invalidationId)
{
    try {
        $result = $cloudFrontClient->getInvalidation([
            'DistributionId' => $distributionId,
            'Id' => $invalidationId,
        ]);

        $message = '';

        if (isset($result['Invalidation']['Status'])) {
            $message = 'The status for the invalidation with the ID of ' .
                $result['Invalidation']['Id'] . ' is ' .
                $result['Invalidation']['Status'];
        }

        if (isset($result['@metadata']['effectiveUri'])) {
            $message .= ', and the effective URI is ' .
                $result['@metadata']['effectiveUri'] . '.';
        } else {
            $message = 'Error: Could not get information about ' .
                'the invalidation. The invalidation\'s status ' .
                'was not available.';
        }

        return $message;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function getsAnInvalidation()
{
    $distributionId = 'E1BTGP2EXAMPLE';
    $invalidationId = 'I1CDEZZEXAMPLE';

    $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    echo getInvalidation($cloudFrontClient, $distributionId, $invalidationId);
}

// Uncomment the following line to run this code in an AWS account.
// getsAnInvalidation();
```

## Elenca le invalidazioni della distribuzione
<a name="list-distribution-invalidations"></a>

Per elencare tutte le invalidazioni correnti CloudFront della distribuzione, usa l'operazione. [ListInvalidations](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListInvalidations.html)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function listInvalidations($cloudFrontClient, $distributionId)
{
    try {
        $result = $cloudFrontClient->listInvalidations([
            'DistributionId' => $distributionId
        ]);
        return $result;
    } catch (AwsException $e) {
        exit('Error: ' . $e->getAwsErrorMessage());
    }
}

function listTheInvalidations()
{
    $distributionId = 'E1WICG1EXAMPLE';

    $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    $invalidations = listInvalidations(
        $cloudFrontClient,
        $distributionId
    );

    if (isset($invalidations['InvalidationList'])) {
        if ($invalidations['InvalidationList']['Quantity'] > 0) {
            foreach ($invalidations['InvalidationList']['Items'] as $invalidation) {
                echo 'The invalidation with the ID of ' . $invalidation['Id'] .
                    ' has the status of ' . $invalidation['Status'] . '.' . "\n";
            }
        } else {
            echo 'Could not find any invalidations for the specified distribution.';
        }
    } else {
        echo 'Error: Could not get invalidation information. Could not get ' .
            'information about the specified distribution.';
    }
}

// Uncomment the following line to run this code in an AWS account.
// listTheInvalidations();
```

# Firmare Amazon CloudFront URLs con AWS SDK per PHP la versione 3
<a name="cloudfront-example-signed-url"></a>

Signed ti URLs consente di fornire agli utenti l'accesso ai tuoi contenuti privati. Un URL firmato include ulteriori informazioni (ad esempio, un'ora di scadenza) che offrono un maggiore controllo sull'accesso ai contenuti. Queste informazioni aggiuntive appaiono in una dichiarazione di policy, basata su una policy predefinita o personalizzata. Per informazioni su come configurare le distribuzioni private e sul motivo per cui devi firmare URLs, consulta [Serving Private Content through Amazon CloudFront nella Amazon](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html) CloudFront Developer Guide.
+ Crea un CloudFront URL Amazon firmato utilizzando [getSigneDurl](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.CloudFront.CloudFrontClient.html#_getSignedUrl).
+ Crea un CloudFront cookie Amazon firmato utilizzando [getSignedCookie](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.CloudFront.CloudFrontClient.html#_getSignedCookie).

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per ulteriori informazioni sull'uso di Amazon CloudFront, consulta l'[Amazon CloudFront Developer Guide](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/).

## Firma CloudFront URLs per distribuzioni private
<a name="signing-cf-urls-for-private-distributions"></a>

Puoi firmare un URL utilizzando il CloudFront client nell'SDK. Innanzitutto, è necessario creare un oggetto `CloudFrontClient`. Puoi firmare un CloudFront URL per una risorsa video utilizzando una politica predefinita o personalizzata.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\CloudFront\CloudFrontClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function signPrivateDistribution(
    $cloudFrontClient,
    $resourceKey,
    $expires,
    $privateKey,
    $keyPairId
) {
    try {
        $result = $cloudFrontClient->getSignedUrl([
            'url' => $resourceKey,
            'expires' => $expires,
            'private_key' => $privateKey,
            'key_pair_id' => $keyPairId
        ]);

        return $result;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function signAPrivateDistribution()
{
    $resourceKey = 'https://d13l49jEXAMPLE.cloudfront.net/my-file.txt';
    $expires = time() + 300; // 5 minutes (5 * 60 seconds) from now.
    $privateKey = dirname(__DIR__) . '/cloudfront/my-private-key.pem';
    $keyPairId = 'AAPKAJIKZATYYYEXAMPLE';

    $cloudFrontClient = new CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    echo signPrivateDistribution(
        $cloudFrontClient,
        $resourceKey,
        $expires,
        $privateKey,
        $keyPairId
    );
}

// Uncomment the following line to run this code in an AWS account.
// signAPrivateDistribution();
```

## Utilizza una politica personalizzata durante la creazione CloudFront URLs
<a name="use-a-custom-policy-when-creating-cf-urls"></a>

Per utilizzare una policy personalizzata, offri la chiave `policy` anziché `expires`.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\CloudFront\CloudFrontClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function signPrivateDistributionPolicy(
    $cloudFrontClient,
    $resourceKey,
    $customPolicy,
    $privateKey,
    $keyPairId
) {
    try {
        $result = $cloudFrontClient->getSignedUrl([
            'url' => $resourceKey,
            'policy' => $customPolicy,
            'private_key' => $privateKey,
            'key_pair_id' => $keyPairId
        ]);

        return $result;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function signAPrivateDistributionPolicy()
{
    $resourceKey = 'https://d13l49jEXAMPLE.cloudfront.net/my-file.txt';
    $expires = time() + 300; // 5 minutes (5 * 60 seconds) from now.
    $customPolicy = <<<POLICY
{
    "Statement": [
        {
            "Resource": "$resourceKey",
            "Condition": {
                "IpAddress": {"AWS:SourceIp": "{$_SERVER['REMOTE_ADDR']}/32"},
                "DateLessThan": {"AWS:EpochTime": $expires}
            }
        }
    ]
}
POLICY;
    $privateKey = dirname(__DIR__) . '/cloudfront/my-private-key.pem';
    $keyPairId = 'AAPKAJIKZATYYYEXAMPLE';

    $cloudFrontClient = new CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    echo signPrivateDistributionPolicy(
        $cloudFrontClient,
        $resourceKey,
        $customPolicy,
        $privateKey,
        $keyPairId
    );
}

// Uncomment the following line to run this code in an AWS account.
// signAPrivateDistributionPolicy();
```

## Usa un URL CloudFront firmato
<a name="use-a-cf-signed-url"></a>

Il formato dell'URL firmato varia a seconda che l'URL che si sta firmando utilizzi lo schema "HTTP" o "RTMP". Nel caso di "HTTP", viene restituito un URL completo e assoluto. Se viene utilizzato lo schema "RTMP", per praticità viene restituito solo un URL relativo. Ciò è dovuto al fatto che alcuni lettori richiedono che l'host e il percorso vengano forniti come parametri separati.

L'esempio seguente mostra come utilizzare l'URL firmato per creare una pagina Web che visualizza un video utilizzando. [JWPlayer](http://www.longtailvideo.com/jw-player/) Lo stesso tipo di tecnica si applicherebbe ad altri giocatori, ad esempio [FlowPlayer](http://flowplayer.org/), ma richiederebbe un codice lato client diverso.

```
<html>
<head>
    <title>|CFlong| Streaming Example</title>
    <script type="text/javascript" src="https://example.com/jwplayer.js"></script>
</head>
<body>
    <div id="video">The canned policy video will be here.</div>
    <script type="text/javascript">
        jwplayer('video').setup({
            file: "<?= $streamHostUrl ?>/cfx/st/<?= $signedUrlCannedPolicy ?>",
            width: "720",
            height: "480"
        });
    </script>
</body>
</html>
```

## CloudFront Cookie di firma per distribuzioni private
<a name="signing-cf-cookies-for-private-distributions"></a>

In alternativa a quelli firmati URLs, puoi anche concedere ai clienti l'accesso a una distribuzione privata tramite cookie firmati. I cookie firmati consentono di fornire accesso a più file con restrizioni, ad esempio, tutti i file per un video in formato HLS o tutti i file nell'area abbonati di un sito Web. Per ulteriori informazioni sul motivo per cui potresti voler utilizzare cookie firmati anziché firmati URLs (o viceversa), consulta [Scelta tra cookie firmati URLs e firmati](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-choosing-signed-urls-cookies.html) nella Amazon CloudFront Developer Guide.

Il processo di creazione di un cookie firmato è simile a quello di creazione di un URL firmato. L'unica differenza è il metodo che viene chiamato (`getSignedCookie` anziché `getSignedUrl`).

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\CloudFront\CloudFrontClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function signCookie(
    $cloudFrontClient,
    $resourceKey,
    $expires,
    $privateKey,
    $keyPairId
) {
    try {
        $result = $cloudFrontClient->getSignedCookie([
            'url' => $resourceKey,
            'expires' => $expires,
            'private_key' => $privateKey,
            'key_pair_id' => $keyPairId
        ]);

        return $result;
    } catch (AwsException $e) {
        return [ 'Error' => $e->getAwsErrorMessage() ];
    }
}

function signACookie()
{
    $resourceKey = 'https://d13l49jEXAMPLE.cloudfront.net/my-file.txt';
    $expires = time() + 300; // 5 minutes (5 * 60 seconds) from now.
    $privateKey = dirname(__DIR__) . '/cloudfront/my-private-key.pem';
    $keyPairId = 'AAPKAJIKZATYYYEXAMPLE';

    $cloudFrontClient = new CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    $result = signCookie(
        $cloudFrontClient,
        $resourceKey,
        $expires,
        $privateKey,
        $keyPairId
    );

    /* If successful, returns something like:
    CloudFront-Expires = 1589926678
    CloudFront-Signature = Lv1DyC2q...2HPXaQ__
    CloudFront-Key-Pair-Id = AAPKAJIKZATYYYEXAMPLE
    */
    foreach ($result as $key => $value) {
        echo $key . ' = ' . $value . "\n";
    }
}

// Uncomment the following line to run this code in an AWS account.
// signACookie();
```

## Utilizza una politica personalizzata per la creazione CloudFront dei cookie
<a name="use-a-custom-policy-when-creating-cf-cookies"></a>

Analogamente a `getSignedUrl`, è possibile fornire un parametro `'policy'` anziché un parametro `expires` e un parametro `url` per firmare un cookie con una policy personalizzata. Una policy personalizzata può contenere caratteri jolly nella chiave risorsa. In questo modo è possibile creare un singolo cookie firmato per più file.

 `getSignedCookie` restituisce una serie di coppie chiave-valore che devono essere impostate come cookie per concedere l'accesso a una distribuzione privata.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\CloudFront\CloudFrontClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function signCookiePolicy(
    $cloudFrontClient,
    $customPolicy,
    $privateKey,
    $keyPairId
) {
    try {
        $result = $cloudFrontClient->getSignedCookie([
            'policy' => $customPolicy,
            'private_key' => $privateKey,
            'key_pair_id' => $keyPairId
        ]);

        return $result;
    } catch (AwsException $e) {
        return [ 'Error' => $e->getAwsErrorMessage() ];
    }
}

function signACookiePolicy()
{
    $resourceKey = 'https://d13l49jEXAMPLE.cloudfront.net/my-file.txt';
    $expires = time() + 300; // 5 minutes (5 * 60 seconds) from now.
    $customPolicy = <<<POLICY
{
    "Statement": [
        {
            "Resource": "{$resourceKey}",
            "Condition": {
                "IpAddress": {"AWS:SourceIp": "{$_SERVER['REMOTE_ADDR']}/32"},
                "DateLessThan": {"AWS:EpochTime": {$expires}}
            }
        }
    ]
}
POLICY;
    $privateKey = dirname(__DIR__) . '/cloudfront/my-private-key.pem';
    $keyPairId = 'AAPKAJIKZATYYYEXAMPLE';

    $cloudFrontClient = new CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    $result = signCookiePolicy(
        $cloudFrontClient,
        $customPolicy,
        $privateKey,
        $keyPairId
    );

    /* If successful, returns something like:
    CloudFront-Policy = eyJTdGF0...fX19XX0_
    CloudFront-Signature = RowqEQWZ...N8vetw__
    CloudFront-Key-Pair-Id = AAPKAJIKZATYYYEXAMPLE
    */
    foreach ($result as $key => $value) {
        echo $key . ' = ' . $value . "\n";
    }
}

// Uncomment the following line to run this code in an AWS account.
// signACookiePolicy();
```

## Invia CloudFront cookie al client Guzzle
<a name="send-cf-cookies-to-guzzle-client"></a>

È anche possibile trasferire questi cookie a una funzione `GuzzleHttp\Cookie\CookieJar` per l'utilizzo con un client Guzzle.

```
use GuzzleHttp\Client;
use GuzzleHttp\Cookie\CookieJar;

$distribution = "example-distribution.cloudfront.net";
$client = new \GuzzleHttp\Client([
    'base_uri' => "https://$distribution",
    'cookies' => CookieJar::fromArray($signedCookieCustomPolicy, $distribution),
]);

$client->get('video.mp4');
```

Per ulteriori informazioni, consulta [Using Signed Cookies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-cookies.html) nella Amazon CloudFront Developer Guide.

# Firma di richieste di CloudSearch dominio Amazon personalizzate con AWS SDK per PHP la versione 3
<a name="service_cloudsearch-custom-requests"></a>

Le richieste di CloudSearch dominio Amazon possono essere personalizzate oltre a quanto supportato da AWS SDK per PHP. [Nei casi in cui è necessario effettuare richieste personalizzate a domini protetti dall'autenticazione IAM, è possibile utilizzare i fornitori di credenziali e i firmatari dell'SDK per firmare qualsiasi richiesta PSR-7.](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Psr.Http.Message.RequestInterface.html)

Ad esempio, se segui la [Guida alle operazioni di base di Cloud Search](https://docs.aws.amazon.com/cloudsearch/latest/developerguide/getting-started.html) e desideri utilizzare un dominio protetto di IAM per la [Fase 3](https://docs.aws.amazon.com/cloudsearch/latest/developerguide/getting-started-search.html), devi firmare ed eseguire la tua richiesta come segue.

Gli esempi seguenti mostrano come:
+ [Firma una richiesta con il protocollo di firma utilizzando SignatureV4. AWS](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Signature.SignatureV4.html#_signRequest)

[Tutto il codice di esempio per il AWS SDK per PHP è disponibile qui. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Firma la richiesta di CloudSearch dominio Amazon
<a name="sign-cslong-domain-request"></a>

 **Importazioni** 

```
require './vendor/autoload.php';

use Aws\Credentials\CredentialProvider;
use Aws\Signature\SignatureV4;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
```

 **Codice di esempio** 

```
function searchDomain(
    $client,
    $domainName,
    $domainId,
    $domainRegion,
    $searchString
) {
    $domainPrefix = 'search-';
    $cloudSearchDomain = 'cloudsearch.amazonaws.com';
    $cloudSearchVersion = '2013-01-01';
    $searchPrefix = 'search?';

    // Specify the search to send.
    $request = new Request(
        'GET',
        "https://$domainPrefix$domainName-$domainId.$domainRegion." .
            "$cloudSearchDomain/$cloudSearchVersion/" .
            "$searchPrefix$searchString"
    );

    // Get default AWS account access credentials.
    $credentials = call_user_func(CredentialProvider::defaultProvider())->wait();

    // Sign the search request with the credentials.
    $signer = new SignatureV4('cloudsearch', $domainRegion);
    $request = $signer->signRequest($request, $credentials);

    // Send the signed search request.
    $response = $client->send($request);

    // Report the search results, if any.
    $results = json_decode($response->getBody());

    $message = '';

    if ($results->hits->found > 0) {
        $message .= 'Search results:' . "\n";

        foreach ($results->hits->hit as $hit) {
            $message .= $hit->fields->title . "\n";
        }
    } else {
        $message .= 'No search results.';
    }

    return $message;
}

function searchADomain()
{
    $domainName = 'my-search-domain';
    $domainId = '7kbitd6nyiglhdtmssxEXAMPLE';
    $domainRegion = 'us-east-1';
    $searchString = 'q=star+wars&return=title';
    $client = new Client();

    echo searchDomain(
        $client,
        $domainName,
        $domainId,
        $domainRegion,
        $searchString
    );
}

// Uncomment the following line to run this code in an AWS account.
// searchADomain();
```

# CloudWatch Esempi di Amazon che utilizzano la AWS SDK per PHP versione 3
<a name="cw-examples"></a>

Amazon CloudWatch (CloudWatch) è un servizio web che monitora le tue risorse Amazon Web Services e le applicazioni su cui esegui AWS in tempo reale. Puoi utilizzarlo CloudWatch per raccogliere e tenere traccia delle metriche, che sono variabili che puoi misurare per le tue risorse e applicazioni. CloudWatch gli allarmi inviano notifiche o apportano automaticamente modifiche alle risorse che stai monitorando in base a regole da te definite.

Tutto il codice di esempio per AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

**Topics**
+ [Credenziali](#examplecredentials)
+ [Utilizzo degli CloudWatch allarmi Amazon](cw-examples-work-with-alarms.md)
+ [Ottenere metriche da CloudWatch](cw-examples-getting-metrics.md)
+ [Pubblicazione di metriche personalizzate in Amazon CloudWatch](cw-examples-publishing-custom-metrics.md)
+ [Invio di eventi ad Amazon CloudWatch events](cw-examples-sending-events.md)
+ [Utilizzo delle azioni di allarme con gli CloudWatch allarmi Amazon](cw-examples-using-alarm-actions.md)

# Utilizzo degli CloudWatch allarmi Amazon con la AWS SDK per PHP versione 3
<a name="cw-examples-work-with-alarms"></a>

Una CloudWatch sveglia Amazon rileva una singola metrica per un periodo di tempo specificato. L'allarme esegue una o più operazioni basate sul valore del parametro relativo a una soglia prestabilita per un certo numero di periodi.

Gli esempi seguenti mostrano come:
+ Descrivi un allarme utilizzando [DescribeAlarms](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#describealarms).
+ Crea un allarme usando [PutMetricAlarm](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#putmetricalarm).
+ Eliminare un allarme utilizzando [DeleteAlarms](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#deletealarms).

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Descrizione di allarmi
<a name="describe-alarms"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function describeAlarms($cloudWatchClient)
{
    try {
        $result = $cloudWatchClient->describeAlarms();

        $message = '';

        if (isset($result['@metadata']['effectiveUri'])) {
            $message .= 'Alarms at the effective URI of ' .
                $result['@metadata']['effectiveUri'] . "\n\n";

            if (isset($result['CompositeAlarms'])) {
                $message .= "Composite alarms:\n";

                foreach ($result['CompositeAlarms'] as $alarm) {
                    $message .= $alarm['AlarmName'] . "\n";
                }
            } else {
                $message .= "No composite alarms found.\n";
            }

            if (isset($result['MetricAlarms'])) {
                $message .= "Metric alarms:\n";

                foreach ($result['MetricAlarms'] as $alarm) {
                    $message .= $alarm['AlarmName'] . "\n";
                }
            } else {
                $message .= 'No metric alarms found.';
            }
        } else {
            $message .= 'No alarms found.';
        }

        return $message;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function describeTheAlarms()
{
    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2010-08-01'
    ]);

    echo describeAlarms($cloudWatchClient);
}

// Uncomment the following line to run this code in an AWS account.
// describeTheAlarms();
```

## Creazione di un allarme
<a name="create-an-alarm"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function putMetricAlarm(
    $cloudWatchClient,
    $cloudWatchRegion,
    $alarmName,
    $namespace,
    $metricName,
    $dimensions,
    $statistic,
    $period,
    $comparison,
    $threshold,
    $evaluationPeriods
) {
    try {
        $result = $cloudWatchClient->putMetricAlarm([
            'AlarmName' => $alarmName,
            'Namespace' => $namespace,
            'MetricName' => $metricName,
            'Dimensions' => $dimensions,
            'Statistic' => $statistic,
            'Period' => $period,
            'ComparisonOperator' => $comparison,
            'Threshold' => $threshold,
            'EvaluationPeriods' => $evaluationPeriods
        ]);

        if (isset($result['@metadata']['effectiveUri'])) {
            if (
                $result['@metadata']['effectiveUri'] ==
                'https://monitoring.' . $cloudWatchRegion . '.amazonaws.com'
            ) {
                return 'Successfully created or updated specified alarm.';
            } else {
                return 'Could not create or update specified alarm.';
            }
        } else {
            return 'Could not create or update specified alarm.';
        }
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function putTheMetricAlarm()
{
    $alarmName = 'my-ec2-resources';
    $namespace = 'AWS/Usage';
    $metricName = 'ResourceCount';
    $dimensions = [
        [
            'Name' => 'Type',
            'Value' => 'Resource'
        ],
        [
            'Name' => 'Resource',
            'Value' => 'vCPU'
        ],
        [
            'Name' => 'Service',
            'Value' => 'EC2'
        ],
        [
            'Name' => 'Class',
            'Value' => 'Standard/OnDemand'
        ]
    ];
    $statistic = 'Average';
    $period = 300;
    $comparison = 'GreaterThanThreshold';
    $threshold = 1;
    $evaluationPeriods = 1;

    $cloudWatchRegion = 'us-east-1';
    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => $cloudWatchRegion,
        'version' => '2010-08-01'
    ]);

    echo putMetricAlarm(
        $cloudWatchClient,
        $cloudWatchRegion,
        $alarmName,
        $namespace,
        $metricName,
        $dimensions,
        $statistic,
        $period,
        $comparison,
        $threshold,
        $evaluationPeriods
    );
}

// Uncomment the following line to run this code in an AWS account.
// putTheMetricAlarm();
```

## Eliminare allarmi
<a name="delete-alarms"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function deleteAlarms($cloudWatchClient, $alarmNames)
{
    try {
        $result = $cloudWatchClient->deleteAlarms([
            'AlarmNames' => $alarmNames
        ]);

        return 'The specified alarms at the following effective URI have ' .
            'been deleted or do not currently exist: ' .
            $result['@metadata']['effectiveUri'];
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function deleteTheAlarms()
{
    $alarmNames = array('my-alarm');

    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2010-08-01'
    ]);

    echo deleteAlarms($cloudWatchClient, $alarmNames);
}

// Uncomment the following line to run this code in an AWS account.
// deleteTheAlarms();
```

# Ottenere metriche da Amazon CloudWatch con la AWS SDK per PHP versione 3
<a name="cw-examples-getting-metrics"></a>

I parametri sono dati riguardanti le prestazioni dei sistemi. Puoi abilitare il monitoraggio dettagliato di alcune risorse, come le EC2 istanze Amazon, o dei parametri delle tue applicazioni.

Gli esempi seguenti mostrano come:
+ Elenca le metriche utilizzando. [ListMetrics](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#listmetrics)
+ Recupera gli allarmi per una metrica utilizzando. [DescribeAlarmsForMetric](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#describealarmsformetric)
+ Ottieni statistiche per una metrica specificata utilizzando. [GetMetricStatistics](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#getmetricstatistics)

Tutto il codice di esempio per AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Elencare parametri
<a name="list-metrics"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function listMetrics($cloudWatchClient)
{
    try {
        $result = $cloudWatchClient->listMetrics();

        $message = '';

        if (isset($result['@metadata']['effectiveUri'])) {
            $message .= 'For the effective URI at ' .
                $result['@metadata']['effectiveUri'] . ":\n\n";

            if (
                (isset($result['Metrics'])) and
                (count($result['Metrics']) > 0)
            ) {
                $message .= "Metrics found:\n\n";

                foreach ($result['Metrics'] as $metric) {
                    $message .= 'For metric ' . $metric['MetricName'] .
                        ' in namespace ' . $metric['Namespace'] . ":\n";

                    if (
                        (isset($metric['Dimensions'])) and
                        (count($metric['Dimensions']) > 0)
                    ) {
                        $message .= "Dimensions:\n";

                        foreach ($metric['Dimensions'] as $dimension) {
                            $message .= 'Name: ' . $dimension['Name'] .
                                ', Value: ' . $dimension['Value'] . "\n";
                        }

                        $message .= "\n";
                    } else {
                        $message .= "No dimensions.\n\n";
                    }
                }
            } else {
                $message .= 'No metrics found.';
            }
        } else {
            $message .= 'No metrics found.';
        }

        return $message;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function listTheMetrics()
{
    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2010-08-01'
    ]);

    echo listMetrics($cloudWatchClient);
}

// Uncomment the following line to run this code in an AWS account.
// listTheMetrics();
```

## Recupera gli allarmi per una metrica
<a name="retrieve-alarms-for-a-metric"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function describeAlarmsForMetric(
    $cloudWatchClient,
    $metricName,
    $namespace,
    $dimensions
) {
    try {
        $result = $cloudWatchClient->describeAlarmsForMetric([
            'MetricName' => $metricName,
            'Namespace' => $namespace,
            'Dimensions' => $dimensions
        ]);

        $message = '';

        if (isset($result['@metadata']['effectiveUri'])) {
            $message .= 'At the effective URI of ' .
                $result['@metadata']['effectiveUri'] . ":\n\n";

            if (
                (isset($result['MetricAlarms'])) and
                (count($result['MetricAlarms']) > 0)
            ) {
                $message .= 'Matching alarms for ' . $metricName . ":\n\n";

                foreach ($result['MetricAlarms'] as $alarm) {
                    $message .= $alarm['AlarmName'] . "\n";
                }
            } else {
                $message .= 'No matching alarms found for ' . $metricName . '.';
            }
        } else {
            $message .= 'No matching alarms found for ' . $metricName . '.';
        }

        return $message;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function describeTheAlarmsForMetric()
{
    $metricName = 'BucketSizeBytes';
    $namespace = 'AWS/S3';
    $dimensions = [
        [
            'Name' => 'StorageType',
            'Value' => 'StandardStorage'
        ],
        [
            'Name' => 'BucketName',
            'Value' => 'amzn-s3-demo-bucket'
        ]
    ];

    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2010-08-01'
    ]);

    echo describeAlarmsForMetric(
        $cloudWatchClient,
        $metricName,
        $namespace,
        $dimensions
    );
}

// Uncomment the following line to run this code in an AWS account.
// describeTheAlarmsForMetric();
```

## Ottenere le statistiche di un parametro
<a name="get-metric-statistics"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function getMetricStatistics(
    $cloudWatchClient,
    $namespace,
    $metricName,
    $dimensions,
    $startTime,
    $endTime,
    $period,
    $statistics,
    $unit
) {
    try {
        $result = $cloudWatchClient->getMetricStatistics([
            'Namespace' => $namespace,
            'MetricName' => $metricName,
            'Dimensions' => $dimensions,
            'StartTime' => $startTime,
            'EndTime' => $endTime,
            'Period' => $period,
            'Statistics' => $statistics,
            'Unit' => $unit
        ]);

        $message = '';

        if (isset($result['@metadata']['effectiveUri'])) {
            $message .= 'For the effective URI at ' .
                $result['@metadata']['effectiveUri'] . "\n\n";

            if (
                (isset($result['Datapoints'])) and
                (count($result['Datapoints']) > 0)
            ) {
                $message .= "Datapoints found:\n\n";

                foreach ($result['Datapoints'] as $datapoint) {
                    foreach ($datapoint as $key => $value) {
                        $message .= $key . ' = ' . $value . "\n";
                    }

                    $message .= "\n";
                }
            } else {
                $message .= 'No datapoints found.';
            }
        } else {
            $message .= 'No datapoints found.';
        }

        return $message;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function getTheMetricStatistics()
{
    // Average number of Amazon EC2 vCPUs every 5 minutes within
    // the past 3 hours.
    $namespace = 'AWS/Usage';
    $metricName = 'ResourceCount';
    $dimensions = [
        [
            'Name' => 'Service',
            'Value' => 'EC2'
        ],
        [
            'Name' => 'Resource',
            'Value' => 'vCPU'
        ],
        [
            'Name' => 'Type',
            'Value' => 'Resource'
        ],
        [
            'Name' => 'Class',
            'Value' => 'Standard/OnDemand'
        ]
    ];
    $startTime = strtotime('-3 hours');
    $endTime = strtotime('now');
    $period = 300; // Seconds. (5 minutes = 300 seconds.)
    $statistics = ['Average'];
    $unit = 'None';

    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2010-08-01'
    ]);

    echo getMetricStatistics(
        $cloudWatchClient,
        $namespace,
        $metricName,
        $dimensions,
        $startTime,
        $endTime,
        $period,
        $statistics,
        $unit
    );

    // Another example: average number of bytes of standard storage in the
    // specified Amazon S3 bucket each day for the past 3 days.

    /*
    $namespace = 'AWS/S3';
    $metricName = 'BucketSizeBytes';
    $dimensions = [
        [
            'Name' => 'StorageType',
            'Value'=> 'StandardStorage'
        ],
        [
            'Name' => 'BucketName',
            'Value' => 'amzn-s3-demo-bucket'
        ]
    ];
    $startTime = strtotime('-3 days');
    $endTime = strtotime('now');
    $period = 86400; // Seconds. (1 day = 86400 seconds.)
    $statistics = array('Average');
    $unit = 'Bytes';

    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2010-08-01'
    ]);

    echo getMetricStatistics($cloudWatchClient, $namespace, $metricName,
    $dimensions, $startTime, $endTime, $period, $statistics, $unit);
    */
}

// Uncomment the following line to run this code in an AWS account.
// getTheMetricStatistics();
```

# Pubblicazione di metriche personalizzate in Amazon CloudWatch con la AWS SDK per PHP versione 3
<a name="cw-examples-publishing-custom-metrics"></a>

I parametri sono dati riguardanti le prestazioni dei sistemi. Un allarme monitora un singolo parametro per un periodo di tempo specificato. L'allarme esegue una o più operazioni basate sul valore del parametro relativo a una soglia prestabilita per un certo numero di periodi.

Gli esempi seguenti mostrano come:
+ Pubblica dati metrici utilizzando. [PutMetricData](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#putmetricdata)
+ Crea un allarme utilizzando [PutMetricAlarm](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#putmetricalarm).

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Pubblica i dati metrici
<a name="publish-metric-data"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function putMetricData(
    $cloudWatchClient,
    $cloudWatchRegion,
    $namespace,
    $metricData
) {
    try {
        $result = $cloudWatchClient->putMetricData([
            'Namespace' => $namespace,
            'MetricData' => $metricData
        ]);

        if (isset($result['@metadata']['effectiveUri'])) {
            if (
                $result['@metadata']['effectiveUri'] ==
                'https://monitoring.' . $cloudWatchRegion . '.amazonaws.com'
            ) {
                return 'Successfully published datapoint(s).';
            } else {
                return 'Could not publish datapoint(s).';
            }
        } else {
            return 'Error: Could not publish datapoint(s).';
        }
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function putTheMetricData()
{
    $namespace = 'MyNamespace';
    $metricData = [
        [
            'MetricName' => 'MyMetric',
            'Timestamp' => 1589228818, // 11 May 2020, 20:26:58 UTC.
            'Dimensions' => [
                [
                    'Name' => 'MyDimension1',
                    'Value' => 'MyValue1'

                ],
                [
                    'Name' => 'MyDimension2',
                    'Value' => 'MyValue2'
                ]
            ],
            'Unit' => 'Count',
            'Value' => 1
        ]
    ];

    $cloudWatchRegion = 'us-east-1';
    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => $cloudWatchRegion,
        'version' => '2010-08-01'
    ]);

    echo putMetricData(
        $cloudWatchClient,
        $cloudWatchRegion,
        $namespace,
        $metricData
    );
}

// Uncomment the following line to run this code in an AWS account.
// putTheMetricData();
```

## Creazione di un allarme
<a name="create-an-alarm"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function putMetricAlarm(
    $cloudWatchClient,
    $cloudWatchRegion,
    $alarmName,
    $namespace,
    $metricName,
    $dimensions,
    $statistic,
    $period,
    $comparison,
    $threshold,
    $evaluationPeriods
) {
    try {
        $result = $cloudWatchClient->putMetricAlarm([
            'AlarmName' => $alarmName,
            'Namespace' => $namespace,
            'MetricName' => $metricName,
            'Dimensions' => $dimensions,
            'Statistic' => $statistic,
            'Period' => $period,
            'ComparisonOperator' => $comparison,
            'Threshold' => $threshold,
            'EvaluationPeriods' => $evaluationPeriods
        ]);

        if (isset($result['@metadata']['effectiveUri'])) {
            if (
                $result['@metadata']['effectiveUri'] ==
                'https://monitoring.' . $cloudWatchRegion . '.amazonaws.com'
            ) {
                return 'Successfully created or updated specified alarm.';
            } else {
                return 'Could not create or update specified alarm.';
            }
        } else {
            return 'Could not create or update specified alarm.';
        }
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function putTheMetricAlarm()
{
    $alarmName = 'my-ec2-resources';
    $namespace = 'AWS/Usage';
    $metricName = 'ResourceCount';
    $dimensions = [
        [
            'Name' => 'Type',
            'Value' => 'Resource'
        ],
        [
            'Name' => 'Resource',
            'Value' => 'vCPU'
        ],
        [
            'Name' => 'Service',
            'Value' => 'EC2'
        ],
        [
            'Name' => 'Class',
            'Value' => 'Standard/OnDemand'
        ]
    ];
    $statistic = 'Average';
    $period = 300;
    $comparison = 'GreaterThanThreshold';
    $threshold = 1;
    $evaluationPeriods = 1;

    $cloudWatchRegion = 'us-east-1';
    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => $cloudWatchRegion,
        'version' => '2010-08-01'
    ]);

    echo putMetricAlarm(
        $cloudWatchClient,
        $cloudWatchRegion,
        $alarmName,
        $namespace,
        $metricName,
        $dimensions,
        $statistic,
        $period,
        $comparison,
        $threshold,
        $evaluationPeriods
    );
}

// Uncomment the following line to run this code in an AWS account.
// putTheMetricAlarm();
```

# Invio di eventi ad Amazon CloudWatch Events con AWS SDK per PHP la versione 3
<a name="cw-examples-sending-events"></a>

CloudWatch Events fornisce un flusso quasi in tempo reale di eventi di sistema che descrivono le modifiche nelle risorse di Amazon Web Services (AWS) a qualsiasi destinazione. Utilizzando semplici regole, puoi abbinare gli eventi e instradarli verso una o più funzioni o flussi target.

Gli esempi seguenti mostrano come:
+ Crea una regola utilizzando [PutRule](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-events-2015-10-07.html#putrule).
+ Aggiungi obiettivi a una regola utilizzando [PutTargets](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-events-2015-10-07.html#puttargets).
+ Invia eventi personalizzati a CloudWatch Events utilizzando [PutEvents](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-events-2015-10-07.html#putevents).

Tutto il codice di esempio per AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Creazione di una regola
<a name="create-a-rule"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$client = new Aws\cloudwatchevents\cloudwatcheventsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2015-10-07'
]);

try {
    $result = $client->putRule([
        'Name' => 'DEMO_EVENT', // REQUIRED
        'RoleArn' => 'IAM_ROLE_ARN',
        'ScheduleExpression' => 'rate(5 minutes)',
        'State' => 'ENABLED',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Aggiungere obiettivi a una regola
<a name="add-targets-to-a-rule"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$client = new Aws\cloudwatchevents\cloudwatcheventsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2015-10-07'
]);

try {
    $result = $client->putTargets([
        'Rule' => 'DEMO_EVENT', // REQUIRED
        'Targets' => [ // REQUIRED
            [
                'Arn' => 'LAMBDA_FUNCTION_ARN', // REQUIRED
                'Id' => 'myCloudWatchEventsTarget' // REQUIRED
            ],
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Invio di eventi personalizzati
<a name="send-custom-events"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$client = new Aws\cloudwatchevents\cloudwatcheventsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2015-10-07'
]);

try {
    $result = $client->putEvents([
        'Entries' => [ // REQUIRED
            [
                'Detail' => '<string>',
                'DetailType' => '<string>',
                'Resources' => ['<string>'],
                'Source' => '<string>',
                'Time' => time()
            ],
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Utilizzo delle azioni di allarme con gli CloudWatch allarmi di Amazon con la AWS SDK per PHP versione 3
<a name="cw-examples-using-alarm-actions"></a>

Usa le azioni di allarme per creare allarmi che interrompono, terminano, riavviano o ripristinano automaticamente le tue istanze Amazon. EC2 Puoi utilizzare le operazioni di arresto o termine quando non è più necessaria l'esecuzione di un'istanza. È possibile utilizzare le azioni di riavvio e ripristino per riavviare automaticamente tali istanze.

Gli esempi seguenti mostrano come:
+ Abilita azioni per allarmi specifici utilizzando. [EnableAlarmActions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#enablealarmactions)
+ Disabilita le azioni per allarmi specifici utilizzando. [DisableAlarmActions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#disablealarmactions)

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile GitHub qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Attivare le operazioni di allarme
<a name="enable-alarm-actions"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function enableAlarmActions($cloudWatchClient, $alarmNames)
{
    try {
        $result = $cloudWatchClient->enableAlarmActions([
            'AlarmNames' => $alarmNames
        ]);

        if (isset($result['@metadata']['effectiveUri'])) {
            return 'At the effective URI of ' .
                $result['@metadata']['effectiveUri'] .
                ', actions for any matching alarms have been enabled.';
        } else {
            return'Actions for some matching alarms ' .
                'might not have been enabled.';
        }
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function enableTheAlarmActions()
{
    $alarmNames = array('my-alarm');

    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2010-08-01'
    ]);

    echo enableAlarmActions($cloudWatchClient, $alarmNames);
}

// Uncomment the following line to run this code in an AWS account.
// enableTheAlarmActions();
```

## Disattivare le operazioni di allarme
<a name="disable-alarm-actions"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
function disableAlarmActions($cloudWatchClient, $alarmNames)
{
    try {
        $result = $cloudWatchClient->disableAlarmActions([
            'AlarmNames' => $alarmNames
        ]);

        if (isset($result['@metadata']['effectiveUri'])) {
            return 'At the effective URI of ' .
                $result['@metadata']['effectiveUri'] .
                ', actions for any matching alarms have been disabled.';
        } else {
            return 'Actions for some matching alarms ' .
                'might not have been disabled.';
        }
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function disableTheAlarmActions()
{
    $alarmNames = array('my-alarm');

    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2010-08-01'
    ]);

    echo disableAlarmActions($cloudWatchClient, $alarmNames);
}

// Uncomment the following line to run this code in an AWS account.
// disableTheAlarmActions();
```

# EC2 Esempi di Amazon che utilizzano la AWS SDK per PHP versione 3
<a name="ec2-examples"></a>

Amazon Elastic Compute Cloud (Amazon EC2) è un servizio Web che fornisce hosting di server virtuali nel cloud. È progettato per semplificare il cloud computing su scala web per gli sviluppatori fornendo una capacità di elaborazione ridimensionabile.

[Tutto il codice di esempio per il è disponibile qui. AWS SDK per PHP GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

**Topics**
+ [Credenziali](#examplecredentials)
+ [Gestione delle EC2 istanze Amazon](ec2-examples-managing-instances.md)
+ [Utilizzo di indirizzi IP elastici](ec2-examples-using-elastic-ip-addresses.md)
+ [Utilizzo di regioni e zone di disponibilità](ec2-examples-using-regions-and-zones.md)
+ [Lavorare con coppie di chiavi](ec2-examples-working-with-key-pairs.md)
+ [Utilizzo dei gruppi di sicurezza](ec2-examples-using-security-groups.md)

# Gestione delle EC2 istanze Amazon utilizzando la AWS SDK per PHP versione 3
<a name="ec2-examples-managing-instances"></a>

Gli esempi seguenti mostrano come:
+ Descrivi EC2 le istanze Amazon utilizzando [DescribeInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describeinstances).
+ Abilita il monitoraggio dettagliato per un'istanza in esecuzione utilizzando [MonitorInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#monitorinstances).
+ Disabilita il monitoraggio per un'istanza in esecuzione utilizzando [UnmonitorInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#unmonitorinstances).
+ Avvia un'AMI supportata da Amazon EBS che hai interrotto in precedenza, utilizzando. [StartInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#startinstances)
+ Interrompi l'utilizzo di un'istanza supportata da Amazon EBS. [StopInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#stopinstances)
+ Richiedi il riavvio di una o più istanze utilizzando. [RebootInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#rebootinstances)

Tutto il codice di esempio per AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Descrivere le istanze
<a name="describe-instances"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Ec2\Ec2Client;
```

 **Codice di esempio** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);
$result = $ec2Client->describeInstances();
echo "Instances: \n";
foreach ($result['Reservations'] as $reservation) {
    foreach ($reservation['Instances'] as $instance) {
        echo "InstanceId: {$instance['InstanceId']} - {$instance['State']['Name']} \n";
    }
}
```

## Attivare e disattivare il monitoraggio
<a name="enable-and-disable-monitoring"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';
```

 **Codice di esempio** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$instanceIds = ['InstanceID1', 'InstanceID2'];

$monitorInstance = 'ON';

if ($monitorInstance == 'ON') {
    $result = $ec2Client->monitorInstances([
        'InstanceIds' => $instanceIds
    ]);
} else {
    $result = $ec2Client->unmonitorInstances([
        'InstanceIds' => $instanceIds
    ]);
}

var_dump($result);
```

## Avviare e arrestare un'istanza
<a name="start-and-stop-an-instance"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';
```

 **Codice di esempio** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$action = 'START';

$instanceIds = ['InstanceID1', 'InstanceID2'];

if ($action == 'START') {
    $result = $ec2Client->startInstances([
        'InstanceIds' => $instanceIds,
    ]);
} else {
    $result = $ec2Client->stopInstances([
        'InstanceIds' => $instanceIds,
    ]);
}

var_dump($result);
```

## Riavviare un'istanza
<a name="reboot-an-instance"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';
```

 **Codice di esempio** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$instanceIds = ['InstanceID1', 'InstanceID2'];

$result = $ec2Client->rebootInstances([
    'InstanceIds' => $instanceIds
]);

var_dump($result);
```

# Utilizzo di indirizzi IP elastici con Amazon EC2 con AWS SDK per PHP versione 3
<a name="ec2-examples-using-elastic-ip-addresses"></a>

Un indirizzo IP elastico è un indirizzo IP statico progettato per il cloud computing dinamico. Un indirizzo IP elastico è associato al tuo. Account AWS Si tratta di un indirizzo IP pubblico, raggiungibile da Internet. Se l'istanza in uso non dispone di un indirizzo IP pubblico, puoi associare un indirizzo IP elastico all'istanza per abilitare la comunicazione con Internet.

Gli esempi seguenti mostrano come:
+ Descrivi una o più istanze utilizzando [DescribeInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describeinstances).
+ Acquisisci un indirizzo IP elastico utilizzando [AllocateAddress](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#allocateaddress).
+ Associa un indirizzo IP elastico a un'istanza utilizzando [AssociateAddress](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#associateaddress).
+ Rilascia un indirizzo IP elastico utilizzando [ReleaseAddress](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#releaseaddress).

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Descrivi un'istanza
<a name="describe-an-instance"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Ec2\Ec2Client;
```

 **Codice di esempio** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);
$result = $ec2Client->describeInstances();
echo "Instances: \n";
foreach ($result['Reservations'] as $reservation) {
    foreach ($reservation['Instances'] as $instance) {
        echo "InstanceId: {$instance['InstanceId']} - {$instance['State']['Name']} \n";
    }
}
```

## Assegna e associa un indirizzo
<a name="allocate-and-associate-an-address"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';
```

 **Codice di esempio** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$instanceId = 'InstanceID';

$allocation = $ec2Client->allocateAddress(array(
    'DryRun' => false,
    'Domain' => 'vpc',
));

$result = $ec2Client->associateAddress(array(
    'DryRun' => false,
    'InstanceId' => $instanceId,
    'AllocationId' => $allocation->get('AllocationId')
));

var_dump($result);
```

## Rilascia un indirizzo
<a name="release-an-address"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';
```

 **Codice di esempio** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$associationID = 'AssociationID';

$allocationID = 'AllocationID';

$result = $ec2Client->disassociateAddress([
    'AssociationId' => $associationID,
]);

$result = $ec2Client->releaseAddress([
    'AllocationId' => $allocationID,
]);

var_dump($result);
```

# Utilizzo di regioni e zone di disponibilità per Amazon EC2 con AWS SDK per PHP la versione 3
<a name="ec2-examples-using-regions-and-zones"></a>

Amazon EC2 è ospitato in diverse località in tutto il mondo. Queste località sono composte da AWS regioni e zone di disponibilità. Ogni regione è un'area geografica separata, con più località isolate note come zone di disponibilità. Amazon EC2 offre la possibilità di collocare istanze e dati in più posizioni.

Gli esempi seguenti mostrano come:
+ Descrivi le zone di disponibilità disponibili per l'utilizzo [DescribeAvailabilityZones](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describeavailabilityzones).
+ Descrivi le AWS regioni attualmente disponibili per l'utilizzo [DescribeRegions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describeregions).

Tutto il codice di esempio per AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Descrivere le zone di disponibilità
<a name="describe-availability-zones"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';
```

 **Codice di esempio** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$result = $ec2Client->describeAvailabilityZones();

var_dump($result);
```

## Descrivere le regioni
<a name="describe-regions"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';
```

 **Codice di esempio** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$result = $ec2Client->describeRegions();

var_dump($result);
```

# Utilizzo delle coppie di EC2 chiavi Amazon con AWS SDK per PHP la versione 3
<a name="ec2-examples-working-with-key-pairs"></a>

Amazon EC2 utilizza la crittografia a chiave pubblica per crittografare e decrittografare le informazioni di accesso. La crittografia a chiave pubblica utilizza una chiave pubblica per crittografare i dati. A sua volta, il destinatario utilizza la chiave privata per decrittografare i dati. La chiave pubblica e quella privata sono note come coppia di chiavi.

Gli esempi seguenti mostrano come:
+ Crea una coppia di chiavi RSA a 2048 bit utilizzando. [CreateKeyPair](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#createkeypair)
+ Eliminare una key pair specificata utilizzando [DeleteKeyPair](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#deletekeypair).
+ Descrivi una o più delle tue coppie di chiavi utilizzando [DescribeKeyPairs](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describekeypairs).

Tutto il codice di esempio per AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Creazione di una coppia di chiavi
<a name="create-a-key-pair"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';
```

 **Codice di esempio** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$keyPairName = 'my-keypair';

$result = $ec2Client->createKeyPair(array(
    'KeyName' => $keyPairName
));

// Save the private key
$saveKeyLocation = getenv('HOME') . "/.ssh/{$keyPairName}.pem";
file_put_contents($saveKeyLocation, $result['keyMaterial']);

// Update the key's permissions so it can be used with SSH
chmod($saveKeyLocation, 0600);
```

## Eliminare una coppia di chiavi
<a name="delete-a-key-pair"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';
```

 **Codice di esempio** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$keyPairName = 'my-keypair';

$result = $ec2Client->deleteKeyPair(array(
    'KeyName' => $keyPairName
));

var_dump($result);
```

## Descrivere coppie di chiavi
<a name="describe-key-pairs"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';
```

 **Codice di esempio** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$result = $ec2Client->describeKeyPairs();

var_dump($result);
```

# Lavorare con i gruppi di sicurezza in Amazon EC2 con AWS SDK per PHP la versione 3
<a name="ec2-examples-using-security-groups"></a>

Un gruppo EC2 di sicurezza Amazon funge da firewall virtuale che controlla il traffico per una o più istanze. A ciascun gruppo di sicurezza possono essere aggiunte regole che permettono il traffico da o verso le istanze associate. Puoi modificare le regole di un gruppo di sicurezza in qualsiasi momento. Le nuove regole vengono applicate automaticamente a tutte le istanze associate al gruppo di sicurezza.

Gli esempi seguenti mostrano come:
+ Descrivi uno o più dei tuoi gruppi di sicurezza utilizzando [DescribeSecurityGroups](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describesecuritygroups).
+ Aggiungi una regola di ingresso a un gruppo di sicurezza utilizzando [AuthorizeSecurityGroupIngress](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#authorizesecuritygroupingress).
+ Crea un gruppo di sicurezza utilizzando [CreateSecurityGroup](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#createsecuritygroup).
+ Eliminare un gruppo di sicurezza utilizzando [DeleteSecurityGroup](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#deletesecuritygroup).

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Descrivere i gruppi di sicurezza
<a name="describe-security-groups"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';
```

 **Codice di esempio** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$result = $ec2Client->describeSecurityGroups();

var_dump($result);
```

## Aggiungi una regola di ingresso
<a name="add-an-ingress-rule"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';
```

 **Codice di esempio** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$result = $ec2Client->authorizeSecurityGroupIngress(array(
    'GroupName' => 'string',
    'SourceSecurityGroupName' => 'string'
));

var_dump($result);
```

## Creazione di un gruppo di sicurezza
<a name="create-a-security-group"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';
```

 **Codice di esempio** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

// Create the security group
$securityGroupName = 'my-security-group';
$result = $ec2Client->createSecurityGroup(array(
    'GroupId' => $securityGroupName,

));

// Get the security group ID (optional)
$securityGroupId = $result->get('GroupId');

echo "Security Group ID: " . $securityGroupId . '\n';
```

## Eliminare un gruppo di sicurezza
<a name="delete-a-security-group"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';
```

 **Codice di esempio** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$securityGroupId = 'my-security-group-id';

$result = $ec2Client->deleteSecurityGroup([
    'GroupId' => $securityGroupId
]);

var_dump($result);
```

# Firma di una richiesta OpenSearch di ricerca Amazon Service con AWS SDK per PHP la versione 3
<a name="service_es-data-plane"></a>

Amazon OpenSearch Service è un servizio gestito che semplifica l'implementazione, il funzionamento e la scalabilità di Amazon OpenSearch Service, un popolare motore di ricerca e analisi open source. OpenSearch Il servizio offre accesso diretto all'API OpenSearch di Amazon Service. Ciò significa che gli sviluppatori possono utilizzare gli strumenti con cui hanno familiarità, oltre a solide opzioni di sicurezza. Molti clienti di Amazon OpenSearch Service supportano la firma delle richieste, ma se utilizzi un client che non lo fa, puoi firmare richieste PSR-7 arbitrarie con i fornitori di credenziali e i firmatari integrati di. AWS SDK per PHP

Gli esempi seguenti mostrano come:
+ [Firma una richiesta con il protocollo di firma utilizzando SignatureV4 AWS .](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Signature.SignatureV4.html#_signRequest)

[Tutto il codice di esempio per il AWS SDK per PHP è disponibile qui. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Firma di una richiesta OpenSearch di assistenza
<a name="signing-an-es-request"></a>

OpenSearch Il servizio utilizza [la versione 4 di Signature](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html). Ciò significa che è necessario firmare le richieste utilizzando il nome di firma del servizio (`es`in questo caso) e la AWS regione del dominio del OpenSearch servizio. Un elenco completo delle regioni supportate dal OpenSearch servizio è disponibile nella [pagina AWS Regioni ed endpoint](https://docs.aws.amazon.com/general/latest/gr/rande.html) del Riferimenti generali di Amazon Web Services. Tuttavia, in questo esempio, firmiamo le richieste relative a un dominio OpenSearch di servizio nella `us-west-2` regione.

Devi fornire le credenziali, cosa che puoi fare con la catena di provider predefinita dell'SDK o con qualsiasi forma di credenziale descritta in [Credenziali per la](guide_credentials.md) versione 3. AWS SDK per PHP Dovrai anche disporre di una [richiesta PSR-7](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Psr.Http.Message.RequestInterface.html) (nel codice di seguito si è presupposto il nome `$psr7Request`).

```
// Pull credentials from the default provider chain
$provider = Aws\Credentials\CredentialProvider::defaultProvider();
$credentials = call_user_func($provider)->wait();

// Create a signer with the service's signing name and Region
$signer = new Aws\Signature\SignatureV4('es', 'us-west-2');

// Sign your request
$signedRequest = $signer->signRequest($psr7Request, $credentials);
```

# AWS Identity and Access Management esempi utilizzando la AWS SDK per PHP versione 3
<a name="iam-examples"></a>

AWS Identity and Access Management (IAM) è un servizio Web che consente ai clienti di Amazon Web Services di gestire gli utenti e le autorizzazioni degli utenti in AWS. Il servizio è destinato alle organizzazioni con più utenti o sistemi nel cloud che utilizzano AWS prodotti. Con IAM, puoi gestire centralmente gli utenti, le credenziali di sicurezza come le chiavi di accesso e le autorizzazioni che controllano le AWS risorse a cui gli utenti possono accedere.

Tutto il codice di esempio per il AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

**Topics**
+ [Credenziali](#examplecredentials)
+ [Gestione delle chiavi di accesso IAM](iam-examples-managing-access-keys.md)
+ [Gestione degli utenti IAM](iam-examples-managing-users.md)
+ [Utilizzo degli alias degli account IAM](iam-examples-using-account-aliases.md)
+ [Lavorare con le politiche IAM](iam-examples-working-with-policies.md)
+ [Utilizzo dei certificati del server IAM](iam-examples-working-with-certs.md)

# Gestione delle chiavi di accesso IAM con AWS SDK per PHP la versione 3
<a name="iam-examples-managing-access-keys"></a>

Gli utenti necessitano delle proprie chiavi di accesso per effettuare chiamate programmatiche a AWS. Per soddisfare questa esigenza, puoi creare, modificare, visualizzare o ruotare le chiavi di accesso (chiave di accesso IDs e chiavi di accesso segrete) per gli utenti IAM. Per impostazione predefinita, quando viene creata una chiave di accesso, il suo stato è Attivo. Pertanto, l'utente può utilizzare la chiave di accesso per le chiamate alle API.

Gli esempi seguenti mostrano come:
+ Crea una chiave di accesso segreta e l'ID della chiave di accesso corrispondente utilizzando [CreateAccessKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#createaccesskey).
+ Restituisce informazioni sulla chiave di accesso IDs associata a un utente IAM che utilizza [ListAccessKeys](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#listaccesskeys).
+ Recupera informazioni su quando una chiave di accesso è stata utilizzata l'ultima volta utilizzando [GetAccessKeyLastUsed](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#getaccesskeylastused).
+ Modifica lo stato di una chiave di accesso da Attivo a Inattivo o viceversa, utilizzando. [UpdateAccessKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#updateaccesskey)
+ Elimina una coppia di key di accesso associata a un utente IAM utilizzando [DeleteAccessKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleteaccesskey).

Tutto il codice di esempio per AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Creare una chiave di accesso
<a name="create-an-access-key"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->createAccessKey([
        'UserName' => 'IAM_USER_NAME',
    ]);
    $keyID = $result['AccessKey']['AccessKeyId'];
    $createDate = $result['AccessKey']['CreateDate'];
    $userName = $result['AccessKey']['UserName'];
    $status = $result['AccessKey']['Status'];
    // $secretKey = $result['AccessKey']['SecretAccessKey']
    echo "<p>AccessKey " . $keyID . " created on " . $createDate . "</p>";
    echo "<p>Username: " . $userName . "</p>";
    echo "<p>Status: " . $status . "</p>";
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Elencare le chiavi di accesso
<a name="list-access-keys"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->listAccessKeys();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Ottieni informazioni sull'ultimo utilizzo di una chiave di accesso
<a name="get-information-about-an-access-key-s-last-use"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->getAccessKeyLastUsed([
        'AccessKeyId' => 'ACCESS_KEY_ID', // REQUIRED
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Aggiornamento di una chiave di accesso
<a name="update-an-access-key"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->updateAccessKey([
        'AccessKeyId' => 'ACCESS_KEY_ID', // REQUIRED
        'Status' => 'Inactive', // REQUIRED
        'UserName' => 'IAM_USER_NAME',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Eliminare una chiave di accesso
<a name="delete-an-access-key"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->deleteAccessKey([
        'AccessKeyId' => 'ACCESS_KEY_ID', // REQUIRED
        'UserName' => 'IAM_USER_NAME',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Gestione degli utenti IAM con AWS SDK per PHP la versione 3
<a name="iam-examples-managing-users"></a>

Un utente IAM è un'entità creata AWS per rappresentare la persona o il servizio con cui lo utilizza per interagire AWS. Un utente in AWS è composto da un nome e da credenziali.

Gli esempi seguenti mostrano come:
+ Crea un nuovo utente IAM utilizzando [CreateUser](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#createuser).
+ Elenca gli utenti IAM che utilizzano [ListUsers](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#listusers).
+ Aggiorna un utente IAM utilizzando [UpdateUser](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#updateuser).
+ Recupera informazioni su un utente IAM utilizzando [GetUser](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#getuser).
+ Elimina un utente IAM utilizzando [DeleteUser](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleteuser).

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Crea un utente IAM
<a name="create-an-iam-user"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->createUser(array(
        // UserName is required
        'UserName' => 'string',
    ));
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Elenca gli utenti IAM
<a name="list-iam-users"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->listUsers();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Aggiorna un utente IAM
<a name="update-an-iam-user"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->updateUser([
        // UserName is required
        'UserName' => 'string1',
        'NewUserName' => 'string'
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Ottieni informazioni su un utente IAM
<a name="get-information-about-an-iam-user"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->getUser([
        'UserName' => 'string',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Elimina un utente IAM
<a name="delete-an-iam-user"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->deleteUser([
        // UserName is required
        'UserName' => 'string'
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Utilizzo degli alias degli account IAM con la AWS SDK per PHP versione 3
<a name="iam-examples-using-account-aliases"></a>

Se desideri che l'URL della tua pagina di accesso contenga il nome della tua azienda o un altro identificativo descrittivo anziché il tuo Account AWS ID, puoi creare un alias per il tuo ID. Account AWS Se crei un Account AWS alias, l'URL della pagina di accesso cambia per incorporare l'alias.

Gli esempi seguenti mostrano come:
+ Crea un alias utilizzando. [CreateAccountAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#createaccountalias)
+ Elenca l'alias associato all' Account AWS utilizzo. [ListAccountAliases](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#listaccountaliases)
+ Eliminare un alias utilizzando. [DeleteAccountAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleteaccountalias)

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile GitHub qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Creare un alias
<a name="create-an-alias"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->createAccountAlias(array(
        // AccountAlias is required
        'AccountAlias' => 'string',
    ));
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Elencare gli alias di un account
<a name="list-account-aliases"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->listAccountAliases();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Eliminare un alias
<a name="delete-an-alias"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->deleteAccountAlias([
        // AccountAlias is required
        'AccountAlias' => 'string',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Utilizzo delle policy IAM con AWS SDK per PHP la versione 3
<a name="iam-examples-working-with-policies"></a>

È possibile concedere autorizzazioni a un utente mediante la creazione di una policy. Una policy è un documento che elenca le azioni che un utente può eseguire e le risorse che tali azioni possono influenzare. Per impostazione predefinita, le azioni o le risorse che non sono esplicitamente consentite sono negate. Le policy possono essere create e collegate a utenti, gruppi di utenti, ruoli assunti da utenti e risorse.

Gli esempi seguenti mostrano come:
+ Crea una politica gestita utilizzando [CreatePolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#createpolicy).
+ Allega una policy a un ruolo utilizzando [AttachRolePolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#attachrolepolicy).
+ Allega una policy a un utente utilizzando [AttachUserPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#attachuserpolicy).
+ Allega una policy a un gruppo utilizzando [AttachGroupPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#attachgrouppolicy).
+ Rimuovi una politica di ruolo utilizzando [DetachRolePolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#detachrolepolicy).
+ Rimuovi una politica utente utilizzando [DetachUserPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#detachuserpolicy).
+ Rimuovi una politica di gruppo utilizzando [DetachGroupPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#detachgrouppolicy).
+ Eliminare una politica gestita utilizzando [DeletePolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deletepolicy).
+ Eliminare una politica di ruolo utilizzando [DeleteRolePolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleterolepolicy).
+ Eliminare una politica utente utilizzando [DeleteUserPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleteuserpolicy).
+ Eliminare una politica di gruppo utilizzando [DeleteGroupPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deletegrouppolicy).

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Creazione di una policy
<a name="create-a-policy"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

$myManagedPolicy = '{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "logs:CreateLogGroup",
            "Resource": "RESOURCE_ARN"
        },
        {
            "Effect": "Allow",
            "Action": [
            "dynamodb:DeleteItem",
            "dynamodb:GetItem",
            "dynamodb:PutItem",
            "dynamodb:Scan",
            "dynamodb:UpdateItem"
        ],
            "Resource": "RESOURCE_ARN"
        }
    ]
}';

try {
    $result = $client->createPolicy(array(
        // PolicyName is required
        'PolicyName' => 'myDynamoDBPolicy',
        // PolicyDocument is required
        'PolicyDocument' => $myManagedPolicy
    ));
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Collegamento di una policy a un ruolo
<a name="attach-a-policy-to-a-role"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

$roleName = 'ROLE_NAME';

$policyName = 'AmazonDynamoDBFullAccess';

$policyArn = 'arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess';

try {
    $attachedRolePolicies = $client->getIterator('ListAttachedRolePolicies', ([
        'RoleName' => $roleName,
    ]));
    if (count($attachedRolePolicies) > 0) {
        foreach ($attachedRolePolicies as $attachedRolePolicy) {
            if ($attachedRolePolicy['PolicyName'] == $policyName) {
                echo $policyName . " is already attached to this role. \n";
                exit();
            }
        }
    }
    $result = $client->attachRolePolicy(array(
        // RoleName is required
        'RoleName' => $roleName,
        // PolicyArn is required
        'PolicyArn' => $policyArn
    ));
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Collegamento di una policy a un utente
<a name="attach-a-policy-to-a-user"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

$userName = 'USER_NAME';

$policyName = 'AmazonDynamoDBFullAccess';

$policyArn = 'arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess';

try {
    $attachedUserPolicies = $client->getIterator('ListAttachedUserPolicies', ([
        'UserName' => $userName,
    ]));
    if (count($attachedUserPolicies) > 0) {
        foreach ($attachedUserPolicies as $attachedUserPolicy) {
            if ($attachedUserPolicy['PolicyName'] == $policyName) {
                echo $policyName . " is already attached to this role. \n";
                exit();
            }
        }
    }
    $result = $client->attachUserPolicy(array(
        // UserName is required
        'UserName' => $userName,
        // PolicyArn is required
        'PolicyArn' => $policyArn,
    ));
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Allega una politica a un gruppo
<a name="attach-a-policy-to-a-group"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->attachGroupPolicy(array(
        // GroupName is required
        'GroupName' => 'string',
        // PolicyArn is required
        'PolicyArn' => 'string',
    ));
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Scollegare una politica utente
<a name="detach-a-user-policy"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->detachUserPolicy([
        // UserName is required
        'UserName' => 'string',
        // PolicyArn is required
        'PolicyArn' => 'string',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Scollegare una politica di gruppo
<a name="detach-a-group-policy"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->detachGroupPolicy([
        // GroupName is required
        'GroupName' => 'string',
        // PolicyArn is required
        'PolicyArn' => 'string',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Eliminazione di una policy
<a name="delete-a-policy"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->deletePolicy(array(
        // PolicyArn is required
        'PolicyArn' => 'string'
    ));
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Eliminazione di una policy del ruolo
<a name="delete-a-role-policy"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->deleteRolePolicy([
        // RoleName is required
        'RoleName' => 'string',
        // PolicyName is required
        'PolicyName' => 'string'
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Eliminare una politica utente
<a name="delete-a-user-policy"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->deleteUserPolicy([
        // UserName is required
        'UserName' => 'string',
        // PolicyName is required
        'PolicyName' => 'string',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Eliminazione di una policy di gruppo
<a name="delete-a-group-policy"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->deleteGroupPolicy(array(
        // GroupName is required
        'GroupName' => 'string',
        // PolicyName is required
        'PolicyName' => 'string',
    ));
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Utilizzo dei certificati del server IAM con AWS SDK per PHP la versione 3
<a name="iam-examples-working-with-certs"></a>

Per abilitare le connessioni HTTPS al tuo sito Web o alla tua applicazione AWS, devi disporre di un certificato SSL/TLS del server. Per utilizzare un certificato ottenuto da un provider esterno con il tuo sito Web o la tua applicazione AWS, devi caricare il certificato su IAM o importarlo in AWS Certificate Manager.

Gli esempi seguenti mostrano come:
+ Elenca i certificati archiviati in IAM utilizzando [ListServerCertificates](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#listservercertificates).
+ Recupera informazioni su un certificato utilizzando [GetServerCertificate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#getservercertificate).
+ Aggiorna un certificato utilizzando [UpdateServerCertificate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#updateservercertificate).
+ Eliminare un certificato utilizzando [DeleteServerCertificate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleteservercertificate).

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Elencare i certificati del server
<a name="list-server-certificates"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->listServerCertificates();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Recuperate un certificato del server
<a name="retrieve-a-server-certificate"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->getServerCertificate([
        // ServerCertificateName is required
        'ServerCertificateName' => 'string',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Aggiornamento di un certificato del server
<a name="update-a-server-certificate"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->updateServerCertificate([
        // ServerCertificateName is required
        'ServerCertificateName' => 'string',
        'NewServerCertificateName' => 'string',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Eliminazione di un certificato del server
<a name="delete-a-server-certificate"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Codice di esempio** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->deleteServerCertificate([
        // ServerCertificateName is required
        'ServerCertificateName' => 'string',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# AWS Key Management Service esempi utilizzando la AWS SDK per PHP versione 3
<a name="kms-examples"></a>

AWS Key Management Service (AWS KMS) è un servizio gestito che semplifica la creazione e il controllo delle chiavi di crittografia utilizzate per crittografare i dati. Per ulteriori informazioni AWS KMS, consulta la [documentazione di Amazon KMS](https://aws.amazon.com/documentation/kms/). Che tu stia scrivendo applicazioni PHP sicure o inviando dati ad altri AWS servizi, ti AWS KMS aiuta a mantenere il controllo su chi può usare le tue chiavi e accedere ai tuoi dati crittografati.

Tutto il codice di esempio per la AWS SDK per PHP versione 3 è [disponibile GitHub qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

**Topics**
+ [Utilizzo delle chiavi](kms-example-keys.md)
+ [Crittografia e decrittografia delle chiavi di dati](kms-example-encrypt.md)
+ [Utilizzo di policy delle chiavi](kms-example-key-policy.md)
+ [Utilizzo delle concessioni](kms-example-grants.md)
+ [Utilizzo degli alias](kms-example-alias.md)

# Lavorare con le chiavi utilizzando l' AWS KMS API e la AWS SDK per PHP versione 3
<a name="kms-example-keys"></a>

Le risorse principali in () sono. AWS Key Management Service AWS KMS[AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) Puoi utilizzare una chiave KMS per crittografare i tuoi dati.

Gli esempi seguenti mostrano come:
+ Crea una chiave KMS del cliente utilizzando. [CreateKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#createkey)
+ Genera una chiave dati utilizzando [GenerateDataKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#generatedatakey).
+ Visualizza una chiave KMS utilizzando [DescribeKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#describekey).
+ Ottieni la chiave IDs e le chiavi ARNS delle chiavi KMS utilizzando. [ListKeys](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listkeys)
+ Abilita le chiavi KMS utilizzando. [EnableKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#enablekey)
+ Disabilita le chiavi KMS utilizzando. [DisableKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#disablekey)

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile GitHub qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per ulteriori informazioni sull'utilizzo di AWS Key Management Service (AWS KMS), consulta la [Guida per gli AWS KMS sviluppatori](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Crea una chiave KMS
<a name="create-a-cmk"></a>

Per creare una [chiave KMS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys), usa l'[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

//Creates a customer master key (CMK) in the caller's AWS account.
$desc = "Key for protecting critical data";

try {
    $result = $KmsClient->createKey([
        'Description' => $desc,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Generazione di una chiave di dati
<a name="generate-a-data-key"></a>

Per generare una chiave di crittografia dei dati, utilizzare l'[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)operazione. Questa operazione restituisce il testo normale e copie crittografate della chiave di dati creata. Specificare AWS KMS key in che modo generare la chiave dati.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$keySpec = 'AES_256';

try {
    $result = $KmsClient->generateDataKey([
        'KeyId' => $keyId,
        'KeySpec' => $keySpec,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Visualizza una chiave KMS
<a name="view-a-cmk"></a>

Per ottenere informazioni dettagliate su una chiave KMS, incluso l'Amazon Resource Name (ARN) della chiave KMS e [lo stato della chiave](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html), utilizza l'operazione. [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)

 `DescribeKey` non ottiene alias. Per ottenere gli alias, usa l'operazione. [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

try {
    $result = $KmsClient->describeKey([
        'KeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Ottieni l'ID della chiave e la chiave ARNs di una chiave KMS
<a name="get-the-key-id-and-key-arns-of-a-cmk"></a>

Per ottenere l'ID e l'ARN della chiave KMS, utilizzare l'operazione. [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$limit = 10;

try {
    $result = $KmsClient->listKeys([
        'Limit' => $limit,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Abilita una chiave KMS
<a name="enable-a-cmk"></a>

Per abilitare una chiave KMS disabilitata, usa l'[EnableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKey.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

try {
    $result = $KmsClient->enableKey([
        'KeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Disattiva una chiave KMS
<a name="disable-a-cmk"></a>

Per disabilitare una chiave KMS, usa l'[DisableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisableKey.html)operazione. La disabilitazione di una chiave KMS ne impedisce l'utilizzo.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

try {
    $result = $KmsClient->disableKey([
        'KeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Crittografia e decrittografia delle chiavi di AWS KMS dati utilizzando la versione 3 AWS SDK per PHP
<a name="kms-example-encrypt"></a>

Le chiavi di dati sono chiavi di crittografia che possono essere usate per crittografare i dati, incluso grandi quantità di dati e altre chiavi di crittografia.

È possibile utilizzare AWS Key Management Service an's (AWS KMS) [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)per generare, crittografare e decrittografare le chiavi di dati.

Gli esempi seguenti mostrano come:
+ Crittografare una chiave di dati utilizzando [Encrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#encrypt).
+ Decrittografare una chiave di dati utilizzando [Decrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#decrypt).
+ Crittografa nuovamente una chiave dati con una nuova chiave KMS utilizzando. [ReEncrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#reencrypt)

[Tutto il codice di esempio per il AWS SDK per PHP è disponibile qui. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per ulteriori informazioni sull'utilizzo di AWS Key Management Service (AWS KMS), consulta la [Guida per gli AWS KMS sviluppatori](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Crittografa
<a name="encrypt"></a>

L'operazione [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) è progettata per crittografare le chiavi dei dati, ma non viene utilizzata di frequente. Le [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)operazioni [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)and restituiscono chiavi di dati crittografate. È possibile utilizzare il `Encypt` metodo quando si spostano dati crittografati in una nuova AWS regione e si desidera crittografare la relativa chiave dati utilizzando una chiave KMS nella nuova regione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$message = pack('c*', 1, 2, 3, 4, 5, 6, 7, 8, 9, 0);

try {
    $result = $KmsClient->encrypt([
        'KeyId' => $keyId,
        'Plaintext' => $message,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Decrypt
<a name="decrypt"></a>

Per decrittografare una chiave di dati, utilizza l'operazione [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html).

`ciphertextBlob`Quello che specifichi deve essere il valore del `CiphertextBlob` campo proveniente da una risposta [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)o [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html). [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$ciphertext = 'Place your cipher text blob here';

try {
    $result = $KmsClient->decrypt([
        'CiphertextBlob' => $ciphertext,
    ]);
    $plaintext = $result['Plaintext'];
    var_dump($plaintext);
} catch (AwsException $e) {
    // Output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Ricrittografa
<a name="reencrypt"></a>

Per decrittografare una chiave dati crittografata e quindi ricrittografare immediatamente la chiave dati con una chiave KMS diversa, utilizza l'operazione. [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) Le operazioni vengono eseguite interamente sul lato server interno AWS KMS, quindi non espongono mai il testo in chiaro all'esterno. AWS KMS

[Il `ciphertextBlob` valore specificato deve essere il valore del `CiphertextBlob` campo di una risposta o [GenerateDataKey[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)Encrypt.](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$ciphertextBlob = 'Place your cipher text blob here';

try {
    $result = $KmsClient->reEncrypt([
        'CiphertextBlob' => $ciphertextBlob,
        'DestinationKeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Utilizzo delle politiche AWS KMS chiave utilizzando la AWS SDK per PHP versione 3
<a name="kms-example-key-policy"></a>

Quando ne crei una [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys), stabilisci chi può utilizzare e gestire quella chiave KMS. Queste autorizzazioni sono contenute in un documento chiamato policy delle chiavi. Puoi utilizzare la politica chiave per aggiungere, rimuovere o modificare le autorizzazioni in qualsiasi momento per una chiave KMS gestita dal cliente, ma non puoi modificare la politica chiave per una chiave KMS AWS gestita. Per ulteriori informazioni, consulta [Autenticazione e controllo degli accessi](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html) per. AWS KMS

Gli esempi seguenti mostrano come:
+ Elenca i nomi delle politiche chiave che utilizzano [ListKeyPolicies](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listkeypolicies).
+ Ottieni una politica chiave utilizzando [GetKeyPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#getkeypolicy).
+ Imposta una politica chiave utilizzando [PutKeyPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#putkeypolicy).

Tutto il codice di esempio per AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per ulteriori informazioni sull'utilizzo di AWS Key Management Service (AWS KMS), consulta la [Guida per gli AWS KMS sviluppatori](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Elenca tutte le politiche chiave
<a name="list-all-key-policies"></a>

Per ottenere i nomi delle politiche chiave per una chiave KMS, usa l'`ListKeyPolicies`operazione. 

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$limit = 10;

try {
    $result = $KmsClient->listKeyPolicies([
        'KeyId' => $keyId,
        'Limit' => $limit,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Recupera una politica chiave
<a name="retrieve-a-key-policy"></a>

Per ottenere la politica chiave per una chiave KMS, usa l'`GetKeyPolicy`operazione.

 `GetKeyPolicy` richiede un nome per la policy. A meno che tu non abbia creato una politica chiave quando hai creato la chiave KMS, l'unico nome di policy valido è quello predefinito. Scopri di più sulla [politica delle chiavi predefinite](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html) nella *Guida per gli AWS Key Management Service sviluppatori*.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$policyName = "default";

try {
    $result = $KmsClient->getKeyPolicy([
        'KeyId' => $keyId,
        'PolicyName' => $policyName
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Imposta una politica chiave
<a name="set-a-key-policy"></a>

Per stabilire o modificare una politica chiave per una chiave KMS, usa l'`PutKeyPolicy`operazione.

 `PutKeyPolicy` richiede un nome per la policy. A meno che tu non abbia creato una politica chiave quando hai creato la chiave KMS, l'unico nome di politica valido è quello predefinito. Scopri di più sulla [politica delle chiavi predefinite](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html) nella *Guida per gli AWS Key Management Service sviluppatori*.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$policyName = "default";

try {
    $result = $KmsClient->putKeyPolicy([
        'KeyId' => $keyId,
        'PolicyName' => $policyName,
        'Policy' => '{ 
            "Version":"2012-10-17",		 	 	  
            "Id": "custom-policy-2016-12-07", 
            "Statement": [ 
                { "Sid": "Enable IAM User Permissions", 
                "Effect": "Allow", 
                "Principal": 
                   { "AWS": "arn:aws:iam::111122223333:user/root" }, 
                "Action": [ "kms:*" ], 
                "Resource": "*" }, 
                { "Sid": "Enable IAM User Permissions", 
                "Effect": "Allow", 
                "Principal":                 
                   { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, 
                "Action": [
                    "kms:Encrypt*",
                    "kms:GenerateDataKey*",
                    "kms:Decrypt*",
                    "kms:DescribeKey*",
                    "kms:ReEncrypt*"
                ], 
                "Resource": "*" }                 
            ]            
        } '
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Lavorare con le sovvenzioni utilizzando l' AWS KMS API e la AWS SDK per PHP versione 3
<a name="kms-example-grants"></a>

Una concessione è un altro meccanismo per fornire le autorizzazioni. È un'alternativa alla politica chiave. Puoi utilizzare le sovvenzioni per concedere un accesso a lungo termine che consenta ai AWS mandanti di utilizzare i servizi AWS Key Management Service (AWS KMS) gestiti dai clienti. [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) *Per ulteriori informazioni, consulta [Grants nella AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) Developer Guide.AWS Key Management Service *

Gli esempi seguenti mostrano come:
+ Crea una sovvenzione per una chiave KMS utilizzando. [CreateGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#creategrant)
+ Visualizza una concessione per una chiave KMS utilizzando. [ListGrants](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listgrants)
+ Ritirare una sovvenzione per l'utilizzo di una chiave KMS. [RetireGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#retiregrant)
+ Revoca una concessione per una chiave KMS utilizzando. [RevokeGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#revokegrant)

[Tutto il codice di esempio per il AWS SDK per PHP è disponibile qui. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per ulteriori informazioni sull'utilizzo di AWS Key Management Service (AWS KMS), consulta la [Guida per gli AWS KMS sviluppatori](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Creazione di una concessione
<a name="create-a-grant"></a>

Per creare una sovvenzione per un AWS KMS key, usa l'[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$granteePrincipal = "arn:aws:iam::111122223333:user/Alice";
$operation = ['Encrypt', 'Decrypt']; // A list of operations that the grant allows.

try {
    $result = $KmsClient->createGrant([
        'GranteePrincipal' => $granteePrincipal,
        'KeyId' => $keyId,
        'Operations' => $operation
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Visualizza una concessione
<a name="view-a-grant"></a>

Per ottenere informazioni dettagliate sulle sovvenzioni concesse a an AWS KMS key, usa l'[ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$limit = 10;

try {
    $result = $KmsClient->listGrants([
        'KeyId' => $keyId,
        'Limit' => $limit,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Ritirare una borsa di studio
<a name="retire-a-grant"></a>

Per ritirare una sovvenzione per un AWS KMS key, usa l'[RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)operazione. Ritira una concessione al termine del suo utilizzo.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$grantToken = 'Place your grant token here';

try {
    $result = $KmsClient->retireGrant([
        'GrantToken' => $grantToken,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}

//Can also identify grant to retire by a combination of the grant ID
//and the Amazon Resource Name (ARN) of the customer master key (CMK)
$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$grantId = 'Unique identifier of the grant returned during CreateGrant operation';

try {
    $result = $KmsClient->retireGrant([
        'GrantId' => $grantToken,
        'KeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Revocare una sovvenzione
<a name="revoke-a-grant"></a>

Per revocare una concessione a un AWS KMS key, usa l'operazione. [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html) Puoi revocare una concessione per negare esplicitamente le operazioni che dipendono da essa.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$grantId = "grant1";

try {
    $result = $KmsClient->revokeGrant([
        'KeyId' => $keyId,
        'GrantId' => $grantId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Lavorare con gli alias utilizzando l' AWS KMS API e la AWS SDK per PHP versione 3
<a name="kms-example-alias"></a>

AWS Key Management Service (AWS KMS) fornisce un nome di visualizzazione opzionale per un alias [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)chiamato.

Gli esempi seguenti mostrano come:
+ Crea un alias utilizzando. [CreateAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#createalias)
+ Visualizza un alias utilizzando. [ListAliases](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listaliases)
+ Aggiorna un alias utilizzando. [UpdateAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#updatealias)
+ Elimina un alias utilizzando. [DeleteAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#deletealias)

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile GitHub qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per ulteriori informazioni sull'utilizzo di AWS Key Management Service (AWS KMS), consulta la [Guida per gli AWS KMS sviluppatori](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Creare un alias
<a name="create-an-alias"></a>

Per creare un alias per una chiave KMS, usa l'[CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html)operazione. L'alias deve essere univoco nell'account e nella regione. AWS Se crei un alias per una chiave KMS che ha già un alias, `CreateAlias` crea un altro alias per la stessa chiave KMS. Non sostituisce l'alias esistente.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$aliasName = "alias/projectKey1";

try {
    $result = $KmsClient->createAlias([
        'AliasName' => $aliasName,
        'TargetKeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Visualizza un alias
<a name="view-an-alias"></a>

Per elencare tutti gli alias del chiamante Account AWS e Regione AWS, usa l'operazione. [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html) 

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$limit = 10;

try {
    $result = $KmsClient->listAliases([
        'Limit' => $limit,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Aggiornare un alias
<a name="update-an-alias"></a>

Per associare un alias esistente a una chiave KMS diversa, usa l'operazione. [UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateAlias.html)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$aliasName = "alias/projectKey1";

try {
    $result = $KmsClient->updateAlias([
        'AliasName' => $aliasName,
        'TargetKeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Eliminare un alias
<a name="delete-an-alias"></a>

Per eliminare un alias, usa l'operazione. [DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html) L'eliminazione di un alias non ha alcun effetto sulla chiave KMS sottostante.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$aliasName = "alias/projectKey1";

try {
    $result = $KmsClient->deleteAlias([
        'AliasName' => $aliasName,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Esempi di Amazon Kinesis con la versione 3 AWS SDK per PHP
<a name="kinesis-examples"></a>

Amazon Kinesis è un AWS servizio che raccoglie, elabora e analizza i dati in tempo reale. Configura i tuoi flussi di dati con Amazon Kinesis Data Streams o usa Amazon Data Firehose per inviare dati ad Amazon S3, OpenSearch Service, Amazon Redshift o Splunk.

Per ulteriori informazioni su Kinesis, consulta la documentazione di [Amazon Kinesis](https://docs.aws.amazon.com/kinesis/index.html).

Tutto il codice di esempio per la AWS SDK per PHP versione 3 è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

**Topics**
+ [Flussi di dati Kinesis](kinesis-example-data-stream.md)
+ [Frammenti Kinesis](kinesis-example-shard.md)
+ [Flussi di distribuzione di Kinesis Data Firehose](kinesis-firehose-example-delivery-stream.md)

# Creazione di flussi di dati utilizzando l'API Kinesis Data Streams e la versione 3 AWS SDK per PHP
<a name="kinesis-example-data-stream"></a>

Amazon Kinesis Data Streams consente di inviare dati in tempo reale. Crea un produttore di dati con Kinesis Data Streams che fornisca dati alla destinazione configurata ogni volta che aggiungi dati.

Per ulteriori informazioni, consulta [Creating and Managing Streams](https://docs.aws.amazon.com/kinesis/latest/dev/working-with-streams.html.html) nella Amazon Kinesis Developer Guide.

Gli esempi seguenti mostrano come:
+ Crea un flusso di dati utilizzando. [CreateAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#createstream)
+ Ottieni dettagli su un singolo flusso di dati utilizzando [DescribeStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#describestream).
+ Elenca i flussi di dati esistenti utilizzando [ListStreams](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#liststreams).
+ Invia dati a un flusso di dati esistente utilizzando [PutRecord](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#putrecord).
+ Eliminare un flusso di dati utilizzando [DeleteStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#deletestream).

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per ulteriori informazioni sull'uso di Amazon Kinesis Developer Guide, consulta la [Amazon Kinesis](https://docs.aws.amazon.com/kinesis/latest/dev/) Data Streams Developer Guide.

## Creare un flusso di dati utilizzando un flusso di dati Kinesis
<a name="create-a-data-stream-using-a-ak-data-stream"></a>

Stabilisci un flusso di dati Kinesis in cui inviare le informazioni che devono essere elaborate da Kinesis utilizzando il seguente esempio di codice. Scopri di più sulla [creazione e l'aggiornamento di flussi di dati](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) nella Amazon Kinesis Developer Guide.

Per creare un flusso di dati Kinesis, usa l'[CreateStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_CreateStream.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$kinesisClient = new Aws\Kinesis\KinesisClient([
    'profile' => 'default',
    'version' => '2013-12-02',
    'region' => 'us-east-2'
]);

$shardCount = 2;
$name = "my_stream_name";

try {
    $result = $kinesisClient->createStream([
        'ShardCount' => $shardCount,
        'StreamName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Recupera un flusso di dati
<a name="retrieve-a-data-stream"></a>

Ottieni informazioni dettagliate su un flusso di dati esistente utilizzando il seguente codice di esempio. Per impostazione predefinita, restituisce informazioni sui primi 10 shard collegati al flusso di dati Kinesis specificato. Ricordati `StreamStatus` di controllare la risposta prima di scrivere dati su un flusso di dati Kinesis.

Per recuperare i dettagli su un flusso di dati Kinesis specificato, usa l'[DescribeStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStream.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$kinesisClient = new Aws\Kinesis\KinesisClient([
    'profile' => 'default',
    'version' => '2013-12-02',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";

try {
    $result = $kinesisClient->describeStream([
        'StreamName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Elenca i flussi di dati esistenti collegati a Kinesis
<a name="list-existing-data-streams-that-are-connected-to-ak"></a>

Elenca i primi 10 flussi di dati provenienti dalla tua Account AWS regione selezionata. AWS Utilizza il ``HasMoreStreams` restituito per stabilire se ci sono più flussi associati al tuo account.

Per elencare i tuoi flussi di dati Kinesis, usa l'operazione. [ListStreams](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListStreams.html)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$kinesisClient = new Aws\Kinesis\KinesisClient([
    'profile' => 'default',
    'version' => '2013-12-02',
    'region' => 'us-east-2'
]);

try {
    $result = $kinesisClient->listStreams();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Invia dati a un flusso di dati esistente
<a name="send-data-to-an-existing-data-stream"></a>

Dopo aver creato un flusso di dati, utilizza il seguente esempio per l'invio dei dati. Prima di inviare i dati, utilizza `DescribeStream` per controllare se i dati `StreamStatus` sono attivi.

Per scrivere un singolo record di dati in un flusso di dati Kinesis, usa l'[PutRecord](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html)operazione. Per scrivere fino a 500 record in un flusso di dati Kinesis, usa l'[PutRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$kinesisClient = new Aws\Kinesis\KinesisClient([
    'profile' => 'default',
    'version' => '2013-12-02',
    'region' => 'us-east-1'
]);

$name = "my_stream_name";
$content = '{"ticker_symbol":"QXZ", "sector":"HEALTHCARE", "change":-0.05, "price":84.51}';
$groupID = "input to a hash function that maps the partition key (and associated data) to a specific shard";

try {
    $result = $kinesisClient->PutRecord([
        'Data' => $content,
        'StreamName' => $name,
        'PartitionKey' => $groupID
    ]);
    print("<p>ShardID = " . $result["ShardId"] . "</p>");
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Eliminare un flusso di dati
<a name="delete-a-data-stream"></a>

Questo esempio illustra come eliminare un flusso di dati. L'eliminazione di un flusso di dati, inoltre, elimina tutti i dati inviati al flusso di dati. I flussi di dati Active Kinesis passano allo stato ELIMINAZIONE fino al completamento dell'eliminazione del flusso. Mentre è nello stato DELETING, il flusso continua a elaborare i dati.

Per eliminare un flusso di dati Kinesis, usa l'[DeleteStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DeleteStream.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$kinesisClient = new Aws\Kinesis\KinesisClient([
    'profile' => 'default',
    'version' => '2013-12-02',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";

try {
    $result = $kinesisClient->deleteStream([
        'StreamName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Gestisci i frammenti di dati utilizzando l'API Kinesis Data Streams e la versione 3 AWS SDK per PHP
<a name="kinesis-example-shard"></a>

Amazon Kinesis Data Streams consente di inviare dati in tempo reale a un endpoint. La velocità del flusso di dati dipende dal numero di shard nel tuo flusso.

È possibile scrivere 1.000 record al secondo in un singolo shard. Ogni shard ha inoltre un limite di caricamento di 1 MiB al secondo. L'utilizzo viene calcolato e applicato per shard, quindi utilizza questi esempi per gestire la capacità dei dati e il costo del flusso.

Gli esempi seguenti mostrano come:
+ Elenca gli shard in uno stream utilizzando. [ListShards](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#listshards)
+ Aggiungi o riduci il numero di frammenti in uno stream utilizzando. [UpdateShardCount](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#updateshardcount)

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile GitHub qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per ulteriori informazioni sull'uso di Amazon Kinesis Data Streams, [consulta la Amazon Kinesis Data Streams Developer Guide](https://docs.aws.amazon.com/streams/latest/dev/).

## Elenca i frammenti di flussi di dati
<a name="list-data-stream-shards"></a>

Elenca i dettagli di un massimo di 100 shard in un flusso specifico.

Per elencare gli shard in un flusso di dati Kinesis, usa l'[ListShards](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListShards.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$kinesisClient = new Aws\Kinesis\KinesisClient([
    'profile' => 'default',
    'version' => '2013-12-02',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";

try {
    $result = $kinesisClient->ListShards([
        'StreamName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Aggiungi altri shard di flussi di dati
<a name="add-more-data-stream-shards"></a>

Se hai bisogno di più shard dei flussi di dati, è possibile aumentare il tuo attuale numero di shard. Consigliamo di raddoppiare il tuo conteggio di shard nella fase di incremento. In questo modo viene eseguita una copia di ciascun shard attualmente disponibile per aumentare le tue capacità. È possibile raddoppiare il numero di shard solo due volte in un periodo di 24 ore.

Ricorda che la fatturazione per l'utilizzo di Kinesis Data Streams viene calcolata per shard, quindi quando la domanda diminuisce, ti consigliamo di dimezzare il numero di shard. Quando elimini gli shard, puoi solo ridurre la quantità di shard a metà del tuo attuale conteggio di shard.

Per aggiornare il numero di shard di un flusso di dati Kinesis, usa l'[UpdateShardCount](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_UpdateShardCount.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$kinesisClient = new Aws\Kinesis\KinesisClient([
    'profile' => 'default',
    'version' => '2013-12-02',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";
$totalshards = 4;

try {
    $result = $kinesisClient->UpdateShardCount([
        'ScalingType' => 'UNIFORM_SCALING',
        'StreamName' => $name,
        'TargetShardCount' => $totalshards
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Creazione di flussi di distribuzione utilizzando l'API Firehose e AWS SDK per PHP la versione 3
<a name="kinesis-firehose-example-delivery-stream"></a>

Amazon Data Firehose consente di inviare dati in tempo reale ad altri AWS servizi, tra cui Amazon Kinesis Data Streams, Amazon S3, Amazon OpenSearch Service (Service) e OpenSearch Amazon Redshift, oppure a Splunk. Creare un produttore dati con flussi di distribuzione per fornire i dati alla destinazione configurata ogni volta che aggiungi dati.

Gli esempi seguenti mostrano come:
+ Crea un flusso di distribuzione utilizzando. [CreateDeliveryStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#createdeliverystream)
+ Ottieni dettagli su un singolo flusso di consegna utilizzando [DescribeDeliveryStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#describedeliverystream).
+ Elenca i tuoi flussi di consegna utilizzando [ListDeliveryStreams](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#listdeliverystreams).
+ Invia dati a un flusso di consegna utilizzando [PutRecord](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#putrecord).
+ Elimina un flusso di consegna utilizzando [DeleteDeliveryStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#deletedeliverystream).

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per ulteriori informazioni sull'uso di Amazon Data Firehose, consulta la [Amazon Kinesis](https://docs.aws.amazon.com/streams/latest/dev/) Data Firehose Developer Guide.

## Crea un flusso di distribuzione utilizzando un flusso di dati Kinesis
<a name="create-a-delivery-stream-using-a-ak-data-stream"></a>

Per stabilire un flusso di distribuzione che inserisca i dati in un flusso di dati Kinesis esistente, usa l'[CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html)operazione.

Ciò consente agli sviluppatori di migrare i servizi Kinesis esistenti su Firehose.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";
$stream_type = "KinesisStreamAsSource";
$kinesis_stream = "arn:aws:kinesis:us-east-2:0123456789:stream/my_stream_name";
$role = "arn:aws:iam::0123456789:policy/Role";

try {
    $result = $firehoseClient->createDeliveryStream([
        'DeliveryStreamName' => $name,
        'DeliveryStreamType' => $stream_type,
        'KinesisStreamSourceConfiguration' => [
            'KinesisStreamARN' => $kinesis_stream,
            'RoleARN' => $role,
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Crea un flusso di distribuzione utilizzando un bucket Amazon S3
<a name="create-a-delivery-stream-using-an-s3-bucket"></a>

Per stabilire un flusso di distribuzione che inserisca i dati in un bucket Amazon S3 esistente, utilizza l'operazione. [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html)

Fornire i parametri di destinazione, come descritto in [Parametri di destinazione](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html). Quindi assicurati di concedere a Firehose l'accesso al tuo bucket Amazon S3, come descritto in Concedere a [Kinesis Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-s3.html) l'accesso a una destinazione Amazon S3.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_S3_stream_name";
$stream_type = "DirectPut";
$s3bucket = 'arn:aws:s3:::bucket_name';
$s3Role = 'arn:aws:iam::0123456789:policy/Role';

try {
    $result = $firehoseClient->createDeliveryStream([
        'DeliveryStreamName' => $name,
        'DeliveryStreamType' => $stream_type,
        'S3DestinationConfiguration' => [
            'BucketARN' => $s3bucket,
            'CloudWatchLoggingOptions' => [
                'Enabled' => false,
            ],
            'RoleARN' => $s3Role
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Crea un flusso di distribuzione utilizzando Service OpenSearch
<a name="create-a-delivery-stream-using-es"></a>

Per stabilire un flusso di distribuzione Firehose che inserisca i dati in un cluster OpenSearch di servizi, utilizzate l'[CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html)operazione.

Fornire i parametri di destinazione, come descritto in [Parametri di destinazione](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html). Assicurati di concedere a Firehose l'accesso al tuo cluster di OpenSearch servizi, come descritto in [Concedere a Kinesis Data Firehose l'accesso a una destinazione](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-es.html) Amazon ES.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_ES_stream_name";
$stream_type = "DirectPut";
$esDomainARN = 'arn:aws:es:us-east-2:0123456789:domain/Name';
$esRole = 'arn:aws:iam::0123456789:policy/Role';
$esIndex = 'root';
$esType = 'PHP_SDK';
$s3bucket = 'arn:aws:s3:::bucket_name';
$s3Role = 'arn:aws:iam::0123456789:policy/Role';

try {
    $result = $firehoseClient->createDeliveryStream([
        'DeliveryStreamName' => $name,
        'DeliveryStreamType' => $stream_type,
        'ElasticsearchDestinationConfiguration' => [
            'DomainARN' => $esDomainARN,
            'IndexName' => $esIndex,
            'RoleARN' => $esRole,
            'S3Configuration' => [
                'BucketARN' => $s3bucket,
                'CloudWatchLoggingOptions' => [
                    'Enabled' => false,
                ],
                'RoleARN' => $s3Role,
            ],
            'TypeName' => $esType,
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Recupera un flusso di distribuzione
<a name="retrieve-a-delivery-stream"></a>

Per ottenere i dettagli su un flusso di distribuzione Firehose esistente, utilizzare l'[DescribeDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_DescribeDeliveryStream.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";

try {
    $result = $firehoseClient->describeDeliveryStream([
        'DeliveryStreamName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Elenca i flussi di distribuzione esistenti collegati a Kinesis Data Streams
<a name="list-existing-delivery-streams-connected-to-aks"></a>

Per elencare tutti i flussi di distribuzione Firehose esistenti che inviano dati a Kinesis Data Streams, utilizzare l'operazione. [ListDeliveryStreams](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ListDeliveryStreams.html)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

try {
    $result = $firehoseClient->listDeliveryStreams([
        'DeliveryStreamType' => 'KinesisStreamAsSource',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Elenca i flussi di consegna esistenti che inviano dati ad altri servizi AWS
<a name="list-existing-delivery-streams-sending-data-to-other-aws-services"></a>

Per elencare tutti i flussi di distribuzione Firehose esistenti che inviano dati ad Amazon S3, Service OpenSearch o Amazon Redshift o a Splunk, utilizza l'operazione. [ListDeliveryStreams](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ListDeliveryStreams.html)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

try {
    $result = $firehoseClient->listDeliveryStreams([
        'DeliveryStreamType' => 'DirectPut',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Inviare dati a un flusso di distribuzione Firehose esistente
<a name="send-data-to-an-existing-akf-delivery-stream"></a>

Per inviare dati tramite un flusso di distribuzione Firehose alla destinazione specificata, utilizzare l'[PutRecord](https://docs.aws.amazon.com/firehose/latest/APIReference/API_API_PutRecord.html)operazione dopo aver creato un flusso di consegna Firehose.

Prima di inviare dati a un flusso di distribuzione Firehose, controllate `DescribeDeliveryStream` se il flusso di distribuzione è attivo.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";
$content = '{"ticker_symbol":"QXZ", "sector":"HEALTHCARE", "change":-0.05, "price":84.51}';

try {
    $result = $firehoseClient->putRecord([
        'DeliveryStreamName' => $name,
        'Record' => [
            'Data' => $content,
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Eliminare un flusso di distribuzione Firehose
<a name="delete-a-akf-delivery-stream"></a>

Per eliminare un flusso di distribuzione Firehose, utilizzare l'[DeleteDeliveryStreams](https://docs.aws.amazon.com/firehose/latest/APIReference/API_DeleteDeliveryStreams.html)operazione. Ciò elimina anche tutti i dati inviati al flusso di distribuzione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";

try {
    $result = $firehoseClient->deleteDeliveryStream([
        'DeliveryStreamName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# AWS Elemental MediaConvert esempi utilizzando la AWS SDK per PHP versione 3
<a name="emc-examples"></a>

AWS Elemental MediaConvert è un servizio di transcodifica video basato su file con funzionalità di livello broadcast. Puoi usarlo per creare risorse per la trasmissione e la distribuzione video-on-demand (VOD) su Internet. Per ulteriori informazioni, consulta la [Guida per l'utente AWS Elemental MediaConvert](https://docs.aws.amazon.com/mediaconvert/latest/ug/).

L'API PHP per AWS Elemental MediaConvert è esposta tramite la classe *`AWS.MediaConvert`*client. Per ulteriori informazioni, consulta il riferimento [https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-mediaconvert-2017-08-29.html](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-mediaconvert-2017-08-29.html)all'API.

## Crea e gestisci lavori di transcodifica in AWS Elemental MediaConvert
<a name="emc-examples-jobs"></a>

In questo esempio, si utilizza la AWS SDK per PHP versione 3 per chiamare AWS Elemental MediaConvert e creare un processo di transcodifica. Prima di iniziare, devi caricare il video di input nel bucket Amazon S3 che hai fornito per lo storage di input. [Per un elenco dei codec e contenitori di input video supportati, consulta Codecs e contenitori di [input supportati nella Guida per l'utente.](https://docs.aws.amazon.com/mediaconvert/latest/ug/reference-codecs-containers-input.html)AWS Elemental MediaConvert](https://docs.aws.amazon.com/mediaconvert/latest/ug/)

Gli esempi seguenti mostrano come:
+ Crea lavori di transcodifica in. AWS Elemental MediaConvert[CreateJob](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-mediaconvert-2017-08-29.html#createjob).
+ Annulla un processo di transcodifica dalla AWS Elemental MediaConvert coda. [CancelJob](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-mediaconvert-2017-08-29.html#canceljob) 
+ Recupera il codice JSON per un processo di transcodifica completato. [GetJob](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-mediaconvert-2017-08-29.html#getjob) 
+ Recupera un array JSON per un massimo di 20 dei lavori creati più di recente. [ListJobs](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-mediaconvert-2017-08-29.html#listjobs) 

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

### Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per accedere al MediaConvert client, crea un ruolo IAM che dia AWS Elemental MediaConvert accesso ai tuoi file di input e ai bucket Amazon S3 in cui sono archiviati i file di output. [Per i dettagli, consulta [Configurare le autorizzazioni IAM nella Guida](https://docs.aws.amazon.com/mediaconvert/latest/ug/iam-role.html) per l'AWS Elemental MediaConvert utente.](https://docs.aws.amazon.com/mediaconvert/latest/ug/)

### Crea un cliente
<a name="create-a-client"></a>

Configuralo AWS SDK per PHP creando un MediaConvert client, con la regione per il tuo codice. In questo esempio, la regione è impostata su us-west-2.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\MediaConvert\MediaConvertClient;
```

 **Codice di esempio** 

```
$mediaConvertClient = new MediaConvertClient([
    'version' => '2017-08-29',
    'region' => 'us-east-2',
    'profile' => 'default'
]);
```

### Definizione di un semplice processo di transcodifica
<a name="defining-a-simple-transcoding-job"></a>

Crea il file JSON che definisce i parametri del processo di transcodifica.

Questi parametri sono dettagliati. È possibile utilizzare la [AWS Elemental MediaConvert console](https://console.aws.amazon.com/mediaconvert/home) per generare i parametri del lavoro JSON scegliendo le impostazioni del processo nella console e quindi selezionando **Mostra lavoro JSON** nella parte inferiore della sezione **Job**. Questo esempio illustra il JSON per un processo semplice.

 **Codice di esempio** 

```
$jobSetting = [
    "OutputGroups" => [
        [
            "Name" => "File Group",
            "OutputGroupSettings" => [
                "Type" => "FILE_GROUP_SETTINGS",
                "FileGroupSettings" => [
                    "Destination" => "s3://OUTPUT_BUCKET_NAME/"
                ]
            ],
            "Outputs" => [
                [
                    "VideoDescription" => [
                        "ScalingBehavior" => "DEFAULT",
                        "TimecodeInsertion" => "DISABLED",
                        "AntiAlias" => "ENABLED",
                        "Sharpness" => 50,
                        "CodecSettings" => [
                            "Codec" => "H_264",
                            "H264Settings" => [
                                "InterlaceMode" => "PROGRESSIVE",
                                "NumberReferenceFrames" => 3,
                                "Syntax" => "DEFAULT",
                                "Softness" => 0,
                                "GopClosedCadence" => 1,
                                "GopSize" => 90,
                                "Slices" => 1,
                                "GopBReference" => "DISABLED",
                                "SlowPal" => "DISABLED",
                                "SpatialAdaptiveQuantization" => "ENABLED",
                                "TemporalAdaptiveQuantization" => "ENABLED",
                                "FlickerAdaptiveQuantization" => "DISABLED",
                                "EntropyEncoding" => "CABAC",
                                "Bitrate" => 5000000,
                                "FramerateControl" => "SPECIFIED",
                                "RateControlMode" => "CBR",
                                "CodecProfile" => "MAIN",
                                "Telecine" => "NONE",
                                "MinIInterval" => 0,
                                "AdaptiveQuantization" => "HIGH",
                                "CodecLevel" => "AUTO",
                                "FieldEncoding" => "PAFF",
                                "SceneChangeDetect" => "ENABLED",
                                "QualityTuningLevel" => "SINGLE_PASS",
                                "FramerateConversionAlgorithm" => "DUPLICATE_DROP",
                                "UnregisteredSeiTimecode" => "DISABLED",
                                "GopSizeUnits" => "FRAMES",
                                "ParControl" => "SPECIFIED",
                                "NumberBFramesBetweenReferenceFrames" => 2,
                                "RepeatPps" => "DISABLED",
                                "FramerateNumerator" => 30,
                                "FramerateDenominator" => 1,
                                "ParNumerator" => 1,
                                "ParDenominator" => 1
                            ]
                        ],
                        "AfdSignaling" => "NONE",
                        "DropFrameTimecode" => "ENABLED",
                        "RespondToAfd" => "NONE",
                        "ColorMetadata" => "INSERT"
                    ],
                    "AudioDescriptions" => [
                        [
                            "AudioTypeControl" => "FOLLOW_INPUT",
                            "CodecSettings" => [
                                "Codec" => "AAC",
                                "AacSettings" => [
                                    "AudioDescriptionBroadcasterMix" => "NORMAL",
                                    "RateControlMode" => "CBR",
                                    "CodecProfile" => "LC",
                                    "CodingMode" => "CODING_MODE_2_0",
                                    "RawFormat" => "NONE",
                                    "SampleRate" => 48000,
                                    "Specification" => "MPEG4",
                                    "Bitrate" => 64000
                                ]
                            ],
                            "LanguageCodeControl" => "FOLLOW_INPUT",
                            "AudioSourceName" => "Audio Selector 1"
                        ]
                    ],
                    "ContainerSettings" => [
                        "Container" => "MP4",
                        "Mp4Settings" => [
                            "CslgAtom" => "INCLUDE",
                            "FreeSpaceBox" => "EXCLUDE",
                            "MoovPlacement" => "PROGRESSIVE_DOWNLOAD"
                        ]
                    ],
                    "NameModifier" => "_1"
                ]
            ]
        ]
    ],
    "AdAvailOffset" => 0,
    "Inputs" => [
        [
            "AudioSelectors" => [
                "Audio Selector 1" => [
                    "Offset" => 0,
                    "DefaultSelection" => "NOT_DEFAULT",
                    "ProgramSelection" => 1,
                    "SelectorType" => "TRACK",
                    "Tracks" => [
                        1
                    ]
                ]
            ],
            "VideoSelector" => [
                "ColorSpace" => "FOLLOW"
            ],
            "FilterEnable" => "AUTO",
            "PsiControl" => "USE_PSI",
            "FilterStrength" => 0,
            "DeblockFilter" => "DISABLED",
            "DenoiseFilter" => "DISABLED",
            "TimecodeSource" => "EMBEDDED",
            "FileInput" => "s3://INPUT_BUCKET_AND_FILE_NAME"
        ]
    ],
    "TimecodeConfig" => [
        "Source" => "EMBEDDED"
    ]
];
```

### Creazione di un processo
<a name="create-a-job"></a>

Dopo aver creato il JSON dei parametri del processo, chiama il metodo createJob invocando un `AWS.MediaConvert service object`e trasferendo i parametri. L'ID del processo creato viene restituito nei dati della risposta.

 **Codice di esempio** 

```
try {
    $result = $mediaConvertClient->createJob([
        "Role" => "IAM_ROLE_ARN",
        "Settings" => $jobSetting, //JobSettings structure
        "Queue" => "JOB_QUEUE_ARN",
        "UserMetadata" => [
            "Customer" => "Amazon"
        ],
    ]);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

### Recupera un lavoro
<a name="retrieve-a-job"></a>

Con il JobID restituito quando viene chiamato createjob, è possibile ottenere descrizioni dettagliate dei processi recenti in formato JSON.

 **Codice di esempio** 

```
$mediaConvertClient = new MediaConvertClient([
    'version' => '2017-08-29',
    'region' => 'us-east-2',
    'profile' => 'default'
]);

try {
    $result = $mediaConvertClient->getJob([
        'Id' => 'JOB_ID',
    ]);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

### Annullamento di un processo
<a name="cancel-a-job"></a>

Con il JobID restituito quando viene chiamato createjob, è possibile annullare un processo mentre è ancora in coda. Non è possibile annullare i processi che hanno già avviato la transcodifica.

 **Codice di esempio** 

```
$mediaConvertClient = new MediaConvertClient([
    'version' => '2017-08-29',
    'region' => 'us-east-2',
    'profile' => 'default'
]);

try {
    $result = $mediaConvertClient->cancelJob([
        'Id' => 'JOB_ID', // REQUIRED The Job ID of the job to be cancelled.
    ]);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

### Elenco dei lavori di transcodifica recenti
<a name="listing-recent-transcoding-jobs"></a>

Crea il JSON dei parametri, inclusi i valori per specificare se ordinare l'elenco in ordine CRESCENTE o DECRESCENTE, l'ARN della coda dei processi da controllare e lo stato dei processi da includere. Vengono restituiti fino a 20 processi. Per recuperare i successivi 20 processi più recenti, utilizza la stringa nextToken restituita con il risultato.

 **Codice di esempio** 

```
$mediaConvertClient = new MediaConvertClient([
    'version' => '2017-08-29',
    'region' => 'us-east-2',
    'profile' => 'default'
]);

try {
    $result = $mediaConvertClient->listJobs([
        'MaxResults' => 20,
        'Order' => 'ASCENDING',
        'Queue' => 'QUEUE_ARN',
        'Status' => 'SUBMITTED',
        // 'NextToken' => '<string>', //OPTIONAL To retrieve the twenty next most recent jobs
    ]);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Esempi di Amazon S3 con la AWS SDK per PHP versione 3
<a name="s3-examples"></a>

Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) è un servizio Web che fornisce storage nel cloud altamente scalabile. Amazon S3 offre uno storage di oggetti facile da usare, con una semplice interfaccia di servizi Web per archiviare e recuperare qualsiasi quantità di dati da qualsiasi punto del Web.

Tutto il codice di esempio per il AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

**Topics**
+ [Credenziali](#examplecredentials)
+ [Creazione e utilizzo di bucket Amazon S3](s3-examples-creating-buckets.md)
+ [Gestione delle autorizzazioni di accesso ai bucket Amazon S3](s3-examples-access-permissions.md)
+ [Configurazione dei bucket Amazon S3](s3-examples-configuring-a-bucket.md)
+ [Caricamenti multiparte di Amazon S3](s3-multipart-upload.md)
+ [URL prefirmato Amazon S3](s3-presigned-url.md)
+ [Creazione di S3 prefirmato POSTs](s3-presigned-post.md)
+ [Utilizzo di un bucket Amazon S3 come host Web statico](s3-examples-static-web-host.md)
+ [Utilizzo delle policy relative ai bucket di Amazon S3](s3-examples-bucket-policies.md)
+ [Utilizzo del punto di accesso S3 ARNs](s3-examples-access-point-arn.md)
+ [Usa punti di accesso multiregionali](s3-multi-region-access-points.md)

# Creazione e utilizzo di bucket Amazon S3 con la versione 3 AWS SDK per PHP
<a name="s3-examples-creating-buckets"></a>

Gli esempi seguenti mostrano come:
+ Restituisce un elenco di bucket di proprietà del mittente autenticato della richiesta utilizzando. [ListBuckets](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#listbuckets)
+ Crea un nuovo bucket usando. [CreateBucket](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createbucket)
+ Aggiungi un oggetto a un bucket usando. [PutObject](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject)

Tutto il codice di esempio per AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\S3\S3Client;
```

## Elenco di bucket
<a name="list-buckets"></a>

Crea un file PHP con il codice seguente. Per prima cosa crea un servizio client AWS.S3 che specifichi la regione e la AWS versione. Quindi chiama il `listBuckets` metodo, che restituisce tutti i bucket Amazon S3 di proprietà del mittente della richiesta come matrice di strutture di bucket.

 **Codice di esempio** 

```
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

//Listing all S3 Bucket
$buckets = $s3Client->listBuckets();
foreach ($buckets['Buckets'] as $bucket) {
    echo $bucket['Name'] . "\n";
}
```

## Creazione di un bucket
<a name="create-a-bucket"></a>

Crea un file PHP con il codice seguente. Per prima cosa crea un servizio client AWS.S3 che specifichi la regione e la versione. AWS Quindi chiama il metodo `createBucket` con un array come parametro. L'unico campo obbligatorio è la chiave "Bucket", con un valore stringa per il nome del bucket che desideri creare. Tuttavia, puoi specificare la AWS regione con il campo ''. CreateBucketConfiguration In caso di esito positivo, questo metodo restituisce il "Percorso" del bucket.

 **Codice di esempio** 

```
function createBucket($s3Client, $bucketName)
{
    try {
        $result = $s3Client->createBucket([
            'Bucket' => $bucketName,
        ]);
        return 'The bucket\'s location is: ' .
            $result['Location'] . '. ' .
            'The bucket\'s effective URI is: ' .
            $result['@metadata']['effectiveUri'];
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function createTheBucket()
{
    $s3Client = new S3Client([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2006-03-01'
    ]);

    echo createBucket($s3Client, 'amzn-s3-demo-bucket');
}

// Uncomment the following line to run this code in an AWS account.
// createTheBucket();
```

## Metti un oggetto in un secchio
<a name="put-an-object-in-a-bucket"></a>

Per aggiungere file al nuovo bucket, crea un file PHP con il seguente codice.

Nella riga di comando, esegui questo file e passa il nome del bucket in cui desideri caricare il tuo file come stringa, seguito dal percorso completo del file da caricare.

 **Codice di esempio** 

```
$USAGE = "\n" .
    "To run this example, supply the name of an S3 bucket and a file to\n" .
    "upload to it.\n" .
    "\n" .
    "Ex: php PutObject.php <bucketname> <filename>\n";

if (count($argv) <= 2) {
    echo $USAGE;
    exit();
}

$bucket = $argv[1];
$file_Path = $argv[2];
$key = basename($argv[2]);

try {
    //Create a S3Client
    $s3Client = new S3Client([
        'profile' => 'default',
        'region' => 'us-west-2',
        'version' => '2006-03-01'
    ]);
    $result = $s3Client->putObject([
        'Bucket' => $bucket,
        'Key' => $key,
        'SourceFile' => $file_Path,
    ]);
} catch (S3Exception $e) {
    echo $e->getMessage() . "\n";
}
```

# Gestione delle autorizzazioni di accesso ai bucket Amazon S3 con la versione 3 AWS SDK per PHP
<a name="s3-examples-access-permissions"></a>

Le liste di controllo degli accessi (ACLs) sono una delle opzioni di policy di accesso basate sulle risorse che puoi utilizzare per gestire l'accesso ai tuoi bucket e oggetti. È possibile utilizzare ACLs per concedere autorizzazioni di base ad altri read/write account. AWS Per ulteriori informazioni, consulta [Gestire l'accesso con ACLs](https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).

Gli esempi seguenti mostrano come:
+ Ottieni la politica di controllo degli accessi per un bucket utilizzando [GetBucketAcl](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getbucketacl).
+ Imposta le autorizzazioni su un bucket utilizzando ACLs, using. [PutBucketAcl](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putbucketacl)

Tutto il codice di esempio per il AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Ottieni e imposta una politica per la lista di controllo degli accessi
<a name="get-and-set-an-access-control-list-policy"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\S3\S3Client;  
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
// Create a S3Client 
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

// Gets the access control policy for a bucket
$bucket = 'amzn-s3-demo-bucket';
try {
    $resp = $s3Client->getBucketAcl([
        'Bucket' => $bucket
    ]);
    echo "Succeed in retrieving bucket ACL as follows: \n";
    var_dump($resp);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}

// Sets the permissions on a bucket using access control lists (ACL).
$params = [
    'ACL' => 'public-read',
    'AccessControlPolicy' => [
        // Information can be retrieved from `getBucketAcl` response
        'Grants' => [
            [
                'Grantee' => [
                    'DisplayName' => '<string>',
                    'EmailAddress' => '<string>',
                    'ID' => '<string>',
                    'Type' => 'CanonicalUser',
                    'URI' => '<string>',
                ],
                'Permission' => 'FULL_CONTROL',
            ],
            // ...
        ],
        'Owner' => [
            'DisplayName' => '<string>',
            'ID' => '<string>',
        ],
    ],
    'Bucket' => $bucket,
];

try {
    $resp = $s3Client->putBucketAcl($params);
    echo "Succeed in setting bucket ACL.\n";
} catch (AwsException $e) {
    // Display error message
    echo $e->getMessage();
    echo "\n";
}
```

# Configurazione dei bucket Amazon S3 con la versione 3 AWS SDK per PHP
<a name="s3-examples-configuring-a-bucket"></a>

La funzionalità CORS (Cross-Origin Resource Sharing, condivisione delle risorse multiorigine) definisce un metodo con cui le applicazioni Web dei clienti caricate in un dominio possono interagire con le risorse situate in un dominio differente. Con il supporto CORS in Amazon S3, puoi creare ricche applicazioni Web lato client con Amazon S3 e consentire selettivamente l'accesso multiorigine alle tue risorse Amazon S3.

Per ulteriori informazioni sull'utilizzo della configurazione CORS con un bucket Amazon S3, [consulta Cross-Origin Resource](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) Sharing (CORS).

Gli esempi seguenti mostrano come:
+ Ottieni la configurazione CORS per un bucket utilizzando. [GetBucketCors](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getbucketcors)
+ Imposta la configurazione CORS per un bucket utilizzando. [PutBucketCors](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putbucketcors)

Tutto il codice di esempio per AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Ottieni la configurazione CORS
<a name="get-the-cors-configuration"></a>

Crea un file PHP con il codice seguente. Innanzitutto, crea un servizio client AWS.S3, quindi richiama il metodo `getBucketCors` e specifica il bucket con la configurazione CORS desiderata.

L'unico parametro obbligatorio è il nome del bucket selezionato. [Se il bucket ha attualmente una configurazione CORS, tale configurazione viene restituita da Amazon S3 come oggetto. CORSRules ](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#shape-corsrule)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\S3\S3Client;
```

 **Codice di esempio** 

```
$client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

try {
    $result = $client->getBucketCors([
        'Bucket' => $bucketName, // REQUIRED
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Imposta la configurazione CORS
<a name="set-the-cors-configuration"></a>

Crea un file PHP con il codice seguente. Innanzitutto, crea un servizio client AWS.S3. [Quindi chiamate il `putBucketCors` metodo e specificate il bucket di cui impostare la configurazione CORS, quindi CORSConfiguration come oggetto JSON. CORSRules ](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#shape-corsrule)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\S3\S3Client;
```

 **Codice di esempio** 

```
$client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

try {
    $result = $client->putBucketCors([
        'Bucket' => $bucketName, // REQUIRED
        'CORSConfiguration' => [ // REQUIRED
            'CORSRules' => [ // REQUIRED
                [
                    'AllowedHeaders' => ['Authorization'],
                    'AllowedMethods' => ['POST', 'GET', 'PUT'], // REQUIRED
                    'AllowedOrigins' => ['*'], // REQUIRED
                    'ExposeHeaders' => [],
                    'MaxAgeSeconds' => 3000
                ],
            ],
        ]
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Utilizzo dei caricamenti multiparte di Amazon S3 con la versione 3 AWS SDK per PHP
<a name="s3-multipart-upload"></a>

Con una singola operazione `PutObject`, puoi caricare oggetti di una dimensione massima di 5 GB. Tuttavia, tramite i metodi di caricamento in più parti (ad esempio, `CreateMultipartUpload`, `UploadPart`, `CompleteMultipartUpload`, `AbortMultipartUpload`), puoi caricare oggetti di dimensioni comprese tra 5 MB e 5 TB.

Gli esempi seguenti mostrano come:
+ Carica un oggetto su Amazon S3, utilizzando. [ObjectUploader](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.ObjectUploader.html)
+ Crea un caricamento multiparte per un oggetto Amazon S3 utilizzando. [MultipartUploader](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.MultipartUploader.html)
+ Copia oggetti da una posizione Amazon S3 a un'altra utilizzando. [ObjectCopier](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.ObjectCopier.html)

Tutto il codice di esempio per AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Caricatore di oggetti
<a name="object-uploader"></a>

Se non sei sicuro che sia `PutObject` o `MultipartUploader` meno la soluzione migliore per l'attività, usa. `ObjectUploader` `ObjectUploader`carica un file di grandi dimensioni su Amazon S3 utilizzando `PutObject` `MultipartUploader` o, in base alla dimensione del payload.

```
require 'vendor/autoload.php';

use Aws\Exception\MultipartUploadException;
use Aws\S3\MultipartUploader;
use Aws\S3\ObjectUploader;
use Aws\S3\S3Client;
```

 **Codice di esempio** 

```
// Create an S3Client.
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-east-2',
    'version' => '2006-03-01'
]);

$bucket = 'your-bucket';
$key = 'my-file.zip';

// Use a stream instead of a file path.
$source = fopen('/path/to/large/file.zip', 'rb');

$uploader = new ObjectUploader(
    $s3Client,
    $bucket,
    $key,
    $source
);

do {
    try {
        $result = $uploader->upload();
        if ($result["@metadata"]["statusCode"] == '200') {
            print('<p>File successfully uploaded to ' . $result["ObjectURL"] . '.</p>');
        }
        print($result);
        // If the SDK chooses a multipart upload, try again if there is an exception.
        // Unlike PutObject calls, multipart upload calls are not automatically retried.
    } catch (MultipartUploadException $e) {
        rewind($source);
        $uploader = new MultipartUploader($s3Client, $source, [
            'state' => $e->getState(),
        ]);
    }
} while (!isset($result));

fclose($source);
```

### Configurazione
<a name="object-uploader-configuration"></a>

Il costruttore dell'oggetto `ObjectUploader` accetta i seguenti argomenti:

**`$client`**  
L'oggetto `Aws\ClientInterface` da utilizzare per eseguire i trasferimenti. Deve essere un'istanza di `Aws\S3\S3Client`.

**`$bucket`**  
(`string`, *obbligatorio*) Nome del bucket in cui è in corso il caricamento dell'oggetto.

**`$key`**  
(`string`, *obbligatorio*) Chiave da utilizzare per l'oggetto in fase di caricamento.

**`$body`**  
(`mixed`, *obbligatorio*) Dati dell'oggetto da caricare. Può essere una `StreamInterface` risorsa di flusso PHP o una stringa di dati da caricare.

**`$acl`**  
(`string`) Lista di controllo accessi (ACL) da impostare sull'oggetto in fase di caricamento. Gli oggetti sono privati per impostazione predefinita.

**`$options`**  
Un array associativo delle opzioni di configurazione del caricamento in più parti. Le seguenti opzioni di configurazione sono valide:    
**`add_content_md5`**  
(`bool`) Imposta su true per calcolare automaticamente il MD5 checksum per il caricamento.  
**`mup_threshold`**  
(`int`, *impostazione predefinita*:`int(16777216)`) Il numero di byte per la dimensione del file. Se la dimensione del file supera questo limite, viene utilizzato un caricamento in più parti.  
**`before_complete`**  
(`callable`) Callback da richiamare prima dell'operazione `CompleteMultipartUpload`. Il callback dovrebbe avere una firma di funzione simile a:. `function (Aws\Command $command) {...}` Consulta il [riferimento CompleteMultipartUpload API](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#completemultipartupload) per i parametri che puoi aggiungere all'`CommandInterface`oggetto.  
**`before_initiate`**  
(`callable`) Callback da richiamare prima dell'operazione `CreateMultipartUpload`. Il callback dovrebbe avere una firma di funzione simile a:`function (Aws\Command $command) {...}`. L'SDK richiama questo callback se la dimensione del file supera il valore. `mup_threshold` Consulta il [riferimento all'CreateMultipartUpload API](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createmultipartupload) per i parametri che puoi aggiungere all'oggetto. `CommandInterface`  
**`before_upload`**  
(`callable`) Richiamata da richiamare prima di `PutObject` qualsiasi `UploadPart` operazione. Il callback dovrebbe avere una firma di funzione simile a:. `function (Aws\Command $command) {...}` L'SDK richiama questo callback se la dimensione del file è inferiore o uguale al valore. `mup_threshold` Consulta il [riferimento all'PutObject API](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject) per i parametri che puoi applicare alla richiesta. `PutObject` Per i parametri che si applicano a una `UploadPart` richiesta, consulta il [riferimento all'UploadPart API](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#uploadpart). L'SDK ignora qualsiasi parametro non applicabile all'operazione rappresentata dall'`CommandInterface`oggetto.  
**`concurrency`**  
(`int`, *impostazione predefinita*: `int(3)`) Numero massimo di operazioni `UploadPart` simultanee consentite durante il caricamento in più parti.  
**`part_size`**  
(`int`, *impostazione predefinita*: `int(5242880)`) Dimensioni, in byte, della parte da utilizzare durante il caricamento in più parti. Il valore deve essere compreso tra 5 MB e 5 GB, inclusi.  
**`state`**  
(`Aws\Multipart\UploadState`) Un oggetto che rappresenta lo stato del caricamento in più parti e che viene utilizzato per riprendere un caricamento precedente. Quando viene fornita questa opzione, gli `$key` argomenti `$bucket` and e l'`part_size`opzione vengono ignorati.  
**`params`**  
Un array associativo che fornisce opzioni di configurazione per ogni sottocomando. Esempio:  

```
new ObjectUploader($bucket, $key, $body, $acl, ['params' => ['CacheControl' => <some_value>])
```

## MultipartUploader
<a name="multipartuploader"></a>

I caricamenti in più parti sono concepiti per migliorare l'esperienza di caricamento degli oggetti di maggiori dimensioni. Consentono di caricare gli oggetti in parti indipendenti, in qualsiasi ordine e in parallelo.

I clienti di Amazon S3 sono incoraggiati a utilizzare caricamenti multiparte per oggetti di dimensioni superiori a 100 MB.

## MultipartUploader oggetto
<a name="multipartuploader-object"></a>

L'SDK contiene un oggetto `MultipartUploader` speciale che semplifica il processo di caricamento in più parti.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\MultipartUploadException;
use Aws\S3\MultipartUploader;
use Aws\S3\S3Client;
```

 **Codice di esempio** 

```
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

// Use multipart upload
$source = '/path/to/large/file.zip';
$uploader = new MultipartUploader($s3Client, $source, [
    'bucket' => 'your-bucket',
    'key' => 'my-file.zip',
]);

try {
    $result = $uploader->upload();
    echo "Upload complete: {$result['ObjectURL']}\n";
} catch (MultipartUploadException $e) {
    echo $e->getMessage() . "\n";
}
```

L'uploader crea un generatore di dati della parte, basato sulla sorgente e sulla configurazione specificate, e tenta di caricare tutte le parti. Se il caricamento di alcune parti non riesce, l'uploader continua con il caricamento delle parti successive fino a quando non vengono letti tutti i dati di origine. Successivamente, l'uploader riprova a caricare le parti non riuscite o genera un'eccezione contenente informazioni sulle parti che non è stato possibile caricare.

## Personalizzazione di un caricamento in più parti
<a name="customizing-a-multipart-upload"></a>

Puoi impostare opzioni personalizzate nelle operazioni `CreateMultipartUpload`, `UploadPart` e `CompleteMultipartUpload` eseguite dall'uploader in più parti tramite i callback trasmessi al relativo costruttore.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\S3\MultipartUploader;
use Aws\S3\S3Client;
```

 **Codice di esempio** 

```
// Create an S3Client
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

// Customizing a multipart upload
$source = '/path/to/large/file.zip';
$uploader = new MultipartUploader($s3Client, $source, [
    'bucket' => 'your-bucket',
    'key' => 'my-file.zip',
    'before_initiate' => function (Command $command) {
        // $command is a CreateMultipartUpload operation
        $command['CacheControl'] = 'max-age=3600';
    },
    'before_upload' => function (Command $command) {
        // $command is an UploadPart operation
        $command['RequestPayer'] = 'requester';
    },
    'before_complete' => function (Command $command) {
        // $command is a CompleteMultipartUpload operation
        $command['RequestPayer'] = 'requester';
    },
]);
```

### Raccolta manuale dei rifiuti tra i caricamenti delle parti
<a name="manual-garbage-collection-between-part-uploads"></a>

Se caricamenti di grandi dimensioni causano il raggiungimento del limite di memoria, la causa è da ricercarsi nei riferimenti ciclici generati dall'SDK che non sono ancora stati raccolti dal [garbage collector PHP](https://www.php.net/manual/en/features.gc.php) quando il limite di memoria è stato raggiunto. L'invocazione manuale dell'algoritmo di raccolta tra operazioni può consentire la raccolta dei cicli prima del raggiungimento di tale limite. L'esempio seguente richiama l'algoritmo di raccolta utilizzando un callback prima del caricamento di ogni parte. L'invocazione di garbage collector comporta costi di prestazioni e l'uso ottimale dipende dal caso d'uso e dall'ambiente.

```
$uploader = new MultipartUploader($client, $source, [
   'bucket' => 'your-bucket',
   'key' => 'your-key',
   'before_upload' => function(\Aws\Command $command) {
      gc_collect_cycles();
   }
]);
```

## Recupero da errori
<a name="recovering-from-errors"></a>

Quando si verifica un errore durante il processo di caricamento in più parti, viene generata una `MultipartUploadException`. Questa eccezione consente l'accesso all'oggetto `UploadState`, contenente le informazioni sull'avanzamento del caricamento in più parti. L'oggetto `UploadState` può essere utilizzato per riprendere un caricamento che non è stato possibile completare.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\MultipartUploadException;
use Aws\S3\MultipartUploader;
use Aws\S3\S3Client;
```

 **Codice di esempio** 

```
// Create an S3Client
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

$source = '/path/to/large/file.zip';
$uploader = new MultipartUploader($s3Client, $source, [
    'bucket' => 'your-bucket',
    'key' => 'my-file.zip',
]);

//Recover from errors
do {
    try {
        $result = $uploader->upload();
    } catch (MultipartUploadException $e) {
        $uploader = new MultipartUploader($s3Client, $source, [
            'state' => $e->getState(),
        ]);
    }
} while (!isset($result));

//Abort a multipart upload if failed
try {
    $result = $uploader->upload();
} catch (MultipartUploadException $e) {
    // State contains the "Bucket", "Key", and "UploadId"
    $params = $e->getState()->getId();
    $result = $s3Client->abortMultipartUpload($params);
}
```

La ripresa di un caricamento da un oggetto `UploadState` tenta di caricare le parti che non sono già state caricate. L'oggetto stato tiene traccia delle parti mancanti, anche se non sono consecutive. L'uploader legge o cerca nel file sorgente fornito negli intervalli di byte appartenenti alle parti che devono ancora essere caricate.

 Gli oggetti `UploadState` sono serializzabili, quindi puoi riprendere un caricamento anche in un processo diverso. Puoi ottenere inoltre l'oggetto `UploadState`, anche quando non stai gestendo un'eccezione, richiamando `$uploader->getState()`.

**Importante**  
I flussi trasmessi come sorgente a `MultipartUploader` non vengono riavvolti automaticamente prima del caricamento. Se utilizzi un flusso al posto di un percorso di file in un loop simile a quello dell'esempio precedente, ripristina la variabile `$source` all'interno del blocco `catch`.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\MultipartUploadException;
use Aws\S3\MultipartUploader;
use Aws\S3\S3Client;
```

 **Codice di esempio** 

```
// Create an S3Client
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

//Using stream instead of file path
$source = fopen('/path/to/large/file.zip', 'rb');
$uploader = new MultipartUploader($s3Client, $source, [
    'bucket' => 'your-bucket',
    'key' => 'my-file.zip',
]);

do {
    try {
        $result = $uploader->upload();
    } catch (MultipartUploadException $e) {
        rewind($source);
        $uploader = new MultipartUploader($s3Client, $source, [
            'state' => $e->getState(),
        ]);
    }
} while (!isset($result));
fclose($source);
```

### Interruzione di un caricamento in più parti
<a name="aborting-a-multipart-upload"></a>

Un caricamento in più parti può essere interrotto recuperando l'`UploadId` contenuto nell'oggetto `UploadState` e passandolo a `abortMultipartUpload`.

```
try {
    $result = $uploader->upload();
} catch (MultipartUploadException $e) {
    // State contains the "Bucket", "Key", and "UploadId"
    $params = $e->getState()->getId();
    $result = $s3Client->abortMultipartUpload($params);
}
```

## Caricamenti asincroni multiparte
<a name="asynchronous-multipart-uploads"></a>

La chiamata di `upload()` sul `MultipartUploader` corrisponde a una richiesta di blocco. Se stai lavorando in un contesto asincrono, potresti ricevere una [promessa](guide_promises.md) per il caricamento in più parti.

```
require 'vendor/autoload.php';

use Aws\S3\MultipartUploader;
use Aws\S3\S3Client;
```

 **Codice di esempio** 

```
// Create an S3Client
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

$source = '/path/to/large/file.zip';
$uploader = new MultipartUploader($s3Client, $source, [
    'bucket' => 'your-bucket',
    'key' => 'my-file.zip',
]);

$promise = $uploader->promise();
```

### Configurazione
<a name="asynchronous-multipart-uploads-configuration"></a>

Il costruttore dell'oggetto `MultipartUploader` accetta i seguenti argomenti:

** `$client` **  
L'oggetto `Aws\ClientInterface` da utilizzare per eseguire i trasferimenti. Deve essere un'istanza di `Aws\S3\S3Client`.

** `$source` **  
I dati di origine in fase di caricamento. Può essere un percorso o un URL (ad esempio, `/path/to/file.jpg`), un gestore di risorse (ad esempio, `fopen('/path/to/file.jpg', 'r)`) o un'istanza di un [flusso PSR-7](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Psr.Http.Message.StreamInterface.html).

** `$config` **  
Un array associativo delle opzioni di configurazione del caricamento in più parti.  
Le seguenti opzioni di configurazione sono valide:    
** `acl` **  
(`string`) Lista di controllo accessi (ACL) da impostare sull'oggetto in fase di caricamento. Gli oggetti sono privati per impostazione predefinita.  
** `before_complete` **  
(`callable`) Callback da richiamare prima dell'operazione `CompleteMultipartUpload`. Il callback deve disporre di una firma della funzione, come `function (Aws\Command $command) {...}`.  
** `before_initiate` **  
(`callable`) Callback da richiamare prima dell'operazione `CreateMultipartUpload`. Il callback deve disporre di una firma della funzione, come `function (Aws\Command $command) {...}`.  
** `before_upload` **  
(`callable`) Callback da richiamare prima delle operazioni `UploadPart`. Il callback deve disporre di una firma della funzione, come `function (Aws\Command $command) {...}`.  
** `bucket` **  
(`string`, *obbligatorio*) Nome del bucket in cui è in corso il caricamento dell'oggetto.  
** `concurrency` **  
(`int`, *impostazione predefinita*: `int(5)`) Numero massimo di operazioni `UploadPart` simultanee consentite durante il caricamento in più parti.  
** `key` **  
(`string`, *obbligatorio*) Chiave da utilizzare per l'oggetto in fase di caricamento.  
** `part_size` **  
(`int`, *impostazione predefinita*: `int(5242880)`) Dimensioni, in byte, della parte da utilizzare durante il caricamento in più parti. Le dimensioni devono essere comprese tra 5 MB e 5 GB, inclusi.  
** `state` **  
(`Aws\Multipart\UploadState`) Un oggetto che rappresenta lo stato del caricamento in più parti e che viene utilizzato per riprendere un caricamento precedente. Quando questa opzione è disponibile, le opzioni `bucket`, `key` e `part_size` vengono ignorate.  
**`add_content_md5`**  
(`boolean`) Imposta su true per calcolare automaticamente il checksum per il MD5 caricamento.  
**`params`**  
Un array associativo che fornisce opzioni di configurazione per ogni sottocomando. Esempio:  

```
new MultipartUploader($client, $source, ['params' => ['CacheControl' => <some_value>]])
```

## Copie in più parti
<a name="multipart-copies"></a>

Include AWS SDK per PHP anche un `MultipartCopy` oggetto che viene utilizzato in modo simile a`MultipartUploader`, ma è progettato per copiare oggetti di dimensioni comprese tra 5 GB e 5 TB all'interno di Amazon S3.

```
require 'vendor/autoload.php';

use Aws\Exception\MultipartUploadException;
use Aws\S3\MultipartCopy;
use Aws\S3\S3Client;
```

 **Codice di esempio** 

```
// Create an S3Client
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

//Copy objects within S3
$copier = new MultipartCopy($s3Client, '/bucket/key?versionId=foo', [
    'bucket' => 'your-bucket',
    'key' => 'my-file.zip',
]);

try {
    $result = $copier->copy();
    echo "Copy complete: {$result['ObjectURL']}\n";
} catch (MultipartUploadException $e) {
    echo $e->getMessage() . "\n";
}
```

# URL prefirmato Amazon S3 con versione 3 AWS SDK per PHP
<a name="s3-presigned-url"></a>

È possibile autenticare alcuni tipi di richieste passando le informazioni necessarie come parametri di una stringa di query invece di utilizzare l'intestazione Autorizzazione HTTP. Ciò è utile per consentire l'accesso diretto tramite browser di terze parti ai dati privati di Amazon S3, senza inoltrare la richiesta tramite proxy. L'idea è quella di creare una richiesta «prefirmata» e codificarla come URL utilizzabile da un altro utente. È inoltre possibile limitare una richiesta prefirmata specificando un periodo di scadenza.

## Crea un URL prefirmato per una richiesta HTTP GET
<a name="s3-presigned-url-get"></a>

Il seguente esempio di codice mostra come creare un URL prefirmato per una richiesta HTTP GET utilizzando l'SDK for PHP.

```
<?php

require 'vendor/autoload.php';

use Aws\S3\S3Client;

$s3Client = new S3Client([
    'region' => 'us-west-2',
]);

// Supply a CommandInterface object and an expires parameter to the `createPresignedRequest` method.
$request = $s3Client->createPresignedRequest(
    $s3Client->getCommand('GetObject', [
        'Bucket' => 'amzn-s3-demo-bucket',
        'Key' => 'demo-key',
    ]),
    '+1 hour'
);

// From the resulting RequestInterface object, you can get the URL.
$presignedUrl = (string) $request->getUri();

echo $presignedUrl;
```

Il [riferimento all'API per il `createPresignedRequest`](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.S3Client.html#method_createPresignedRequest) metodo fornisce ulteriori dettagli.

Qualcun altro può utilizzare il `$presignedUrl` valore per recuperare l'oggetto entro l'ora successiva. Quando viene effettuata la richiesta HTTP GET, ad esempio utilizzando un browser, al servizio S3 sembra che la chiamata provenga dall'utente che ha creato l'URL prefirmato.

## Crea un URL prefirmato per una richiesta HTTP PUT
<a name="s3-presigned-url-put"></a>

Il seguente esempio di codice mostra come creare un URL prefirmato per una richiesta HTTP PUT utilizzando l'SDK for PHP.

```
<?php

require 'vendor/autoload.php';

use Aws\S3\S3Client;

$s3Client = new S3Client([
    'region' => 'us-west-2',
]);

$request = $s3Client->createPresignedRequest(
    $s3Client->getCommand('PutObject', [
        'Bucket' => 'amzn-s3-demo-bucket',
        'Key' => 'demo-key',
    ]),
    '+1 hour'
);

// From the resulting RequestInterface object, you can get the URL.
$presignedUrl = (string) $request->getUri();
```

Qualcun altro può ora utilizzare l'URL prefirmato in una richiesta HTTP PUT per caricare un file:

```
use GuzzleHttp\Psr7\Request;
use GuzzleHttp\Psr7\Response;

// ...

function uploadWithPresignedUrl($presignedUrl, $filePath, $s3Client): ?Response
{
    // Get the HTTP handler from the S3 client.
    $handler = $s3Client->getHandlerList()->resolve();
    
    // Create a stream from the file.
    $fileStream = new Stream(fopen($filePath, 'r'));
    
    // Create the request.
    $request = new Request(
        'PUT',
        $presignedUrl,
        [
            'Content-Type' => mime_content_type($filePath),
            'Content-Length' => filesize($filePath)
        ],
        $fileStream
    );
    
    // Send the request using the handler.
    try {
        $promise = $handler($request, []);
        $response = $promise->wait();
        return $response;
    } catch (Exception $e) {
        echo "Error uploading file: " . $e->getMessage() . "\n";
        return null;
    }
}
```

# Amazon S3 prefirmato POSTs con la versione 3 AWS SDK per PHP
<a name="s3-presigned-post"></a>

Proprio come quelli prefirmati URLs, i prefirmati POSTs consentono di concedere l'accesso in scrittura a un utente senza fornire loro AWS credenziali. [I moduli POST prefirmati possono essere creati con l'aiuto di un'istanza di AWSS3 V4. PostObject](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.PostObjectV4.html)

Gli esempi seguenti mostrano come:
+ [Ottieni i dati per un modulo di caricamento S3 Object POST utilizzando V4. PostObject](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.PostObjectV4.html)

Tutto il codice di esempio per il AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

**Nota**  
`PostObjectV4`non funziona con credenziali provenienti da. AWS IAM Identity Center

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in. [Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md) Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Crea PostObject V4
<a name="create-postobjectv4"></a>

Per creare un'istanza di `PostObjectV4` è necessario fornire quanto segue:
+ istanza di `Aws\S3\S3Client` 
+ bucket
+ array associativo dei campi di input del modulo
+ serie di condizioni delle politiche (vedi [Policy Construction](https://docs.aws.amazon.com/AmazonS3/latest/dev/HTTPPOSTForms.html) nella Guida per l'utente di Amazon Simple Storage Service)
+ stringa relativa al periodo di scadenza per la policy (opzionale, il valore predefinito è un'ora).

 **Importazioni** 

```
require '../vendor/autoload.php';

use Aws\S3\PostObjectV4;
use Aws\S3\S3Client;
```

 **Codice di esempio** 

```
require '../vendor/autoload.php';

use Aws\S3\PostObjectV4;
use Aws\S3\S3Client;

$client = new S3Client([
    'profile' => 'default',
    'region' => 'us-east-1',
]);
$bucket = 'amzn-s3-demo-bucket10';
$starts_with = 'user/eric/';
$client->listBuckets();

// Set defaults for form input fields.
$formInputs = ['acl' => 'public-read'];

// Construct an array of conditions for policy.
$options = [
    ['acl' => 'public-read'],
    ['bucket' => $bucket],
    ['starts-with', '$key', $starts_with],
];

// Set an expiration time (optional).
$expires = '+2 hours';

$postObject = new PostObjectV4(
    $client,
    $bucket,
    $formInputs,
    $options,
    $expires
);

// Get attributes for the HTML form, for example, action, method, enctype.
$formAttributes = $postObject->getFormAttributes();

// Get attributes for the HTML form values.
$formInputs = $postObject->getFormInputs();
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>PHP</title>
</head>
<body>
<form action="<?php echo $formAttributes['action'] ?>" method="<?php echo $formAttributes['method'] ?>"
      enctype="<?php echo $formAttributes['enctype'] ?>">
    <label id="key">
        <input hidden type="text" name="key" value="<?php echo $starts_with ?><?php echo $formInputs['key'] ?>"/>
    </label>
    <h3>$formInputs:</h3>
    acl: <label id="acl">
        <input readonly type="text" name="acl" value="<?php echo $formInputs['acl'] ?>"/>
    </label><br/>
    X-Amz-Credential: <label id="credential">
        <input readonly type="text" name="X-Amz-Credential" value="<?php echo $formInputs['X-Amz-Credential'] ?>"/>
    </label><br/>
    X-Amz-Algorithm: <label id="algorithm">
        <input readonly type="text" name="X-Amz-Algorithm" value="<?php echo $formInputs['X-Amz-Algorithm'] ?>"/>
    </label><br/>
    X-Amz-Date: <label id="date">
        <input readonly type="text" name="X-Amz-Date" value="<?php echo $formInputs['X-Amz-Date'] ?>"/>
    </label><br/><br/><br/>
    Policy: <label id="policy">
        <input readonly type="text" name="Policy" value="<?php echo $formInputs['Policy'] ?>"/>
    </label><br/>
    X-Amz-Signature: <label id="signature">
        <input readonly type="text" name="X-Amz-Signature" value="<?php echo $formInputs['X-Amz-Signature'] ?>"/>
    </label><br/><br/>
    <h3>Choose file:</h3>
    <input type="file" name="file"/> <br/><br/>
    <h3>Upload file:</h3>
    <input type="submit" name="submit" value="Upload to Amazon S3"/>
</form>
</body>
</html>
```

# Utilizzo di un bucket Amazon S3 come host Web statico con la versione 3 AWS SDK per PHP
<a name="s3-examples-static-web-host"></a>

È possibile ospitare un sito Web statico su Amazon S3. Per ulteriori informazioni, consulta [Hosting di un sito Web statico su Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).

Gli esempi seguenti mostrano come:
+ Ottieni la configurazione del sito Web per un bucket utilizzando. [GetBucketWebsite](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getbucketwebsite)
+ Imposta la configurazione del sito Web per un bucket utilizzando. [PutBucketWebsite](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putbucketwebsite)
+ Rimuovi la configurazione del sito Web da un bucket utilizzando. [DeleteBucketWebsite](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#deletebucketwebsite)

Tutto il codice di esempio per la AWS SDK per PHP versione 3 è [disponibile GitHub qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="credentials-s3-examples-static-web-host"></a>

Prima di eseguire il codice di esempio, configura le tue AWS credenziali. Vedi [Credenziali per la AWS SDK per PHP versione 3](guide_credentials.md).

## Ottieni, imposta ed elimina la configurazione del sito Web per un bucket
<a name="get-set-and-delete-the-website-configuration-for-a-bucket"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\S3\S3Client;
```

 **Codice di esempio** 

```
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

// Retrieving the Bucket Website Configuration
$bucket = 'amzn-s3-demo-bucket';
try {
    $resp = $s3Client->getBucketWebsite([
        'Bucket' => $bucket
    ]);
    echo "Succeed in retrieving website configuration for bucket: " . $bucket . "\n";
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}

// Setting a Bucket Website Configuration
$params = [
    'Bucket' => $bucket,
    'WebsiteConfiguration' => [
        'ErrorDocument' => [
            'Key' => 'foo',
        ],
        'IndexDocument' => [
            'Suffix' => 'bar',
        ],
    ]
];

try {
    $resp = $s3Client->putBucketWebsite($params);
    echo "Succeed in setting bucket website configuration.\n";
} catch (AwsException $e) {
    // Display error message
    echo $e->getMessage();
    echo "\n";
}

// Deleting a Bucket Website Configuration
try {
    $resp = $s3Client->deleteBucketWebsite([
        'Bucket' => $bucket
    ]);
    echo "Succeed in deleting policy for bucket: " . $bucket . "\n";
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Utilizzo delle policy relative ai bucket di Amazon S3 con la versione 3 AWS SDK per PHP
<a name="s3-examples-bucket-policies"></a>

Puoi utilizzare una bucket policy per concedere l'autorizzazione alle tue risorse Amazon S3. Per ulteriori informazioni, consulta [Utilizzo delle policy per i bucket e delle policy utente](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).

Gli esempi seguenti mostrano come:
+ Restituisci la politica per un bucket specificato utilizzando. [GetBucketPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getbucketpolicy)
+ Sostituisci una politica su un bucket utilizzando. [PutBucketPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putbucketpolicy)
+ Elimina una policy da un bucket utilizzando. [DeleteBucketPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#deletebucketpolicy)

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile GitHub qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Ottieni, elimina e sostituisci una politica su un bucket
<a name="get-delete-and-replace-a-policy-on-a-bucket"></a>

 **Importazioni** 

```
require "vendor/autoload.php";

use Aws\Exception\AwsException;
use Aws\S3\S3Client;
```

 **Codice di esempio** 

```
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

$bucket = 'amzn-s3-demo-bucket';

// Get the policy of a specific bucket
try {
    $resp = $s3Client->getBucketPolicy([
        'Bucket' => $bucket
    ]);
    echo "Succeed in receiving bucket policy:\n";
    echo $resp->get('Policy');
    echo "\n";
} catch (AwsException $e) {
    // Display error message
    echo $e->getMessage();
    echo "\n";
}

// Deletes the policy from the bucket
try {
    $resp = $s3Client->deleteBucketPolicy([
        'Bucket' => $bucket
    ]);
    echo "Succeed in deleting policy of bucket: " . $bucket . "\n";
} catch (AwsException $e) {
    // Display error message
    echo $e->getMessage();
    echo "\n";
}

// Replaces a policy on the bucket
try {
    $resp = $s3Client->putBucketPolicy([
        'Bucket' => $bucket,
        'Policy' => 'foo policy',
    ]);
    echo "Succeed in put a policy on bucket: " . $bucket . "\n";
} catch (AwsException $e) {
    // Display error message
    echo $e->getMessage();
    echo "\n";
}
```

# Utilizzo del punto di accesso S3 ( ARNs la AWS SDK per PHP versione 3)
<a name="s3-examples-access-point-arn"></a>

S3 ha introdotto i punti di accesso, un nuovo modo di interagire con i bucket S3. I punti di accesso possono avere criteri e configurazioni univoci applicati ad essi piuttosto che direttamente al bucket. AWS SDK per PHP Consente di utilizzare il punto di accesso ARNs nel campo del bucket per le operazioni API invece di specificare il nome del bucket in modo esplicito. [Maggiori dettagli su come funzionano e ARNs come funzionano i punti di accesso S3 sono disponibili qui.](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) Gli esempi seguenti mostrano come:
+ [GetObject](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getobject)Utilizzalo con un punto di accesso ARN per recuperare un oggetto da un bucket.
+ [PutObject](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject)Utilizzalo con un punto di accesso ARN per aggiungere un oggetto a un bucket.
+ Configurare il client S3 per utilizzare la regione ARN anziché la regione client.

Tutto il codice di esempio per il AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\S3\S3Client;
```

## Ottieni oggetto
<a name="get-object"></a>

Per prima cosa crea un servizio client AWS.S3 che specifichi la regione e la AWS versione. Quindi chiama il `getObject` metodo con la tua chiave e un ARN del punto di accesso S3 nel campo `Bucket`, che recupererà l'oggetto dal bucket associato a quel punto di accesso.

 **Codice di esempio** 

```
$s3 = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
]);
$result = $s3->getObject([
    'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:endpoint-name',
    'Key' => 'MyKey'
]);
```

## Metti un oggetto in un secchio
<a name="put-an-object-in-a-bucket"></a>

Per prima cosa crea un servizio client AWS.S3 che specifichi la regione e la versione. AWS Quindi chiama il metodo `putObject` con la chiave desiderata, il corpo o il file sorgente e un punto di accesso S3 nel campo `Bucket`, che metterà l'oggetto nel bucket associato a quel punto di accesso.

 **Codice di esempio** 

```
$s3 = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
]);
$result = $s3->putObject([
    'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:endpoint-name',
    'Key' => 'MyKey',
    'Body' => 'MyBody'
]);
```

## Configurare il client S3 per utilizzare la regione ARN anziché la regione client
<a name="configure-the-s3-client-to-use-the-arn-region-instead-of-the-client-region"></a>

Quando si utilizza un ARN del punto di accesso S3 in un'operazione client S3, per impostazione predefinita il client si assicurerà che la regione ARN corrisponda alla regione client, generando un'eccezione in caso contrario. Questo comportamento può essere modificato per accettare la regione ARN sulla regione client impostando l'opzione di configurazione `use_arn_region` su `true`. Per impostazione predefinita, l'opzione è impostata su `false`.

 **Codice di esempio** 

```
$s3 = new S3Client([
    'version'        => 'latest',
    'region'         => 'us-west-2',
    'use_arn_region' => true
]);
```

Il client controllerà anche una variabile d'ambiente e un'opzione del file di configurazione, nel seguente ordine di priorità:

1. L'opzione client `use_arn_region`, come nell'esempio precedente.

1. Nella variabile di ambiente `AWS_S3_USE_ARN_REGION`. 

```
export AWS_S3_USE_ARN_REGION=true
```

1. La variabile di configurazione `s3_use_arn_region` nel file di configurazione AWS condiviso (per impostazione predefinita in). `~/.aws/config`

```
[default]
s3_use_arn_region = true
```

# Usa punti di accesso multiregionali Amazon S3 con la versione 3 AWS SDK per PHP
<a name="s3-multi-region-access-points"></a>

Gli [access point multiregionali di Amazon Simple Storage Service (S3) forniscono un endpoint](https://docs.aws.amazon.com//AmazonS3/latest/userguide/MultiRegionAccessPoints.html) globale per il routing del traffico di richieste Amazon S3 tra di loro. Regioni AWS

Puoi creare punti di accesso multiregionali [utilizzando l'SDK for PHP, AWS un altro SDK](https://docs.aws.amazon.com//aws-sdk-php/v3/api/api-s3control-2018-08-20.html#createmultiregionaccesspoint), la console [S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/multi-region-access-point-create-examples.html) o la CLI, AWS 

**Importante**  
Per utilizzare punti di accesso multiregionali con l'SDK for PHP, nell'ambiente PHP deve essere installata l'estensione [Common Runtime AWS (AWS CRT](guide_crt.md)).

Quando crei un punto di accesso multiregionale, Amazon S3 genera un Amazon Resource Name (ARN) con il seguente formato: 

`arn:aws:s3::account-id:accesspoint/MultiRegionAccessPoint_alias`

È possibile utilizzare l'ARN generato al posto del nome del bucket per `[getObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getobject)` i metodi e. `[putObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject)`

```
<?php
require './vendor/autoload.php';

use Aws\S3\S3Client;

// Assign the Multi-Region Access Point to a variable and use it place of a bucket name.
$mrap = 'arn:aws:s3::123456789012:accesspoint/mfzwi23gnjvgw.mrap';
$key = 'my-key';

$s3Client = new S3Client([
    'region' => 'us-east-1'
]);

$s3Client->putObject([
    'Bucket' => $mrap,
    'Key' => $key,
    'Body' => 'Hello World!'
]);

$result = $s3Client->getObject([
    'Bucket' => $mrap,
    'Key' => $key
]);

echo $result['Body'] . "\n";

// Clean up.
$result = $s3Client->deleteObject([
    'Bucket' => $mrap,
    'Key' => $key
]);

$s3Client->waitUntil('ObjectNotExists', ['Bucket' => $mrap, 'Key' => $key]);

echo "Object deleted\n";
```

# Gestione dei segreti utilizzando l'API Secrets Manager e la AWS SDK per PHP versione 3
<a name="secretsmanager-examples-manage-secret"></a>

Gestione dei segreti AWS archivia e gestisce segreti condivisi come password, chiavi API e credenziali del database. Con il servizio Secrets Manager, gli sviluppatori possono sostituire le credenziali codificate nel codice distribuito con una chiamata incorporata a Secrets Manager.

Secrets Manager supporta nativamente la rotazione automatica pianificata delle credenziali per i database Amazon Relational Database Service (Amazon RDS), aumentando la sicurezza delle applicazioni. Secrets Manager può anche ruotare senza problemi i segreti per altri database e servizi di terze parti utilizzandoli per AWS Lambda implementare dettagli specifici del servizio.

Gli esempi seguenti mostrano come:
+ Crea un segreto usando. [CreateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#createsecret)
+ Recupera un segreto usando [GetSecretValue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#getsecretvalue).
+ Elenca tutti i segreti archiviati da Secrets Manager utilizzando [ListSecrets](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#listsecrets).
+ Ottieni dettagli su un segreto specificato utilizzando [DescribeSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#describesecret).
+ Aggiorna un segreto specificato utilizzando [PutSecretValue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#putsecretvalue).
+ Imposta una rotazione segreta usando [RotateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#rotatesecret).
+ Contrassegna un segreto per l'eliminazione utilizzando [DeleteSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#deletesecret).

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Crea un segreto in Secrets Manager
<a name="create-a-secret-in-asm"></a>

Per creare un segreto in Secrets Manager, usa l'[CreateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#createsecret)operazione.

In questo esempio, un nome utente e una password vengono memorizzati come una stringa JSON.

 **Importazioni** 

```
require 'vendor/autoload.php';
use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);
$secretName = 'MySecretName';
$secret = json_encode([
    "username" => getenv("SMDEMO_USERNAME"),
    "password" => getenv("SMDEMO_PASSWORD"),
]);
$description = '<<Description>>';
try {
    $result = $client->createSecret([
        'Description' => $description,
        'Name' => $secretName,
        'SecretString' => $secret,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Recupera un segreto da Secrets Manager
<a name="retrieve-a-secret-from-asm"></a>

Per recuperare il valore di un segreto archiviato in Secrets Manager, utilizzare l'[GetSecretValue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#getsecretvalue)operazione.

Nell'esempio seguente, `secret` è una stringa che contiene il valore memorizzato. Se il valore per `username` è `<<USERNAME>>` e il valore per `password` è`<<PASSWORD>>`, l'output di `secret` è:

```
{"username":"<<USERNAME>>","password":"<<PASSWORD>>"}
```

Utilizzare `json_decode($secret, true)` per accedere ai valori dell'array.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-east-1',
]);

$secretName = 'MySecretName';

try {
    $result = $client->getSecretValue([
        'SecretId' => $secretName,
    ]);
} catch (AwsException $e) {
    $error = $e->getAwsErrorCode();
    if ($error == 'DecryptionFailureException') {
        // Secrets Manager can't decrypt the protected secret text using the provided AWS KMS key.
        // Handle the exception here, and/or rethrow as needed.
        throw $e;
    }
    if ($error == 'InternalServiceErrorException') {
        // An error occurred on the server side.
        // Handle the exception here, and/or rethrow as needed.
        throw $e;
    }
    if ($error == 'InvalidParameterException') {
        // You provided an invalid value for a parameter.
        // Handle the exception here, and/or rethrow as needed.
        throw $e;
    }
    if ($error == 'InvalidRequestException') {
        // You provided a parameter value that is not valid for the current state of the resource.
        // Handle the exception here, and/or rethrow as needed.
        throw $e;
    }
    if ($error == 'ResourceNotFoundException') {
        // We can't find the resource that you asked for.
        // Handle the exception here, and/or rethrow as needed.
        throw $e;
    }
}
// Decrypts secret using the associated KMS CMK.
// Depending on whether the secret is a string or binary, one of these fields will be populated.
if (isset($result['SecretString'])) {
    $secret = $result['SecretString'];
} else {
    $secret = base64_decode($result['SecretBinary']);
}
print $secret;
$secretArray = json_decode($secret, true);
$username = $secretArray['username'];
$password = $secretArray['password'];

// Your code goes here;
```

## Elenca i segreti archiviati in Secrets Manager
<a name="list-secrets-stored-in-asm"></a>

Ottieni un elenco di tutti i segreti archiviati da Secrets Manager utilizzando l'[ListSecrets](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#listsecrets)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);

try {
    $result = $client->listSecrets([
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Recupera i dettagli di un segreto
<a name="retrieve-details-about-a-secret"></a>

I segreti archiviati contengono metadati sulle regole di rotazione, la data dell'ultimo accesso o modifica, i tag creati dall'utente e l'Amazon Resource Name (ARN). Per ottenere i dettagli di un segreto specificato archiviato in Secrets Manager, utilizzare l'[DescribeSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#describesecret)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);

$secretName = 'MySecretName';

try {
    $result = $client->describeSecret([
        'SecretId' => $secretName,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Come aggiornare il valore del segreto
<a name="update-the-secret-value"></a>

Per memorizzare un nuovo valore segreto crittografato in Secrets Manager, utilizzare l'[PutSecretValue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#putsecretvalue)operazione.

Viene creata una nuova versione del segreto. Se una versione del segreto esiste già, aggiungi il parametro `VersionStages` con il valore in `AWSCURRENT` per garantire che il nuovo valore viene utilizzato quando viene recuperato.

 **Importazioni** 

```
require 'vendor/autoload.php';
use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);
$secretName = 'MySecretName';
$secret = json_encode([
    "username" => getenv("SMDEMO_USERNAME"),
    "password" => getenv("SMDEMO_PASSWORD"),
]);
try {
    $result = $client->putSecretValue([
        'SecretId' => $secretName,
        'SecretString' => $secret,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Ruota il valore in un segreto esistente in Secrets Manager
<a name="rotate-the-value-to-an-existing-secret-in-asm"></a>

Per ruotare il valore di un segreto esistente archiviato in Secrets Manager, utilizzate una funzione di rotazione Lambda e [RotateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#rotatesecret)l'operazione.

Prima di iniziare, crea una funzione Lambda per ruotare il tuo segreto. Il [AWS Code Sample Catalog](https://docs.aws.amazon.com/code-samples/latest/catalog/code-catalog-lambda_functions-secretsmanager.html) contiene attualmente diversi esempi di codice Lambda per la rotazione delle credenziali del database Amazon RDS.

**Nota**  
Per ulteriori informazioni sulla rotazione dei segreti, consulta [Rotating Your Secrets nella Guida per l'utente Gestione dei segreti AWS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html). Gestione dei segreti AWS 

Dopo aver impostato la funzione Lambda, configura una nuova rotazione segreta.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);

$secretName = 'MySecretName';
$lambda_ARN = 'arn:aws:lambda:us-west-2:123456789012:function:MyTestDatabaseRotationLambda';
$rules = ['AutomaticallyAfterDays' => 30];

try {
    $result = $client->rotateSecret([
        'RotationLambdaARN' => $lambda_ARN,
        'RotationRules' => $rules,
        'SecretId' => $secretName,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

Quando è configurata una rotazione, è possibile implementare una rotazione utilizzando l'[RotateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#rotatesecret)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);

$secretName = 'MySecretName';

try {
    $result = $client->rotateSecret([
        'SecretId' => $secretName,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Eliminare un segreto da Secrets Manager
<a name="delete-a-secret-from-asm"></a>

Per rimuovere un segreto specificato da Secrets Manager, utilizzare l'[DeleteSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#deletesecret)operazione. Per evitare l'eliminazione accidentale di un segreto, al segreto viene aggiunto automaticamente un DeletionDate timbro che specifica una finestra di tempo di ripristino in cui è possibile annullare l'eliminazione. Se non si specifica l'ora per la finestra di ripristino, il periodo di tempo predefinito è di 30 giorni.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);

$secretName = 'MySecretName';

try {
    $result = $client->deleteSecret([
        'SecretId' => $secretName,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Informazioni correlate
<a name="related-information"></a>

Gli AWS SDK per PHP esempi utilizzano le seguenti operazioni REST dell'API Reference: Gestione dei segreti AWS 
+  [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html) 
+  [GetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html) 
+  [ListSecrets](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ListSecrets.html) 
+  [DescribeSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DescribeSecret.html) 
+  [PutSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutSecretValue.html) 
+  [RotateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_RotateSecret.html) 
+  [DeleteSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DeleteSecret.html) 

Per ulteriori informazioni sull'utilizzo Gestione dei segreti AWS, consulta la [Guida Gestione dei segreti AWS per l'utente](https://docs.aws.amazon.com/secretsmanager/latest/userguide/).

# Esempi di Amazon SES con la AWS SDK per PHP versione 3
<a name="ses-examples"></a>

Amazon Simple Email Service (Amazon SES) Simple Email Service (Amazon SES) è una piattaforma di posta elettronica che offre un modo semplice e conveniente per inviare e ricevere e-mail utilizzando i propri indirizzi e-mail e domini. Per ulteriori informazioni su Amazon SES, consulta la [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

AWS [offre due versioni del servizio Amazon SES e, di conseguenza, l'SDK for PHP offre due versioni del client: e SESv2Client. [SesClient](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Ses.SesClient.html)](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.SesV2.SesV2Client.html) Le funzionalità dei client si sovrappongono in molti casi, sebbene il modo in cui i metodi vengono chiamati o i risultati possano differire. I due offrono APIs anche funzionalità esclusive, quindi puoi utilizzare entrambi i client per accedere a tutte le funzionalità.

Gli esempi in questa sezione utilizzano tutti l'originale,`SesClient`. 

Tutto il codice di esempio per la AWS SDK per PHP versione 3 è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

**Topics**
+ [Verifica degli indirizzi e-mail](ses-verify.md)
+ [Lavorare con i modelli di e-mail](ses-template.md)
+ [Gestione dei filtri e-mail](ses-filters.md)
+ [Utilizzo delle regole di posta elettronica](ses-rules.md)
+ [Monitora la tua attività di invio](ses-send-email.md)
+ [Autorizzazione dei mittenti](ses-sender-policy.md)

# Verifica delle identità e-mail utilizzando l'API Amazon SES e la AWS SDK per PHP versione 3
<a name="ses-verify"></a>

Quando inizi a utilizzare per la prima volta il tuo account Amazon Simple Email Service (Amazon SES), tutti i mittenti e i destinatari devono essere verificati nella AWS stessa regione a cui stai inviando le e-mail. Per ulteriori informazioni sull'invio di e-mail, consulta [Invio di e-mail con Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-email.html).

Gli esempi seguenti mostrano come:
+ Verifica un indirizzo e-mail utilizzando. [VerifyEmailIdentity](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#verifyemailidentity)
+ Verifica un dominio e-mail utilizzando [VerifyDomainIdentity](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#verifydomainidentity).
+ Elenca tutti gli indirizzi e-mail utilizzando [ListIdentities](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listidentities).
+ Elenca tutti i domini di posta elettronica che utilizzano [ListIdentities](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listidentities).
+ Rimuovi un indirizzo email utilizzando [DeleteIdentity](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deleteidentity).
+ Rimuovi un dominio e-mail utilizzando [DeleteIdentity](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deleteidentity).

Tutto il codice di esempio per AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per ulteriori informazioni sull'uso di Amazon SES, consulta la [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Verifica un indirizzo e-mail
<a name="verifying-email-addresses"></a>

Amazon SES può inviare e-mail solo da indirizzi e-mail o domini verificati. Verificando un indirizzo e-mail, dimostri di essere il proprietario di quell'indirizzo e di voler consentire ad Amazon SES di inviare e-mail da quell'indirizzo.

Quando esegui il seguente esempio di codice, Amazon SES invia un'e-mail all'indirizzo specificato. Quando tu (o il destinatario dell'e-mail) fai clic sul link contenuto nel messaggio e-mail, l'indirizzo è verificato.

Per aggiungere un indirizzo e-mail al tuo account Amazon SES, utilizza l'[VerifyEmailIdentity](https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyEmailIdentity.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$email = 'email_address';

try {
    $result = $SesClient->verifyEmailIdentity([
        'EmailAddress' => $email,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Verifica un dominio e-mail
<a name="verify-an-email-domain"></a>

Amazon SES può inviare e-mail solo da indirizzi e-mail o domini verificati. Verificando un dominio, dimostri di essere il proprietario di tale dominio. Quando verifichi un dominio, consenti ad Amazon SES di inviare e-mail da qualsiasi indirizzo su quel dominio.

Quando esegui il seguente esempio di codice, Amazon SES ti fornisce un token di verifica. Devi aggiungere il token alla configurazione DNS del tuo dominio. Per ulteriori informazioni, consulta la sezione [Verifica di un dominio con Amazon SES nella Amazon Simple](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-domain-procedure.html) Email Service Developer Guide.

Per aggiungere un dominio di invio al tuo account Amazon SES, utilizza l'[VerifyDomainIdentity](https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainIdentity.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$domain = 'domain.name';

try {
    $result = $SesClient->verifyDomainIdentity([
        'Domain' => $domain,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Elenca gli indirizzi e-mail
<a name="list-email-addresses"></a>

Per recuperare un elenco di indirizzi e-mail inviati nella AWS regione corrente, indipendentemente dallo stato di verifica, utilizza l'[ListIdentities](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListIdentities.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

try {
    $result = $SesClient->listIdentities([
        'IdentityType' => 'EmailAddress',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Elenca i domini e-mail
<a name="list-email-domains"></a>

Per recuperare un elenco di domini e-mail inviati nella AWS regione corrente, indipendentemente dallo stato di verifica, utilizza l'operazione. [ListIdentities](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListIdentities.html)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

try {
    $result = $SesClient->listIdentities([
        'IdentityType' => 'Domain',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Eliminare un indirizzo e-mail
<a name="delete-an-email-address"></a>

Per eliminare un indirizzo email verificato dall'elenco delle identità, utilizza l'[DeleteIdentity](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteIdentity.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$email = 'email_address';

try {
    $result = $SesClient->deleteIdentity([
        'Identity' => $email,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Eliminare un dominio e-mail
<a name="delete-an-email-domain"></a>

Per eliminare un dominio e-mail verificato dall'elenco delle identità verificate, utilizza l'[DeleteIdentity](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteIdentity.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$domain = 'domain.name';

try {
    $result = $SesClient->deleteIdentity([
        'Identity' => $domain,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Creazione di modelli di e-mail personalizzati utilizzando l'API Amazon SES e la AWS SDK per PHP versione 3
<a name="ses-template"></a>

Amazon Simple Email Service (Amazon SES) Simple Email Service (Amazon SES) consente di inviare e-mail personalizzate per ciascun destinatario utilizzando modelli. I modelli includono un oggetto, il testo e le parti HTML del corpo dell'e-mail. Le sezioni dell'oggetto e del corpo possono anche contenere valori univoci personalizzati per ogni destinatario.

Per ulteriori informazioni, consulta [Invio di e-mail personalizzate utilizzando Amazon SES nella Amazon Simple](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html) Email Service Developer Guide.

Gli esempi seguenti mostrano come:
+ Crea un modello di email utilizzando [CreateTemplate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#createtemplate).
+ Elenca tutti i modelli di email che utilizzano [ListTemplates](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listtemplates).
+ Recupera un modello di email utilizzando [GetTemplate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#gettemplate).
+ Aggiorna un modello di email utilizzando [UpdateTemplate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#updateTemplate).
+ Rimuovi un modello di email utilizzando [DeleteTemplate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deletetemplate).
+ Invia un'email basata su un modello utilizzando. [SendTemplatedEmail](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#sendtemplatedemail)

Tutto il codice di esempio per il AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per ulteriori informazioni sull'uso di Amazon SES, consulta la [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Creazione di un modello di e-mail
<a name="create-an-email-template"></a>

Per creare un modello per inviare messaggi e-mail personalizzati, utilizza l'[CreateTemplate](https://docs.aws.amazon.com/ses/latest/APIReference/API_CreateTemplate.html)operazione. Il modello può essere utilizzato da qualsiasi account autorizzato a inviare messaggi nella AWS regione a cui è stato aggiunto il modello.

**Nota**  
Amazon SES non convalida il codice HTML, quindi assicurati che *HtmlPart*sia valido prima di inviare un'e-mail.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$name = 'Template_Name';
$html_body = '<h1>AWS Amazon Simple Email Service Test Email</h1>' .
    '<p>This email was sent with <a href="https://aws.amazon.com/ses/">' .
    'Amazon SES</a> using the <a href="https://aws.amazon.com/sdk-for-php/">' .
    'AWS SDK for PHP</a>.</p>';
$subject = 'Amazon SES test (AWS SDK for PHP)';
$plaintext_body = 'This email was send with Amazon SES using the AWS SDK for PHP.';

try {
    $result = $SesClient->createTemplate([
        'Template' => [
            'HtmlPart' => $html_body,
            'SubjectPart' => $subject,
            'TemplateName' => $name,
            'TextPart' => $plaintext_body,
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Richiedi un modello di email
<a name="get-an-email-template"></a>

Per visualizzare il contenuto di un modello di email esistente, inclusi l'oggetto, il corpo HTML e il testo semplice, utilizza l'[GetTemplate](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetTemplate.html)operazione. Solo TemplateName è obbligatorio.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$name = 'Template_Name';

try {
    $result = $SesClient->getTemplate([
        'TemplateName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Elenca tutti i modelli di email
<a name="list-all-email-templates"></a>

Per recuperare un elenco di tutti i modelli di email associati al tuo Account AWS nella AWS regione corrente, usa l'[ListTemplates](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListTemplates.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

try {
    $result = $SesClient->listTemplates([
        'MaxItems' => 10,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Aggiornamento di un modello di e-mail
<a name="update-an-email-template"></a>

Per modificare il contenuto di un modello di email specifico, tra cui la riga dell'oggetto, il corpo HTML e il testo semplice, utilizza l'[UpdateTemplate](https://docs.aws.amazon.com/ses/latest/APIReference/API_UpdadteTemplate.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$name = 'Template_Name';
$html_body = '<h1>AWS Amazon Simple Email Service Test Email</h1>' .
    '<p>This email was sent with <a href="https://aws.amazon.com/ses/">' .
    'Amazon SES</a> using the <a href="https://aws.amazon.com/sdk-for-php/">' .
    'AWS SDK for PHP</a>.</p>';
$subject = 'Amazon SES test (AWS SDK for PHP)';
$plaintext_body = 'This email was send with Amazon SES using the AWS SDK for PHP.';

try {
    $result = $SesClient->updateTemplate([
        'Template' => [
            'HtmlPart' => $html_body,
            'SubjectPart' => $subject,
            'TemplateName' => $name,
            'TextPart' => $plaintext_body,
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Eliminazione di un modello di e-mail
<a name="delete-an-email-template"></a>

Per rimuovere un modello di email specifico, usa l'[DeleteTemplate](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteTemplate.html)operazione. Tutto ciò di cui hai bisogno è il TemplateName.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$name = 'Template_Name';

try {
    $result = $SesClient->deleteTemplate([
        'TemplateName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Inviare un'e-mail con un modello
<a name="send-an-email-with-a-template"></a>

Per utilizzare un modello per inviare un'e-mail ai destinatari, utilizza l'[SendTemplatedEmail](https://docs.aws.amazon.com/ses/latest/APIReference/API_SendTemplatedEmail.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$template_name = 'Template_Name';
$sender_email = 'email_address';
$recipient_emails = ['email_address'];

try {
    $result = $SesClient->sendTemplatedEmail([
        'Destination' => [
            'ToAddresses' => $recipient_emails,
        ],
        'ReplyToAddresses' => [$sender_email],
        'Source' => $sender_email,

        'Template' => $template_name,
        'TemplateData' => '{ }'
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Gestione dei filtri e-mail tramite l'API Amazon SES e la AWS SDK per PHP versione 3
<a name="ses-filters"></a>

Oltre a inviare e-mail, puoi anche ricevere e-mail con Amazon Simple Email Service (Amazon SES). Un filtro degli indirizzi IP permette di specificare se accettare o rifiutare posta proveniente da un indirizzo IP o da un intervallo di indirizzi IP. Per ulteriori informazioni, consulta la pagina sulla [gestione di filtri degli indirizzi IP per la ricezione di e-mail in Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-ip-filters.html).

Gli esempi seguenti mostrano come:
+ Crea un filtro e-mail utilizzando [CreateReceiptFilter](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#createreceiptfilter).
+ Elenca tutti i filtri e-mail utilizzando [ListReceiptFilters](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listreceiptfilters).
+ Rimuovi un filtro e-mail utilizzando [DeleteReceiptFilter](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deletereceiptfilter).

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per ulteriori informazioni sull'uso di Amazon SES, consulta la [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Crea un filtro e-mail
<a name="create-an-email-filter"></a>

Per consentire o bloccare le e-mail provenienti da un indirizzo IP specifico, utilizza l'[CreateReceiptFilter](https://docs.aws.amazon.com/ses/latest/APIReference/API_CreateReceiptFilter.html)operazione. Fornire l'indirizzo IP o l'intervallo di indirizzi e un nome univoco per identificare il filtro.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$filter_name = 'FilterName';
$ip_address_range = '10.0.0.1/24';

try {
    $result = $SesClient->createReceiptFilter([
        'Filter' => [
            'IpFilter' => [
                'Cidr' => $ip_address_range,
                'Policy' => 'Block|Allow',
            ],
            'Name' => $filter_name,
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Elenca tutti i filtri e-mail
<a name="list-all-email-filters"></a>

Per elencare i filtri degli indirizzi IP associati alla tua Account AWS AWS regione nella regione corrente, usa l'[ListReceiptFilters](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListReceiptFilters.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

try {
    $result = $SesClient->listReceiptFilters();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Eliminare un filtro e-mail
<a name="delete-an-email-filter"></a>

Per rimuovere un filtro esistente per un indirizzo IP specifico, utilizzare l'[DeleteReceiptFilter](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteReceiptFilter.html)operazione. Fornire il nome di filtro univoco per identificare il filtro di ricezione da eliminare.

Se devi modificare l'intervallo di indirizzi filtrati, è possibile eliminare un filtro di ricezione e crearne uno nuovo.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$filter_name = 'FilterName';

try {
    $result = $SesClient->deleteReceiptFilter([
        'FilterName' => $filter_name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Creazione e gestione di regole e-mail utilizzando l'API Amazon SES e la AWS SDK per PHP versione 3
<a name="ses-rules"></a>

Oltre a inviare e-mail, puoi anche ricevere e-mail con Amazon Simple Email Service (Amazon SES). Le regole di ricezione ti consentono di specificare cosa fa Amazon SES con le e-mail che riceve per gli indirizzi e-mail o i domini di tua proprietà. Una regola può inviare e-mail ad altri AWS servizi tra cui, a titolo esemplificativo ma non esaustivo, Amazon S3, Amazon SNS o. AWS Lambda

Per ulteriori informazioni, consulta [Gestione dei set di regole di ricezione per Amazon SES Email Receiver](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rule-sets.html) e [Gestione delle regole di ricezione per Amazon SES Email Reception](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rules.html).

Gli esempi seguenti mostrano come:
+ Crea un set di regole di ricezione utilizzando [CreateReceiptRuleSet](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#createreceiptruleset).
+ Crea una regola di incasso utilizzando [CreateReceiptRule](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#createreceiptrule).
+ Descrivi una regola di ricezione impostata utilizzando [DescribeReceiptRuleSet](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#describereceiptruleset).
+ Descrivi una regola di incasso utilizzando [DescribeReceiptRule](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#describereceiptrule).
+ Elenca tutti i set di regole di ricezione utilizzando [ListReceiptRuleSets](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listreceiptrulesets).
+ Aggiorna una regola di ricezione utilizzando [UpdateReceiptRule](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#updatereceiptrule).
+ Rimuovi una regola di ricezione utilizzando [DeleteReceiptRule](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deletereceiptrule).
+ Rimuovi una regola di ricezione impostata utilizzando [DeleteReceiptRuleSet](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deletereceiptruleset).

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per ulteriori informazioni sull'uso di Amazon SES, consulta la [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Creazione di un set di regole di ricezione
<a name="create-a-receipt-rule-set"></a>

Un set di regole di ricezione contiene una raccolta di regole di ricezione. È necessario avere almeno un set di regole di ricezione associato al tuo account prima di poter creare una regola di ricezione. Per creare un set di regole di ricezione, fornisci un'operazione univoca RuleSetName e utilizza l'[CreateReceiptRuleSet](https://docs.aws.amazon.com/ses/latest/APIReference/API_CreateReceiptRuleSet.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$name = 'Rule_Set_Name';

try {
    $result = $SesClient->createReceiptRuleSet([
        'RuleSetName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Creazione di una regola di ricezione
<a name="create-a-receipt-rule"></a>

Controlla la tua e-mail in entrata aggiungendo una regola di ricezione a un set di regole di ricezione esistente. Questo esempio mostra come creare una regola di ricezione che invii i messaggi in arrivo a un bucket Amazon S3, ma puoi anche inviare messaggi ad Amazon SNS e. AWS Lambda Per creare una regola di ricezione, fornisci una regola e il comando all' RuleSetName operazione. [CreateReceiptRule](https://docs.aws.amazon.com/ses/latest/APIReference/API_CreateReceiptRule.html)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$rule_name = 'Rule_Name';
$rule_set_name = 'Rule_Set_Name';
$s3_bucket = 'Bucket_Name';

try {
    $result = $SesClient->createReceiptRule([
        'Rule' => [
            'Actions' => [
                [
                    'S3Action' => [
                        'BucketName' => $s3_bucket,
                    ],
                ],
            ],
            'Name' => $rule_name,
            'ScanEnabled' => true,
            'TlsPolicy' => 'Optional',
            'Recipients' => ['<string>']
        ],
        'RuleSetName' =>  $rule_set_name,

     ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Descrizione di un set di regole di ricezione
<a name="describe-a-receipt-rule-set"></a>

Una volta al secondo, restituisci i dettagli del set di regole di ricezione specificato. Per utilizzare l'[DescribeReceiptRuleSet](https://docs.aws.amazon.com/ses/latest/APIReference/API_DescribeReceiptRuleSet.html)operazione, fornisci il RuleSetName.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$name = 'Rule_Set_Name';

try {
    $result = $SesClient->describeReceiptRuleSet([
        'RuleSetName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Descrivi una regola di ricezione
<a name="describe-a-receipt-rule"></a>

Restituire i dettagli di una regola di ricezione specifica. Per utilizzare l'[DescribeReceiptRule](https://docs.aws.amazon.com/ses/latest/APIReference/API_DescribeReceiptRule.html)operazione, fornisci il comando RuleName e RuleSetName.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$rule_name = 'Rule_Name';
$rule_set_name = 'Rule_Set_Name';

try {
    $result = $SesClient->describeReceiptRule([
        'RuleName' => $rule_name,
        'RuleSetName' => $rule_set_name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Elenca tutti i set di regole di ricezione
<a name="list-all-receipt-rule-sets"></a>

Per elencare i set di regole di ricezione esistenti Account AWS nella AWS regione corrente, utilizza l'[ListReceiptRuleSets](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListReceiptRuleSets.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

try {
    $result = $SesClient->listReceiptRuleSets();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Aggiornare una regola di incasso
<a name="update-a-receipt-rule"></a>

Questo esempio mostra come aggiornare una regola di ricezione che invia i messaggi in entrata a una AWS Lambda funzione, ma puoi anche inviare messaggi ad Amazon SNS e Amazon S3. Per utilizzare l'[UpdateReceiptRule](https://docs.aws.amazon.com/ses/latest/APIReference/API_UpdateReceiptRule.html)operazione, fornisci la nuova regola di ricezione e il. RuleSetName

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$rule_name = 'Rule_Name';
$rule_set_name = 'Rule_Set_Name';
$lambda_arn = 'Amazon Resource Name (ARN) of the AWS Lambda function';
$sns_topic_arn = 'Amazon Resource Name (ARN) of the Amazon SNS topic';

try {
    $result = $SesClient->updateReceiptRule([
        'Rule' => [
            'Actions' => [
                'LambdaAction' => [
                    'FunctionArn' => $lambda_arn,
                    'TopicArn' => $sns_topic_arn,
                ],
            ],
            'Enabled' => true,
            'Name' => $rule_name,
            'ScanEnabled' => false,
            'TlsPolicy' => 'Require',
        ],
        'RuleSetName' => $rule_set_name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Eliminare un set di regole di incasso
<a name="delete-a-receipt-rule-set"></a>

Rimuovere un set di regole di ricezione specifico che non è attualmente disabilitato. Ciò elimina anche tutte le regole di ricezione che contiene. Per eliminare un set di regole di ricezione, fornisci il [DeleteReceiptRuleSet](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteReceiptRuleSet.html)comando RuleSetName all'operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$name = 'Rule_Set_Name';

try {
    $result = $SesClient->deleteReceiptRuleSet([
        'RuleSetName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Eliminazione di una regola di ricezione
<a name="delete-a-receipt-rule"></a>

Per eliminare una regola di ricezione specificata, fornite il comando RuleName e RuleSetName all'[DeleteReceiptRule](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteReceiptRule.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Codice di esempio** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$rule_name = 'Rule_Name';
$rule_set_name = 'Rule_Set_Name';

try {
    $result = $SesClient->deleteReceiptRule([
        'RuleName' => $rule_name,
        'RuleSetName' => $rule_set_name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Monitoraggio dell'attività di invio tramite l'API Amazon SES e la AWS SDK per PHP versione 3
<a name="ses-send-email"></a>

Amazon Simple Email Service (Amazon SES) fornisce metodi per monitorare l'attività di invio. Consigliamo di implementare questi metodi per tenere traccia di misure importanti, come le percentuali di mancati recapiti (bounce), reclami e messaggi rifiutati dell'account. Percentuali di rimbalzi e reclami eccessivamente elevate possono compromettere la tua capacità di inviare e-mail tramite Amazon SES.

Gli esempi seguenti mostrano come:
+ Verifica la tua quota di invio utilizzando. [GetSendQuota](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#getsendquota)
+ Monitora la tua attività di invio utilizzando [GetSendStatistics](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#getsendstatistics).

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile qui GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per ulteriori informazioni sull'uso di Amazon SES, consulta la [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Controlla la tua quota di invio
<a name="check-your-sending-quota"></a>

È possibile inviare solo una determinata quantità di messaggi in un singolo periodo di 24 ore. Per verificare quanti messaggi puoi ancora inviare, usa l'[GetSendQuota](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetSendQuota.html)operazione. Per ulteriori informazioni, consulta [Gestire i limiti di invio di Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/manage-sending-limits.html).

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Codice di esempio** 

```
$SesClient = new SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-1'

]);

try {
    $result = $SesClient->getSendQuota();
    $send_limit = $result["Max24HourSend"];
    $sent = $result["SentLast24Hours"];
    $available = $send_limit - $sent;
    print("<p>You can send " . $available . " more messages in the next 24 hours.</p>");
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Monitora la tua attività di invio
<a name="monitor-your-sending-activity"></a>

Per recuperare le metriche dei messaggi che hai inviato nelle ultime due settimane, utilizza l'[GetSendStatistics](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetSendStatistics.html)operazione. In questo esempio viene restituito il numero di tentativi di distribuzione, i mancati recapiti, i reclami e i messaggi rifiutati in incrementi di 15 minuti.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Codice di esempio** 

```
$SesClient = new SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-1'
]);

try {
    $result = $SesClient->getSendStatistics();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Autorizzazione dei mittenti tramite l'API Amazon SES e la versione 3 AWS SDK per PHP
<a name="ses-sender-policy"></a>

Per consentire a un altro Account AWS AWS Identity and Access Management utente o AWS servizio di inviare e-mail tramite Amazon Simple Email Service (Amazon SES) Simple Email Service (Amazon SES) per tuo conto, devi creare una politica di autorizzazione all'invio. Questo è un documento in formato JSON che viene associato a un'identità di proprietà dell'utente.

La policy elenca in modo esplicito gli utenti a cui permetti di inviare e-mail per l'identità e in quali condizioni. A tutti i mittenti, eccetto te e le entità a cui concedi le autorizzazioni in modo esplicito nelle policy, non verrà concesso di inviare e-mail. A un'identità possono essere collegate nessuna, una o più policy. Puoi anche definire un'unica policy con più istruzioni per ottenere l'effetto di più policy.

Per ulteriori informazioni, consulta [Utilizzo delle autorizzazioni all'invio con Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html).

Gli esempi seguenti mostrano come:
+ Crea un mittente autorizzato utilizzando [PutIdentityPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#createidentitypolicy).
+ Recupera le politiche per un mittente autorizzato utilizzando. [GetIdentityPolicies](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#getidentitypolicies)
+ Elenca i mittenti autorizzati utilizzando. [ListIdentityPolicies](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listidentitypolicies)
+ Revoca l'autorizzazione per un mittente autorizzato utilizzando. [DeleteIdentityPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deleteidentitypolicy)

[Tutto il codice di esempio per il AWS SDK per PHP è disponibile qui. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

Per ulteriori informazioni sull'uso di Amazon SES, consulta la [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Crea un mittente autorizzato
<a name="create-an-authorized-sender"></a>

Per autorizzare un altro utente Account AWS a inviare e-mail per tuo conto, utilizza una politica di identità per aggiungere o aggiornare l'autorizzazione all'invio di e-mail dai tuoi indirizzi e-mail o domini verificati. Per creare una politica di identità, usa l'[PutIdentityPolicy](https://docs.aws.amazon.com/ses/latest/APIReference/API_PutIdentityPolicy.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Codice di esempio** 

```
$SesClient = new SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-1'
]);

$identity = "arn:aws:ses:us-east-1:123456789012:identity/example.com";
$other_aws_account = "0123456789";
$policy = <<<EOT
{
  "Id":"ExampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeAccount",
      "Effect":"Allow",
      "Resource":"$identity",
      "Principal":{
        "AWS":[ "$other_aws_account" ]
      },
      "Action":[
        "SES:SendEmail",
        "SES:SendRawEmail"
      ]
    }
  ]
}
EOT;
$name = "policyName";

try {
    $result = $SesClient->putIdentityPolicy([
        'Identity' => $identity,
        'Policy' => $policy,
        'PolicyName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Recupera le politiche per un mittente autorizzato
<a name="retrieve-polices-for-an-authorized-sender"></a>

Restituisci le policy di autorizzazione all'invio associate a una specifica identità e-mail o a un'identità di dominio. Per ottenere l'autorizzazione all'invio per un determinato indirizzo email o dominio, usa l'operazione. [GetIdentityPolicy](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityPolicy.html)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Codice di esempio** 

```
$SesClient = new SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-1'
]);

$identity = "arn:aws:ses:us-east-1:123456789012:identity/example.com";
$policies = ["policyName"];

try {
    $result = $SesClient->getIdentityPolicies([
        'Identity' => $identity,
        'PolicyNames' => $policies,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Elenca i mittenti autorizzati
<a name="list-authorized-senders"></a>

Per elencare le politiche di autorizzazione all'invio associate a un'identità di posta elettronica o a un'identità di dominio specifica AWS nella regione corrente, utilizza l'[ListIdentityPolicies](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListIdentityPolicies.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Codice di esempio** 

```
$SesClient = new SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-1'
]);

$identity = "arn:aws:ses:us-east-1:123456789012:identity/example.com";

try {
    $result = $SesClient->listIdentityPolicies([
        'Identity' => $identity,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Revoca l'autorizzazione per un mittente autorizzato
<a name="revoke-permission-for-an-authorized-sender"></a>

Rimuovi l'autorizzazione di invio Account AWS a un altro utente a inviare e-mail con un'identità di posta elettronica o un'identità di dominio eliminando la politica di identità associata all'operazione. [DeleteIdentityPolicy](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteIdentityPolicy.html)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Codice di esempio** 

```
$SesClient = new SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-1'
]);

$identity = "arn:aws:ses:us-east-1:123456789012:identity/example.com";
$name = "policyName";

try {
    $result = $SesClient->deleteIdentityPolicy([
        'Identity' => $identity,
        'PolicyName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Esempi di Amazon SNS con la versione 3 AWS SDK per PHP
<a name="sns-examples"></a>

Amazon Simple Notification Service (Amazon SNS) è un servizio Web che coordina e gestisce la consegna o l'invio di messaggi a endpoint o client abbonati.

In Amazon SNS esistono due tipi di client: editori (noti anche come produttori) e abbonati (detti anche consumatori). Gli editori comunicano in modo asincrono con i sottoscrittori producendo e inviando un messaggio a un argomento, che rappresenta un punto di accesso logico e un canale di comunicazione. Gli abbonati (server Web, indirizzi e-mail, code Amazon SQS AWS Lambda , funzioni) utilizzano o ricevono il messaggio o la notifica tramite uno dei protocolli supportati (Amazon SQS HTTP/HTTPS URLs, email AWS SMS, Lambda) quando sono abbonati all'argomento.

[Tutto il codice di esempio per la AWS SDK per PHP versione 3 è disponibile qui. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

**Topics**
+ [Gestione degli argomenti](sns-examples-managing-topics.md)
+ [Gestione degli abbonamenti](sns-examples-subscribing-unsubscribing-topics.md)
+ [Invio di messaggi SMS Amazon](sns-examples-sending-sms.md)

# Gestione degli argomenti in Amazon SNS con la versione 3 AWS SDK per PHP
<a name="sns-examples-managing-topics"></a>

Per inviare notifiche ad Amazon Simple Queue Service (Amazon SQS) HTTP/HTTPS URLs, invia un'e-mail AWS Lambda o AWS SMS, devi prima creare un argomento che gestisca la consegna dei messaggi a tutti gli abbonati di quell'argomento.

In termini di modello di progettazione dell'osservatore, un argomento è come il soggetto. Dopo aver creato un argomento, è possibile aggiungere sottoscrittori che vengono automaticamente avvisati quando viene pubblicato un messaggio relativo all'argomento.

Scopri di più sulla sottoscrizione agli argomenti in [Gestione degli abbonamenti in Amazon AWS SDK per PHP SNS](sns-examples-subscribing-unsubscribing-topics.md) con la versione 3.

Gli esempi seguenti mostrano come:
+ Crea un argomento da utilizzare per la pubblicazione delle notifiche. [CreateTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#createtopic)
+ Restituisce un elenco degli argomenti del richiedente utilizzando [ListTopics](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listtopic).
+ Elimina un argomento e tutte le relative sottoscrizioni utilizzando. [DeleteTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#deletetopic)
+ Restituisce tutte le proprietà di un argomento utilizzando [GetTopicAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#gettopicattributes).
+ Consenti al proprietario di un argomento di impostare un attributo dell'argomento su un nuovo valore utilizzando [SetTopicAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#settopicattributes).

Per ulteriori informazioni sull'uso di Amazon SNS, consulta Amazon SNS [Topic Attributes for Message Delivery](https://docs.aws.amazon.com/sns/latest/dg/sns-topic-attributes.html) Status.

Tutto il codice di esempio per AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Creazione di un argomento
<a name="create-a-topic"></a>

Per creare un argomento, usa l'[CreateTopic](https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html)operazione.

Il nome di ogni argomento nel tuo Account AWS deve essere unico.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$topicname = 'myTopic';

try {
    $result = $SnSclient->createTopic([
        'Name' => $topicname,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Elenca i tuoi argomenti
<a name="list-your-topics"></a>

Per elencare fino a 100 argomenti esistenti nella AWS regione corrente, usa l'[ListTopics](https://docs.aws.amazon.com/sns/latest/api/API_ListTopics.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->listTopics();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Eliminazione di un argomento
<a name="delete-a-topic"></a>

Per rimuovere un argomento esistente e tutte le relative sottoscrizioni, utilizzate l'[DeleteTopic](https://docs.aws.amazon.com/sns/latest/api/API_DeleteTopic.html)operazione.

Tutti i messaggi non recapitati ancora agli abbonati verranno eliminati.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->deleteTopic([
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Ottieni gli attributi dell'argomento
<a name="get-topic-attributes"></a>

Per recuperare le proprietà di un singolo argomento esistente, usa l'[GetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetTopicAttributes.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->getTopicAttributes([
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Impostazione degli attributi degli argomenti
<a name="set-topic-attributes"></a>

Per aggiornare le proprietà di un singolo argomento esistente, utilizzate l'[SetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html)operazione.

È possibile impostare solo gli attributi `Policy`, `DisplayName` e `DeliveryPolicy`.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);
$attribute = 'Policy | DisplayName | DeliveryPolicy';
$value = 'First Topic';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->setTopicAttributes([
        'AttributeName' => $attribute,
        'AttributeValue' => $value,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Gestione degli abbonamenti in Amazon SNS AWS SDK per PHP con la versione 3
<a name="sns-examples-subscribing-unsubscribing-topics"></a>

Utilizza gli argomenti di Amazon Simple Notification Service (Amazon SNS) per inviare notifiche ad Amazon Simple Queue Service (Amazon SQS), HTTP/HTTPS, indirizzi e-mail, () oppure. AWS Server Migration Service AWS SMS AWS Lambda

Le sottoscrizioni sono collegate a un argomento che gestisce l'invio di messaggi ai sottoscrittori. Scopri di più sulla creazione di argomenti in [Gestione degli argomenti in Amazon SNS con la AWS SDK per PHP versione 3](sns-examples-managing-topics.md).

Gli esempi seguenti mostrano come:
+ Iscriviti a un argomento esistente utilizzando [Subscribe](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#subscribe).
+ Verifica un abbonamento utilizzando [ConfirmSubscription](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#confirmsubscription).
+ Elenca gli abbonamenti esistenti utilizzando [ListSubscriptionsByTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listsubscriptionsbytopic).
+ Elimina un abbonamento utilizzando [Unsubscribe](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#unsubscribe).
+ Invia un messaggio a tutti i sottoscrittori di un argomento utilizzando [Publish](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#publish).

Per ulteriori informazioni sull'uso di Amazon SNS, consulta [Using Amazon System-to-System SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-system-to-system-messaging.html) for Messaging.

Tutto il codice di esempio per AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Sottoscrizione di un indirizzo e-mail a un argomento
<a name="subscribe-an-email-address-to-a-topic"></a>

Per avviare una sottoscrizione a un indirizzo e-mail, utilizzare l'operazione [Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

Puoi utilizzare il metodo di sottoscrizione per sottoscrivere diversi endpoint a un argomento Amazon SNS, a seconda dei valori utilizzati per i parametri passati. Questo è illustrato in altri esempi di questo argomento.

In questo esempio, l'endpoint è un indirizzo e-mail. Un token di conferma viene inviato a questa e-mail. Verifica la sottoscrizione con questo token di conferma entro tre giorni dalla ricezione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$protocol = 'email';
$endpoint = 'sample@example.com';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Sottoscrivi un endpoint applicativo a un argomento
<a name="subscribe-an-application-endpoint-to-a-topic"></a>

Per avviare una sottoscrizione a un'app Web, utilizza l'operazione [Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

Puoi utilizzare il metodo di sottoscrizione per sottoscrivere diversi endpoint a un argomento Amazon SNS, a seconda dei valori utilizzati per i parametri passati. Questo è illustrato in altri esempi di questo argomento.

In questo esempio, l'endpoint è un URL. Un token di conferma viene inviato a questo indirizzo Web. Verifica la sottoscrizione con questo token di conferma entro tre giorni dalla ricezione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$protocol = 'https';
$endpoint = 'https://';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Sottoscrizione di una funzione Lambda a un argomento
<a name="subscribe-a-lam-function-to-a-topic"></a>

Per avviare una sottoscrizione a una funzione Lambda, utilizzare [l'](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html)operazione Subscribe.

Puoi utilizzare il metodo di sottoscrizione per sottoscrivere diversi endpoint a un argomento Amazon SNS, a seconda dei valori utilizzati per i parametri passati. Questo è illustrato in altri esempi di questo argomento.

In questo esempio, l'endpoint è una funzione Lambda. Un token di conferma viene inviato a questa funzione Lambda. Verifica la sottoscrizione con questo token di conferma entro tre giorni dalla ricezione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$protocol = 'lambda';
$endpoint = 'arn:aws:lambda:us-east-1:123456789023:function:messageStore';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Sottoscrivi un SMS di testo a un argomento
<a name="subscribe-a-text-sms-to-a-topic"></a>

Per inviare messaggi SMS a più numeri di telefono nello stesso momento, sottoscrivi ogni numero a un argomento.

Per avviare una sottoscrizione a un numero di telefono, utilizza l'operazione [Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

Puoi utilizzare il metodo di sottoscrizione per sottoscrivere diversi endpoint a un argomento Amazon SNS, a seconda dei valori utilizzati per i parametri passati. Questo è illustrato in altri esempi di questo argomento.

In questo esempio, l'endpoint è un numero di telefono in formato E.164, uno standard per le telecomunicazioni internazionali.

Un token di conferma viene inviato a questo numero di telefono. Verifica la sottoscrizione con questo token di conferma entro tre giorni dalla ricezione.

Per un modo alternativo di inviare messaggi SMS con Amazon SNS, consulta [Invio di messaggi SMS in Amazon SNS con AWS SDK per PHP](sns-examples-sending-sms.md) la versione 3.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$protocol = 'sms';
$endpoint = '+1XXX5550100';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Conferma l'iscrizione a un argomento
<a name="confirm-subscription-to-a-topic"></a>

Per creare una sottoscrizione, il proprietario dell'endpoint deve confermare l'intenzione di ricevere messaggi da un argomento utilizzando un token inviato quando una sottoscrizione viene inizialmente stabilita, come descritto in precedenza. I token di conferma sono validi per tre giorni. Dopo tre giorni, è possibile inviare nuovamente un token mediante la creazione di una nuova sottoscrizione.

Per confermare un abbonamento, usa l'[ConfirmSubscription](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$subscription_token = 'arn:aws:sns:us-east-1:111122223333:MyTopic:123456-abcd-12ab-1234-12ba3dc1234a';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->confirmSubscription([
        'Token' => $subscription_token,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Elenca le sottoscrizioni a un argomento
<a name="list-subscriptions-to-a-topic"></a>

Per elencare fino a 100 abbonamenti esistenti in una determinata AWS regione, usa l'[ListSubscriptions](https://docs.aws.amazon.com/sns/latest/api/API_ListSubscriptions.html)operazione.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->listSubscriptions();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Annullamento della sottoscrizione a un argomento
<a name="unsubscribe-from-a-topic"></a>

Per rimuovere un endpoint da un argomento, utilizzare l'operazione [Unsubscribe](https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html).

Se l'abbonamento richiede l'autenticazione per l'eliminazione, solo il proprietario dell'abbonamento o il proprietario dell'argomento può annullare l'iscrizione ed è richiesta una AWS firma. Se la chiamata di annullamento della registrazione non richiede l'autenticazione e il richiedente non è il proprietario della sottoscrizione, un messaggio di annullamento finale viene inviato all'endpoint.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$subscription = 'arn:aws:sns:us-east-1:111122223333:MySubscription';

try {
    $result = $SnSclient->unsubscribe([
        'SubscriptionArn' => $subscription,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Pubblicare un messaggio su un argomento di Amazon SNS
<a name="publish-a-message-to-an-sns-topic"></a>

[Per recapitare un messaggio a ciascun endpoint sottoscritto a un argomento di Amazon SNS, utilizza l'operazione di pubblicazione.](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html)

Crea un oggetto che contenga i parametri per la pubblicazione di un messaggio, incluso il testo del messaggio e l'Amazon Resource Name (ARN) dell'argomento Amazon SNS.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$message = 'This message is sent from a Amazon SNS code sample.';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->publish([
        'Message' => $message,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Invio di messaggi SMS in Amazon SNS con la versione 3 AWS SDK per PHP
<a name="sns-examples-sending-sms"></a>

Puoi utilizzare Amazon Simple Notification Service (Amazon SNS) per inviare messaggi di testo o SMS a dispositivi dotati di SMS. Puoi inviare un messaggio direttamente a un numero di telefono oppure inviarlo a più numeri contemporaneamente sottoscrivendo quei numeri a un argomento e inviando il messaggio all'argomento.

Usa Amazon SNS per specificare le preferenze per la messaggistica SMS, ad esempio il modo in cui le consegne sono ottimizzate (in termini di costi o per una consegna affidabile), il limite di spesa mensile, il modo in cui vengono registrate le consegne dei messaggi e se abbonarsi ai report giornalieri sull'utilizzo degli SMS. Queste preferenze vengono recuperate e impostate come attributi SMS per Amazon SNS.

Quando invii un SMS, ricorda di specificare il numero di telefono utilizzando il formato E.164. E.164 è uno standard per la struttura del numero di telefono utilizzato per le telecomunicazioni internazionali. I numeri di telefono che seguono questo formato possono avere un massimo di 15 cifre e sono preceduti dal segno più (\$1) e dal prefisso del paese. Ad esempio, un numero di telefono statunitense in formato E.164 apparirebbe come \$11001 0100. XXX555

Gli esempi seguenti mostrano come:
+ [Recupera le impostazioni predefinite per l'invio di messaggi SMS dal tuo account utilizzando Get. SMSAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#getsmsattributes)
+ Aggiorna le impostazioni predefinite per l'invio di messaggi SMS dal tuo account utilizzando [Set SMSAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#setsmsattributes).
+ Scopri se il proprietario di un determinato numero di telefono ha scelto di non ricevere SMS dal tuo account utilizzando [CheckIfPhoneNumberISOptedOut](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#checkifphonenumberisoptedout).
+ Elenca i numeri di telefono utilizzati dal proprietario per i quali il proprietario ha scelto di non ricevere SMS dal tuo account. [ListPhoneNumberOptedOut](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listphonenumbersoptedout)
+ Invia un messaggio di testo SMS (messaggio) direttamente a un numero di telefono utilizzando [Publish](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#publish).

Per ulteriori informazioni sull'uso di Amazon SNS, consulta [Utilizzo di Amazon SNS per le notifiche utente con un numero di cellulare come abbonato (invio SMS](https://docs.aws.amazon.com/sns/latest/dg/sns-mobile-phone-number-as-subscriber.html)).

[Tutto il codice di esempio per AWS SDK per PHP è disponibile qui. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Ottieni gli attributi SMS
<a name="get-sms-attributes"></a>

Per recuperare le impostazioni predefinite per i messaggi SMS, utilizzate l'SMSAttributesoperazione [Get](https://docs.aws.amazon.com/sns/latest/api/API_GetSMSAttributes.html).

Questo esempio si riferisce all'attributo `DefaultSMSType`. Questo attributo consente di controllare se i messaggi SMS vengono inviati come `Promotional` per ottimizzare il recapito dei messaggi e permettere di contenere i costi, oppure come `Transactional` per ottimizzare il recapito dei messaggi e ottenere la massima affidabilità.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->getSMSAttributes([
        'attributes' => ['DefaultSMSType'],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Imposta gli attributi SMS
<a name="set-sms-attributes"></a>

Per aggiornare le impostazioni predefinite per i messaggi SMS, utilizzare l'SMSAttributesoperazione [Set](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html).

Questo esempio imposta l'attributo `DefaultSMSType` su `Transactional`, ottimizzando il recapito dei messaggi per ottenere la massima affidabilità.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->SetSMSAttributes([
        'attributes' => [
            'DefaultSMSType' => 'Transactional',
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Verifica se un numero di telefono è stato disattivato
<a name="check-if-a-phone-number-has-opted-out"></a>

Per determinare se il proprietario di un determinato numero di telefono ha scelto di non ricevere messaggi SMS dal tuo account, utilizza l'[CheckIfPhoneNumberIsOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_CheckIfPhoneNumberIsOptedOut.html)operazione.

In questo esempio, il numero di telefono è in formato E.164, uno standard per le telecomunicazioni internazionali.

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$phone = '+1XXX5550100';

try {
    $result = $SnSclient->checkIfPhoneNumberIsOptedOut([
        'phoneNumber' => $phone,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Elenca i numeri di telefono esclusi
<a name="list-opted-out-phone-numbers"></a>

Per recuperare un elenco di numeri di telefono a cui il proprietario ha scelto di non ricevere SMS dal tuo account, utilizza l'operazione. [ListPhoneNumbersOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_ListPhoneNumbersOptedOut.html)

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->listPhoneNumbersOptedOut();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Pubblica su un messaggio di testo (messaggio SMS)
<a name="publish-to-a-text-message-sms-message"></a>

Per distribuire un messaggio di testo (messaggio SMS) direttamente a un numero di telefono, utilizzare l'operazione [Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html).

In questo esempio, il numero di telefono è in formato E.164, uno standard per le telecomunicazioni internazionali.

I messaggi SMS possono contenere fino a 140 byte. Le dimensioni massime di una singola pubblicazione SMS sono di 1.600 byte.

Per ulteriori informazioni sull'invio di messaggi SMS, vedi [Invio di un messaggio SMS](https://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html).

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Codice di esempio** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$message = 'This message is sent from a Amazon SNS code sample.';
$phone = '+1XXX5550100';

try {
    $result = $SnSclient->publish([
        'Message' => $message,
        'PhoneNumber' => $phone,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Esempi di Amazon SQS con la AWS SDK per PHP versione 3
<a name="sqs-examples"></a>

Amazon Simple Queue Service (SQS) è un servizio di accodamento dei messaggi veloce, affidabile, scalabile e completamente gestito. Amazon SQS consente di disaccoppiare i componenti di un'applicazione cloud. Amazon SQS include code standard con throughput ed at-least-once elaborazione elevati e code FIFO che forniscono la distribuzione FIFO (first>-in, first>-out) e l'elaborazione in una sola volta.

[Tutto il codice di esempio per la versione 3 è disponibile qui. AWS SDK per PHP GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

**Topics**
+ [Abilitare sondaggi lunghi](sqs-examples-enable-long-polling.md)
+ [Gestione del timeout di visibilità](sqs-examples-managing-visibility-timeout.md)
+ [Invio e ricezione di messaggi](sqs-examples-send-receive-messages.md)
+ [Utilizzo di code DLQ](sqs-examples-dead-letter-queues.md)
+ [Utilizzo delle code](sqs-examples-using-queues.md)

# Abilitazione del polling lungo in Amazon SQS AWS SDK per PHP con la versione 3
<a name="sqs-examples-enable-long-polling"></a>

Il polling prolungato riduce il numero di risposte vuote consentendo ad Amazon SQS di attendere un periodo di tempo specificato affinché un messaggio diventi disponibile nella coda prima di inviare una risposta. Inoltre, il polling lungo elimina le risposte vuote false creando delle query per tutti i server invece di effettuarne il campionamento. Per abilitare il polling lungo, specifica un tempo di attesa diverso da zero per i messaggi ricevuti. Per ulteriori informazioni, consulta la sezione relativa al [polling lungo di SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-long-polling.html).

Gli esempi seguenti mostrano come:
+ Imposta gli attributi su una coda Amazon SQS per abilitare il polling lungo, utilizzando. [SetQueueAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#setqueueattributes)
+ Recupera uno o più messaggi utilizzando long polling. [ReceiveMessage](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#receivemessage)
+ Crea una lunga coda di sondaggi utilizzando. [CreateQueue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#createqueue)

Tutto il codice di esempio per il AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Imposta gli attributi su una coda per abilitare il polling lungo
<a name="set-attributes-on-a-queue-to-enable-long-polling"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Codice di esempio** 

```
$queueUrl = "QUEUE_URL";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->setQueueAttributes([
        'Attributes' => [
            'ReceiveMessageWaitTimeSeconds' => 20
        ],
        'QueueUrl' => $queueUrl, // REQUIRED
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Recupera messaggi con sondaggi lunghi
<a name="retrieve-messages-with-long-polling"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Codice di esempio** 

```
$queueUrl = "QUEUE_URL";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->receiveMessage([
        'AttributeNames' => ['SentTimestamp'],
        'MaxNumberOfMessages' => 1,
        'MessageAttributeNames' => ['All'],
        'QueueUrl' => $queueUrl, // REQUIRED
        'WaitTimeSeconds' => 20,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Crea una coda con sondaggi lunghi
<a name="create-a-queue-with-long-polling"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Codice di esempio** 

```
$queueName = "QUEUE_NAME";


$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->createQueue([
        'QueueName' => $queueName,
        'Attributes' => [
            'ReceiveMessageWaitTimeSeconds' => 20
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Gestione del timeout di visibilità in Amazon SQS AWS SDK per PHP con la versione 3
<a name="sqs-examples-managing-visibility-timeout"></a>

Un timeout di visibilità è un periodo di tempo durante il quale Amazon SQS impedisce ad altri componenti che consumano di ricevere ed elaborare un messaggio. Per ulteriori informazioni, consulta [Timeout visibilità](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html).

Gli esempi seguenti mostrano come:
+ Modifica il timeout di visibilità di messaggi specificati in una coda con nuovi valori, utilizzando. [ChangeMessageVisibilityBatch](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#changemessagevisibilitybatch)

Tutto il codice di esempio per il AWS SDK per PHP è disponibile [qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code). GitHub

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Modificare il timeout di visibilità di più messaggi
<a name="change-the-visibility-timeout-of-multiple-messages"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Codice di esempio** 

```
$queueUrl = "QUEUE_URL";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->receiveMessage(array(
        'AttributeNames' => ['SentTimestamp'],
        'MaxNumberOfMessages' => 10,
        'MessageAttributeNames' => ['All'],
        'QueueUrl' => $queueUrl, // REQUIRED
    ));
    $messages = $result->get('Messages');
    if ($messages != null) {
        $entries = array();
        for ($i = 0; $i < count($messages); $i++) {
            $entries[] = [
                'Id' => 'unique_is_msg' . $i, // REQUIRED
                'ReceiptHandle' => $messages[$i]['ReceiptHandle'], // REQUIRED
                'VisibilityTimeout' => 3600
            ];
        }
        $result = $client->changeMessageVisibilityBatch([
            'Entries' => $entries,
            'QueueUrl' => $queueUrl
        ]);

        var_dump($result);
    } else {
        echo "No messages in queue \n";
    }
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Invio e ricezione di messaggi in Amazon SQS con AWS SDK per PHP la versione 3
<a name="sqs-examples-send-receive-messages"></a>

Per ulteriori informazioni sui messaggi Amazon SQS, consulta [Invio di un messaggio a una coda SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-send-message.html) e [Ricezione ed eliminazione di un messaggio da una coda SQS nella](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-receive-delete-message.html.html) Guida per l'utente di Service Quotas.

Gli esempi seguenti mostrano come:
+ Invia un messaggio a una coda specificata utilizzando. [SendMessage](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#sendmessage)
+ Recupera uno o più messaggi (fino a 10) da una coda specificata utilizzando. [ReceiveMessage](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#receivemessage)
+ Elimina un messaggio da una coda utilizzando. [DeleteMessage](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#deletemessage)

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile GitHub qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Invio di un messaggio
<a name="send-a-message"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Codice di esempio** 

```
$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

$params = [
    'DelaySeconds' => 10,
    'MessageAttributes' => [
        "Title" => [
            'DataType' => "String",
            'StringValue' => "The Hitchhiker's Guide to the Galaxy"
        ],
        "Author" => [
            'DataType' => "String",
            'StringValue' => "Douglas Adams."
        ],
        "WeeksOn" => [
            'DataType' => "Number",
            'StringValue' => "6"
        ]
    ],
    'MessageBody' => "Information about current NY Times fiction bestseller for week of 12/11/2016.",
    'QueueUrl' => 'QUEUE_URL'
];

try {
    $result = $client->sendMessage($params);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Ricevere ed eliminare messaggi
<a name="receive-and-delete-messages"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Codice di esempio** 

```
$queueUrl = "QUEUE_URL";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->receiveMessage([
        'AttributeNames' => ['SentTimestamp'],
        'MaxNumberOfMessages' => 1,
        'MessageAttributeNames' => ['All'],
        'QueueUrl' => $queueUrl, // REQUIRED
        'WaitTimeSeconds' => 0,
    ]);
    if (!empty($result->get('Messages'))) {
        var_dump($result->get('Messages')[0]);
        $result = $client->deleteMessage([
            'QueueUrl' => $queueUrl, // REQUIRED
            'ReceiptHandle' => $result->get('Messages')[0]['ReceiptHandle'] // REQUIRED
        ]);
    } else {
        echo "No messages in queue. \n";
    }
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Utilizzo di code di lettere non scritte in Amazon SQS con la versione 3 AWS SDK per PHP
<a name="sqs-examples-dead-letter-queues"></a>

Una coda DLQ è una coda a cui altre code (origini) possono mirare per i messaggi che non possono essere elaborati correttamente. Puoi riservare e isolare questi messaggi nella coda DLQ per determinare perché l'elaborazione non è riuscita. Devi configurare singolarmente ogni coda di origine che invia messaggi a una coda DLQ. Code multiple possono mirare a una singola coda DLQ.

Per ulteriori informazioni, consulta [Utilizzare le code DLQ di SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html).

Gli esempi seguenti mostrano come:
+ Abilita una coda di lettere non scritte utilizzando. [SetQueueAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#setqueueattributes)

[Tutto il codice di esempio per il AWS SDK per PHP è disponibile qui. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Abilita una coda di lettere non scritte
<a name="enable-a-dead-letter-queue"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Codice di esempio** 

```
$queueUrl = "QUEUE_URL";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->setQueueAttributes([
        'Attributes' => [
            'RedrivePolicy' => "{\"deadLetterTargetArn\":\"DEAD_LETTER_QUEUE_ARN\",\"maxReceiveCount\":\"10\"}"
        ],
        'QueueUrl' => $queueUrl // REQUIRED
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Utilizzo delle code in Amazon SQS AWS SDK per PHP con la versione 3
<a name="sqs-examples-using-queues"></a>

Per ulteriori informazioni sulle code Amazon SQS, consulta [How SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-how-it-works.html) Queues Work.

Gli esempi seguenti mostrano come:
+ Restituisci un elenco delle tue code utilizzando. [ListQueues](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#listqueues)
+ Crea una nuova coda utilizzando. [CreateQueue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#createqueue)
+ Restituisce l'URL di una coda esistente utilizzando. [GetQueueUrl](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#getqueueurl)
+ Elimina una coda specificata utilizzando. [DeleteQueue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#deletequeue)

Tutto il codice di esempio per il AWS SDK per PHP è [disponibile GitHub qui](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Credenziali
<a name="examplecredentials"></a>

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto in[Autenticazione con l' AWS utilizzo AWS SDK per PHP della versione 3](credentials.md). Quindi importate il file AWS SDK per PHP, come descritto in[Installazione della AWS SDK per PHP versione 3](getting-started_installation.md).

## Restituisce un elenco di code
<a name="return-a-list-of-queues"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Codice di esempio** 

```
$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->listQueues();
    foreach ($result->get('QueueUrls') as $queueUrl) {
        echo "$queueUrl\n";
    }
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Crea una coda
<a name="create-a-queue"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Codice di esempio** 

```
$queueName = "SQS_QUEUE_NAME";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->createQueue([
        'QueueName' => $queueName,
        'Attributes' => [
            'DelaySeconds' => 5,
            'MaximumMessageSize' => 4096, // 4 KB
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Restituisce l'URL di una coda
<a name="return-the-url-of-a-queue"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Codice di esempio** 

```
$queueName = "SQS_QUEUE_NAME";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->getQueueUrl([
        'QueueName' => $queueName // REQUIRED
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Elimina una coda
<a name="delete-a-queue"></a>

 **Importazioni** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Codice di esempio** 

```
$queueUrl = "SQS_QUEUE_URL";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->deleteQueue([
        'QueueUrl' => $queueUrl // REQUIRED
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Invia eventi agli endpoint EventBridge globali di Amazon utilizzando la AWS SDK per PHP versione 3
<a name="eventbridge-examples"></a>

Puoi utilizzare gli [endpoint EventBridge globali di Amazon](https://docs.aws.amazon.com//eventbridge/latest/userguide/eb-global-endpoints.html) per migliorare la disponibilità e l'affidabilità delle tue applicazioni basate sugli eventi.

Dopo aver [configurato](https://docs.aws.amazon.com//eventbridge/latest/userguide/eb-global-endpoints.html#eb-ge-create-endpoint) l'endpoint EventBridge globale, puoi inviargli eventi utilizzando l'SDK for PHP.

**Importante**  
Per utilizzare gli endpoint EventBridge globali con l'SDK for PHP, nell'ambiente PHP deve essere installata l'estensione [Common Runtime AWS (AWS CRT](guide_crt.md)).

L'esempio seguente utilizza il [PutEvents](https://docs.aws.amazon.com//aws-sdk-php/v3/api/api-eventbridge-2015-10-07.html#putevents)metodo di inviare un singolo evento `EventBridgeClient` a un endpoint globale. EventBridge 

```
<?php
/* Send a single event to an existing Amazon EventBridge global endpoint. */
require '../vendor/autoload.php';

use Aws\EventBridge\EventBridgeClient;

$evClient = new EventBridgeClient([
    'region' => 'us-east-1'
]);

$endpointId = 'xxxx123456.xxx';  // Existing EventBridge global endpointId.
$eventBusName = 'default';       // Existing event bus in the us-east-1 Region.

$event =  [
    'Source' => 'my-php-app',
    'DetailType' => 'test',
    'Detail' => json_encode(['foo' => 'bar']),
    'Time' => new DateTime(),
    'Resources' => ['php-script'],
    'EventBusName' => $eventBusName,
    'TraceHeader' => 'test'
];

$result = $evClient->putEvents([
    'EndpointId' => $endpointId,
    'Entries' => [$event]
]);
```

[Questo post del blog](https://aws.amazon.com/blogs//compute/introducing-global-endpoints-for-amazon-eventbridge/) contiene ulteriori informazioni sugli endpoint EventBridge globali.