

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

# 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());
}
```