In this example we are going to sent "SMS" messages with Amazon Simple Notification Service (SNS).


Kurulum


Terminalde composer require aws/aws-sdk-php komutunu çalıştırarak AWS SDK for PHP kütüphanesini yükleyin.


AWS SNS konfigürasyon


AWS panelinden "Identity and Access Management" bölümüne gidip yeni bir kullanıcı yaratın ve "AmazonSNSFullAccess" policy ekleyin. Aşağıdaki secret kodu sadece bir kereye mahsus olarak kullanıcı yaratıldığında görünebilir olduğundan, onu güvenli bir yere not edin. Ayrıca bu kullanıcı normal kullanıcılar gibi AWS sistemine bağlanmaması gerektiği için, "Group" özelliği "AdministratorAccess" vs. yerine "None" olarak tanımlanmalıdır.


Dosyalar


parameters.yml


parameters:
aws_sdk.config.default:
version: 'latest'
region: 'eu-west-1'

aws_sdk.credentials.default:
credentials:
key: 'AWS_KEY'
secret: 'AWS_SECRET'

services.yml


services:
Aws\Sdk: ~

App\Util\AwsSnsUtil:
arguments:
$config: '%aws_sdk.config.default%'
$credentials: '%aws_sdk.credentials.default%'

AwsSnsUtilInterface


declare(strict_types=1);

namespace App\Util;

interface AwsSnsUtilInterface
{
public function sendSms(string $phoneNumber): bool;
}

AwsSnsUtil


Konfigürasyon bilgileri buradan bulunabilir.


declare(strict_types=1);

namespace App\Util;

use Aws\Sdk;
use Aws\Sns\Exception\SnsException;

class AwsSnsUtil implements AwsSnsUtilInterface
{
private $client;

public function __construct(Sdk $sdk, iterable $config, iterable $credentials)
{
$this->client = $sdk->createSns($config+$credentials);
}

public function sendSms(string $phoneNumber): bool
{
try {
$this->client->publish([
'PhoneNumber' => $phoneNumber,
'Message' => 'Feeds have been processed!',
'MessageAttributes' => [
'AWS.SNS.SMS.SenderID' => [
'DataType' => 'String',
'StringValue' => 'INANZZZ'
],
'AWS.SNS.SMS.SMSType' => [
'DataType' => 'String',
'StringValue' => 'Promotional'
],
],
]);

$result = true;
} catch (SnsException $e) {
$result = false;
}

return $result;
}
}

Test


$this->awsSnsUtil->sendSms('0044_rest_of_the_number');

Sonuç