

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Gestion des abonnements dans Amazon SNS avec AWS SDK pour PHP la version 3
<a name="sns-examples-subscribing-unsubscribing-topics"></a>

Utilisez les rubriques Amazon Simple Notification Service (Amazon SNS) pour envoyer des notifications à Amazon Simple Queue Service (Amazon SQS), HTTP/HTTPS, adresses e-mail, (), ou. AWS Server Migration Service AWS SMS AWS Lambda

Les abonnements sont attachés à une rubrique qui gère l’envoi de messages aux abonnés. Pour en savoir plus sur la création de rubriques, [consultez la section Gestion des rubriques dans Amazon SNS avec la AWS SDK pour PHP version 3](sns-examples-managing-topics.md).

Les exemples suivants montrent comment :
+ S’abonner à une rubrique existante à l’aide de [Subscribe](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#subscribe).
+ Vérifiez un abonnement à l'aide de [ConfirmSubscription](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#confirmsubscription).
+ Répertoriez les abonnements existants en utilisant [ListSubscriptionsByTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listsubscriptionsbytopic).
+ Supprimer un abonnement à l’aide de [Unsubscribe](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#unsubscribe).
+ Envoyer un message à tous les abonnés d’une rubrique à l’aide de [Publish](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#publish).

Pour plus d'informations sur l'utilisation d'Amazon SNS, consultez la section [Utilisation d'Amazon System-to-System SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-system-to-system-messaging.html) pour la messagerie.

Tous les exemples de code pour le AWS SDK pour PHP sont [disponibles ici GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Informations d’identification
<a name="examplecredentials"></a>

Avant d'exécuter l'exemple de code, configurez vos AWS informations d'identification, comme décrit dans[Authentification à l' AWS aide de AWS SDK pour PHP la version 3](credentials.md). Importez ensuite le AWS SDK pour PHP, comme décrit dans[Installation de la AWS SDK pour PHP version 3](getting-started_installation.md).

## Abonner une adresse e-mail à une rubrique
<a name="subscribe-an-email-address-to-a-topic"></a>

Pour lancer un abonnement à une adresse e-mail, utilisez l’opération [Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

Vous pouvez utiliser la méthode subscribe pour abonner plusieurs points de terminaison différents à une rubrique Amazon SNS, en fonction des valeurs utilisées pour les paramètres transmis. Cette action est présentée dans d’autres exemples de cette rubrique.

Dans cet exemple, le point de terminaison est une adresse e-mail. Un jeton de confirmation est envoyé à cette adresse e-mail. Vérifiez l’abonnement avec ce jeton de confirmation dans un délai de trois jours à compter de la réception.

 **Importations** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Exemple de code** 

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

## Abonnement d'un point de terminaison d'application à une rubrique
<a name="subscribe-an-application-endpoint-to-a-topic"></a>

Pour lancer un abonnement à une application Web, utilisez l’opération [Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

Vous pouvez utiliser la méthode subscribe pour abonner plusieurs points de terminaison différents à une rubrique Amazon SNS, en fonction des valeurs utilisées pour les paramètres transmis. Cette action est présentée dans d’autres exemples de cette rubrique.

Dans cet exemple, le point de terminaison est une URL. Un jeton de confirmation est envoyé à cette adresse Web. Vérifiez l’abonnement avec ce jeton de confirmation dans un délai de trois jours à compter de la réception.

 **Importations** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Exemple de code** 

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

## Abonner une fonction Lambda à une rubrique
<a name="subscribe-a-lam-function-to-a-topic"></a>

Pour initier un abonnement à une fonction Lambda, utilisez l'opération [Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

Vous pouvez utiliser la méthode subscribe pour abonner plusieurs points de terminaison différents à une rubrique Amazon SNS, en fonction des valeurs utilisées pour les paramètres transmis. Cette action est présentée dans d’autres exemples de cette rubrique.

Dans cet exemple, le point de terminaison est une fonction Lambda. Un jeton de confirmation est envoyé à cette fonction Lambda. Vérifiez l’abonnement avec ce jeton de confirmation dans un délai de trois jours à compter de la réception.

 **Importations** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Exemple de code** 

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

## Abonnement d'un SMS à un sujet
<a name="subscribe-a-text-sms-to-a-topic"></a>

Pour envoyer des messages SMS à plusieurs numéros de téléphone en même temps, abonnez chaque numéro à une rubrique.

Pour lancer un abonnement à un numéro de téléphone, utilisez l’opération [Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

Vous pouvez utiliser la méthode subscribe pour abonner plusieurs points de terminaison différents à une rubrique Amazon SNS, en fonction des valeurs utilisées pour les paramètres transmis. Cette action est présentée dans d’autres exemples de cette rubrique.

Dans cet exemple, le point de terminaison est un numéro de téléphone au format E.164, une norme internationale de télécommunications.

Un jeton de confirmation est envoyé à ce numéro de téléphone. Vérifiez l’abonnement avec ce jeton de confirmation dans un délai de trois jours à compter de la réception.

Pour une autre méthode d'envoi de SMS avec Amazon SNS, consultez la section [Envoi de messages SMS dans Amazon SNS avec AWS SDK pour PHP](sns-examples-sending-sms.md) la version 3.

 **Importations** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Exemple de code** 

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

## Confirmer l'abonnement à un sujet
<a name="confirm-subscription-to-a-topic"></a>

Pour créer un abonnement, le propriétaire du point de terminaison doit confirmer l’intention de recevoir des messages envoyés par la rubrique à l’aide d’un jeton transmis lorsqu’un abonnement est établi initialement, comme indiqué précédemment. Les jetons de confirmation sont valides pendant trois jours. Au bout de trois jours, vous pouvez renvoyer un jeton en créant un nouvel abonnement.

Pour confirmer un abonnement, utilisez l'[ConfirmSubscription](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)opération.

 **Importations** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Exemple de code** 

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

## Répertorier les abonnements à une rubrique
<a name="list-subscriptions-to-a-topic"></a>

Pour répertorier jusqu'à 100 abonnements existants dans une AWS région donnée, utilisez l'[ListSubscriptions](https://docs.aws.amazon.com/sns/latest/api/API_ListSubscriptions.html)opération.

 **Importations** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Exemple de code** 

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

## Annulation de l’abonnement à une rubrique
<a name="unsubscribe-from-a-topic"></a>

Pour supprimer un point de terminaison abonné à une rubrique, utilisez l’opération [Unsubscribe](https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html).

Si l'abonnement nécessite une authentification pour être supprimé, seul le propriétaire de l'abonnement ou le propriétaire du sujet peut se désabonner, et une AWS signature est requise. Si l'appel de désabonnement ne nécessite pas l'authentification et si le demandeur n'est pas le propriétaire de l'abonnement, un message d'annulation final est remis au point de terminaison.

 **Importations** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Exemple de code** 

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

## Publier un message sur une rubrique Amazon SNS
<a name="publish-a-message-to-an-sns-topic"></a>

Pour envoyer un message à chaque point de terminaison abonné à une rubrique Amazon SNS, utilisez l'opération [Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html).

Créez un objet contenant les paramètres de publication d'un message, notamment le texte du message et le nom de ressource Amazon (ARN) de la rubrique Amazon SNS.

 **Importations** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Exemple de code** 

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