Skip to content
malak.cloud
  • Contact
  • Przemek Malak
  • Search Icon

malak.cloud

Cloud-native in everyday life

AWS SNS i NET.Core

AWS SNS i NET.Core

13 października 2017

Pracuję nad projektem, w którym muszę pobrać dane z MySQL na AWS, przetworzyć je i zapisać do Azure SQL. Rozwiązanie będzie pracowało tylko raz na jakiś czas, staram sie więc wykorzystać dobrodziejstwa serverless. Piszę w Pythonie i NET.Core i dziś chciałem wysłać powiadomiania za pomocą AWS SNS i NET.Core i nie było tak hopsiup. Musiałem trochę poszperać i popróbować. Żaden znaleziony tutorial, żaden przykład nie działał. Nawet na StackOverflow nie znalazłem nic do dziedziczenia edytorowego (CTRL-C/CTRL-V) 🙂
Udało się coś zrobić, więc notuję. Ku pamięci.

Na GitHub wrzuciłem gotowe, proste rozwiązanie. Tu je tylko krótko opiszę.

Będziemy potrzebowali paczki AWSSDK.SimpleNotificationService. Dodajemy więc do csproj

<PackageReference Include="AWSSDK.SimpleNotificationService" Version="3.3.0.22" />

Dla wygody skorzystamy z klasy, która trzyma dane dostępowe do naszego regionu AWS.

public class AWSCredentials
{
    public string AccessKey {get; set;}
    public string SecretKey { get; set; }
    public RegionEndpoint Region { get; set; }

    public AWSCredentials(string accessKey, string secretKey, RegionEndpoint region)
    {
        AccessKey = accessKey;
        SecretKey = secretKey;
        Region = region;
    }
}

Samo wysyłanie wiadomości to raptem dwie linie kodu. Dla czytelności opakowałem to w metodę.

public async Task SendAWSNotification(AWSCredentials credentials, string topicArn, string message)
{
    Console.WriteLine("--SENDING-MESSAGE----------------------");
    var client = new AmazonSimpleNotificationServiceClient(credentials.AccessKey, credentials.SecretKey, credentials.Region);
    Console.WriteLine("Pushing message to topic: {0}", topicArn);
    var publishResponse = await client.PublishAsync(topicArn, message);
    Console.WriteLine("Message sent with HttpStatusCode: {0}", publishResponse.HttpStatusCode);
    Console.WriteLine("---------------------------------------");
}

Jako parametr metody AmazonSimpleNotificationServiceClient.PublishAsync możemy wykorzystać także obiekt PublishRequest, który daje nam trochę większe możliwości. Możemy na przykład zmienić temat wiadomości

var publishRequest = new PublishRequest();
publishRequest.Subject = "Message subject";
publishRequest.Message = message;
publishRequest.TopicArn = topicArn;
publishResponse = await client.PublishAsync(publishRequest);

czy też wysłać ją bezpośrednio sms-em

var phonePublishRequest = new PublishRequest();
phonePublishRequest.Message = message;
phonePublishRequest.PhoneNumber = "YOUR-PHONE-NUMBER";
publishResponse = await client.PublishAsync(phonePublishRequest);

Trzeba pamiętać, że nie da się jednocześnie ustawić TopicArn i PhoneNumber.

SMS

W repozytorium na GitGub jest także przerobiona i działająca metoda pobierająca listę tematów SNS i wyświetlająca informacje o nich. Chętnych zapraszam.


AWS, CloudNative, Cookbook, DEV
AWS, Dev, serverless

Post navigation

PREVIOUS
API Gateway – Autoryzacja
NEXT
Jak za pomocą funkcji Lambda włączyć i wyłączyć serwer EC2 w AWS
Comments are closed.
Hi. My name is Przemek Malak. Thanks for visiting. I hope you found what I write about interesting.
If you'd like to chat with me, the easiest way is through LinkedIn.

Losowe wpisy

  • Ten cały Cloud Native

    6 lutego 2021
  • EventBridge i API Destinations

    14 marca 2021
  • Czyścimy Dockera

    12 sierpnia 2017
  • Domain Storytelling

    6 listopada 2022
  • Dane w plikach CSV, JSON i SQL? Tak. AWS Athena

    22 września 2017
  • Apps
  • AWS
  • CloudNative
  • Cookbook
  • Data
  • DEV
  • EN
  • GCP
  • IoT
  • Istio
  • k8s
  • Security
  • Social
  • GitHub
  • LinkedIn
© 2025   All Rights Reserved.
Ta strona korzysta z ciasteczek aby świadczyć usługi na najwyższym poziomie. Dalsze korzystanie ze strony oznacza, że zgadzasz się na ich użycie.Zgoda