Dostarczanie danych i spostrzeżeń w czasie zbliżonym do rzeczywistego umożliwia firmom szybkie reagowanie na potrzeby klientów. Dane w czasie rzeczywistym mogą pochodzić z różnych źródeł, w tym z mediów społecznościowych, urządzeń IoT, monitorowania infrastruktury, monitorowania call center i innych. Ze względu na rozległość i głębokość danych pobieranych z wielu źródeł, firmy poszukują rozwiązań chroniących prywatność swoich klientów i uniemożliwiających dostęp do danych wrażliwych z systemów końcowych. Wcześniej trzeba było polegać na mechanizmach reguł dotyczących informacji umożliwiających identyfikację osób, które mogły oznaczać fałszywe alarmy lub pominąć dane, lub trzeba było tworzyć i utrzymywać niestandardowe modele uczenia maszynowego (ML) w celu identyfikowania informacji umożliwiających identyfikację w danych przesyłanych strumieniowo. Trzeba było również wdrożyć i utrzymywać infrastrukturę niezbędną do obsługi tych silników lub modeli.
Aby usprawnić ten proces i obniżyć koszty, możesz użyć Amazon Comprehend, usługa przetwarzania języka naturalnego (NLP), która używa ML do znajdowania informacji i relacji, takich jak ludzie, miejsca, nastroje i tematy w tekście nieustrukturyzowanym. Możesz teraz korzystać z funkcji Amazon Comprehend ML do wykrywania i redagowania danych osobowych w wiadomościach e-mail klientów, zgłoszeniach pomocy technicznej, recenzjach produktów, mediach społecznościowych i nie tylko. Nie jest wymagane doświadczenie w ML. Na przykład można analizować zgłoszenia pomocy technicznej i artykuły merytoryczne, aby wykryć jednostki umożliwiające identyfikację i redagować tekst przed zindeksowaniem dokumentów. Po tym czasie dokumenty są wolne od jednostek PII, a użytkownicy mogą korzystać z danych. Redagowanie informacji umożliwiających identyfikację pomaga chronić prywatność klienta i przestrzegać lokalnych przepisów i regulacji.
W tym poście dowiesz się, jak wdrożyć Amazon Comprehend do swoich architektur strumieniowych, aby redagować jednostki PII w czasie zbliżonym do rzeczywistego Wąż strażacki Amazon Kinesis Data w AWS Lambda.
Ten post koncentruje się na redagowaniu danych z wybranych pól, które są pozyskiwane w architekturze przesyłania strumieniowego przy użyciu Kinesis Data Firehose, w której chcesz tworzyć, przechowywać i utrzymywać dodatkowe kopie pochodne danych do wykorzystania przez użytkowników końcowych lub dalsze aplikacje. Jeśli używasz Strumienie danych Amazon Kinesis lub mieć dodatkowe przypadki użycia poza redakcją PII, patrz Tłumacz, redaguj i analizuj dane strumieniowe za pomocą funkcji SQL za pomocą Amazon Kinesis Data Analytics, Amazon Translate i Amazon Comprehend, gdzie pokazujemy, jak możesz użyć Studio analizy danych Amazon Kinesis zasilany przez Apache Zeppelina i Apache Flash do interaktywnego analizowania, tłumaczenia i redagowania pól tekstowych w danych przesyłanych strumieniowo.
Omówienie rozwiązania
Poniższy rysunek przedstawia przykładową architekturę do przeprowadzania redakcji danych umożliwiających identyfikację osób przesyłanych strumieniowo w czasie rzeczywistym przy użyciu Usługa Amazon Simple Storage (Amazonka S3), Transformacja danych Kinesis Data Firehose, Amazon Comprehend, AWS Lambda. Dodatkowo używamy AWS SDK dla Pythona (Boto3) dla funkcji Lambda. Jak pokazano na diagramie, surowy zasobnik S3 zawiera niezredagowane dane, a zredagowany zasobnik S3 zawiera zredagowane dane po użyciu Amazon Comprehend DetectPiiEntities
API w ramach funkcji Lambda.
Związane koszty
Oprócz kosztów Kinesis Data Firehose, Amazon S3 i Lambda, to rozwiązanie będzie wiązało się z kosztami użytkowania z Amazon Comprehend. Kwota, którą płacisz, jest czynnikiem całkowitej liczby rekordów zawierających informacje umożliwiające identyfikację użytkownika oraz znaki przetwarzane przez funkcję Lambda. Aby uzyskać więcej informacji, zobacz Cennik Amazon Kinesis Data Firehose, Cennik Amazon Comprehend, Cennik AWS Lambda.
Jako przykład załóżmy, że masz 10,000 500 rekordów dzienników, a wartość klucza, z której chcesz zredagować informacje umożliwiające identyfikację, to 10,000 znaków. Spośród 50 XNUMX rekordów dziennika XNUMX zidentyfikowano jako zawierające informacje umożliwiające identyfikację. Szczegóły kosztów są następujące:
Zawiera koszt PII:
- Rozmiar każdej wartości klucza = 500 znaków (1 jednostka = 100 znaków)
- Liczba jednostek (100 znaków) na rekord (minimum to 3 jednostki) = 5
- Łączna liczba jednostek = 10,000 5 (rekordy) x 1 (jednostki na rekord) x 50,000 (żądania Amazon Comprehend na rekord) = XNUMX XNUMX
- Cena za jednostkę = 0.000002 USD
- Całkowity koszt identyfikacji rekordów dziennika z informacjami umożliwiającymi identyfikację użytkownika przy użyciu interfejsu API ContainsPiiEntities = 0.1 USD [50,000 0.000002 jednostek x XNUMX]
Redaguj koszt PII:
- Łączna liczba jednostek zawierających PII = 50 (rekordy) x 5 (jednostki na rekord) x 1 (żądania Amazon Comprehend na rekord) = 250
- Cena za jednostkę = 0.0001 USD
- Całkowity koszt identyfikacji lokalizacji PII za pomocą DetectPiiEntities API = [liczba jednostek] x [koszt na jednostkę] = 250 x 0.0001 USD = 0.025 USD
Całkowity koszt identyfikacji i redakcji:
- Całkowity koszt: 0.1 USD (walidacja, jeśli pole zawiera PII) + 0.025 USD (redagowanie pól, które zawierają PII) = 0.125 USD
Wdróż rozwiązanie z AWS CloudFormation
W tym poście zapewniamy Tworzenie chmury AWS redakcja danych strumieniowych szablon, który zawiera pełne szczegóły implementacji, aby umożliwić powtarzalne wdrożenia. Po wdrożeniu ten szablon tworzy dwa zasobniki S3: jeden do przechowywania nieprzetworzonych danych próbek pobranych z generatora danych Amazon Kinesis (KDG), a drugi do przechowywania zredagowanych danych. Dodatkowo tworzy strumień dostarczania Kinesis Data Firehose z DirectPUT
jako dane wejściowe i funkcję Lambda, która wywołuje Amazon Comprehend ZawieraPiiEntities i WykryjPiiEntities API do identyfikacji i redagowania danych PII. Funkcja Lambda opiera się na danych wprowadzonych przez użytkownika w zmiennych środowiskowych, aby określić, jakie wartości kluczy należy sprawdzić pod kątem PII.
Funkcja Lambda w tym rozwiązaniu ma ograniczone rozmiary ładunku do 100 KB. Jeśli podano ładunek, w którym tekst jest większy niż 100 KB, funkcja Lambda go pominie.
Aby wdrożyć rozwiązanie, wykonaj następujące czynności:
- Uruchom stos CloudFormation we wschodnich stanach USA (Płn. Wirginia)
us-east-1
: - Wprowadź nazwę stosu i pozostaw inne parametry jako domyślne
- Wybierz Przyjmuję do wiadomości, że AWS CloudFormation może tworzyć zasoby IAM z niestandardowymi nazwami.
- Dodaj Utwórz stos.
Wdrażaj zasoby ręcznie
Jeśli wolisz skompilować architekturę ręcznie zamiast używać AWS CloudFormation, wykonaj kroki opisane w tej sekcji.
Utwórz zasobniki S3
Utwórz zasobniki S3, wykonując następujące czynności:
- Na konsoli Amazon S3 wybierz Wiadra w okienku nawigacji.
- Dodaj Utwórz wiadro.
- Utwórz jeden zasobnik na surowe dane i jeden na dane zredagowane.
- Zanotuj nazwy utworzonych właśnie zasobników.
Utwórz funkcję Lambda
Aby utworzyć i wdrożyć funkcję Lambda, wykonaj następujące kroki:
- Na konsoli Lambda wybierz Utwórz funkcję.
- Dodaj Autor od zera.
- W razie zamówieenia projektu Nazwa funkcji, wchodzić
AmazonComprehendPII-Redact
. - W razie zamówieenia projektu Czas pracywybierz Python 3.9.
- W razie zamówieenia projektu Architektura, Wybierz x86_64.
- W razie zamówieenia projektu Rola wykonawcza, Wybierz Utwórz nową rolę z uprawnieniami Lambda.
- Po utworzeniu funkcji wprowadź następujący kod:
- Dodaj Rozmieścić.
- W okienku nawigacji wybierz Konfiguracja.
- Nawigować do Zmienne środowiskowe.
- Dodaj Edytuj.
- W razie zamówieenia projektu Klawisz, wchodzić
keys
. - W razie zamówieenia projektu wartość, wpisz wartości klucza, z których chcesz zredagować informacje umożliwiające identyfikację osoby, oddzielone przecinkiem i spacją. Na przykład wpisz
Tweet1
,Tweet2
jeśli korzystasz z przykładowych danych testowych podanych w następnej sekcji tego posta. - Dodaj Zapisz.
- Nawigować do Ogólna konfiguracja.
- Dodaj Edytuj.
- Zmień wartość Timeout do 1 minuty.
- Dodaj Zapisz.
- Nawigować do Uprawnienia.
- Wybierz nazwę roli pod Rola wykonania.
Zostaniesz przekierowany do AWS Zarządzanie tożsamością i dostępem (IAM) konsola. - W razie zamówieenia projektu Dodaj uprawnieniawybierz Dołącz zasady.
- Wchodzę
Comprehend
w pasku wyszukiwania i wybierz politykęComprehendFullAccess
. - Dodaj Dołącz zasady.
Utwórz strumień dostawy Firehose
Aby utworzyć strumień dostarczania Firehose, wykonaj następujące czynności:
- W konsoli Kinesis Data Firehose wybierz Utwórz strumień dostarczania.
- W razie zamówieenia projektu Źródło, Wybierz Bezpośrednie PUT.
- W razie zamówieenia projektu Cel, Wybierz Amazon S3.
- W razie zamówieenia projektu Nazwa strumienia dostawy, wchodzić
ComprehendRealTimeBlog
. - Pod Przekształć rekordy źródłowe za pomocą AWS Lambda, Wybierz Włączone.
- W razie zamówieenia projektu AWS Funkcja lambda, wprowadź ARN dla utworzonej funkcji lub przejdź do funkcji
AmazonComprehendPII-Redact
. - W razie zamówieenia projektu Rozmiar bufora, ustaw wartość na 1 MB.
- W razie zamówieenia projektu Interwał bufora, pozostaw to jako 60 sekund.
- Pod Ustawienia docelowe, wybierz zasobnik S3 utworzony dla zredagowanych danych.
- Pod Ustawienia kopii zapasowej, wybierz zasobnik S3 utworzony dla nieprzetworzonych rekordów.
- Pod pozwolenie, utwórz lub zaktualizuj rolę uprawnień albo wybierz istniejącą rolę z odpowiednimi uprawnieniami.
- Dodaj Utwórz strumień dostarczania.
Wdróż rozwiązanie przesyłania strumieniowego danych za pomocą generatora danych Kinesis
Możesz użyć generatora danych Kinesis (KDG), aby pobrać przykładowe dane do Kinesis Data Firehose i przetestować rozwiązanie. Aby uprościć ten proces, udostępniamy funkcję Lambda i szablon CloudFormation do tworzenia Amazon Cognito użytkownika i nadać odpowiednie uprawnienia do korzystania z KDG.
- Na Strona generatora danych Amazon Kinesiswybierz Utwórz użytkownika Cognito za pomocą CloudFormation.Zostajesz przekierowany do konsoli AWS CloudFormation, aby utworzyć swój stos.
- Podaj nazwę użytkownika i hasło dla użytkownika, za pomocą którego logujesz się do KDG.
- Pozostałe ustawienia pozostaw domyślne i utwórz swój stos.
- Na Wyjścia wybierz link KDG UI.
- Wpisz swoją nazwę użytkownika i hasło, aby się zalogować.
Wysyłaj rekordy testowe i weryfikuj redakcję w Amazon S3
Aby przetestować rozwiązanie, wykonaj następujące czynności:
- Zaloguj się do adresu URL KDG utworzonego w poprzednim kroku.
- Wybierz region, w którym wdrożono stos AWS CloudFormation.
- W razie zamówieenia projektu Strumień/strumień dostawy, wybierz utworzony strumień dostarczania (jeśli korzystałeś z szablonu, ma on format
accountnumber-awscomprehend-blog
). - Pozostałe ustawienia pozostaw domyślne.
- W przypadku szablonu rekordu możesz utworzyć własne testy lub użyć następującego szablonu. Jeśli do testowania używasz podanych poniżej przykładowych danych, powinieneś mieć zaktualizowane zmienne środowiskowe w
AmazonComprehendPII-Redact
Funkcja lambda doTweet1
,Tweet2
. W przypadku wdrożenia za pośrednictwem CloudFormation zaktualizuj zmienne środowiskowe doTweet1
,Tweet2
w ramach utworzonej funkcji Lambda. Przykładowe dane testowe znajdują się poniżej: - Dodaj Wyślij danei poczekaj kilka sekund, aż rekordy zostaną wysłane do Twojego strumienia.
- Po kilku sekundach zatrzymaj generator KDG i sprawdź swoje wiadra S3 pod kątem dostarczonych plików.
Oto przykład nieprzetworzonych danych w nieprzetworzonym zasobniku S3:
Oto przykład zredagowanych danych w zredagowanym zasobniku S3:
Poufne informacje zostały usunięte z redagowanych wiadomości, dając pewność, że możesz udostępnić te dane systemom końcowym.
Oczyszczanie
Po zakończeniu eksperymentowania z tym rozwiązaniem wyczyść zasoby, korzystając z konsoli AWS CloudFormation, aby usunąć wszystkie zasoby wdrożone w tym przykładzie. Jeśli wykonałeś ręczne czynności, musisz ręcznie usunąć dwa zasobniki, AmazonComprehendPII-Redact
funkcja, ComprehendRealTimeBlog
strumień, grupa dzienników dla ComprehendRealTimeBlog
strumienia i wszelkich utworzonych ról uprawnień.
Wnioski
W tym poście pokazano, jak zintegrować redakcję danych osobowych z architekturą przesyłania strumieniowego w czasie zbliżonym do rzeczywistego i skrócić czas przetwarzania danych, wykonując redakcję w locie. W tym scenariuszu udostępniasz zredagowane dane użytkownikom końcowym, a administrator usługi Data Lake zabezpiecza nieprzetworzony zasobnik do późniejszego użycia. Możesz także zbudować dodatkowe przetwarzanie za pomocą Amazon Comprehend, aby zidentyfikować ton lub nastroje, zidentyfikować jednostki w danych i sklasyfikować każdą wiadomość.
W ramach tego posta przedstawiliśmy indywidualne kroki dla każdej usługi, a także zawarliśmy szablon CloudFormation, który umożliwia udostępnienie wymaganych zasobów na Twoim koncie. Ten szablon powinien być używany wyłącznie do weryfikacji koncepcji lub scenariuszy testowania. Zapoznaj się z przewodnikami programisty dla Amazon Comprehend, Lambda, Wąż strażacki danych Kinesis dla wszelkich limitów usług.
Aby rozpocząć identyfikację i redakcję PII, zobacz Dane osobowe (PII). Dzięki przykładowej architekturze w tym poście możesz zintegrować dowolne interfejsy API Amazon Comprehend z danymi w czasie zbliżonym do rzeczywistego za pomocą transformacji danych Kinesis Data Firehose. Aby dowiedzieć się więcej o tym, co możesz zbudować z danych w czasie zbliżonym do rzeczywistego za pomocą Kinesis Data Firehose, zapoznaj się z Przewodnik dla programistów Amazon Kinesis Data Firehose. To rozwiązanie jest dostępne we wszystkich regionach AWS, w których dostępne są Amazon Comprehend i Kinesis Data Firehose.
O autorach
Joego Morottiego jest architektem rozwiązań w Amazon Web Services (AWS), pomagającym klientom korporacyjnym w Środkowym Zachodzie Stanów Zjednoczonych. Pełnił szeroki zakres ról technicznych i lubił pokazywać sztukę klienta tego, co możliwe. W wolnym czasie lubi spędzać czas z rodziną, odkrywając nowe miejsca i nadmiernie analizując wyniki swojej drużyny sportowej
Sriharsz Adari jest starszym architektem rozwiązań w Amazon Web Services (AWS), gdzie pomaga klientom pracować wstecz od wyników biznesowych do opracowywania innowacyjnych rozwiązań w AWS. Przez lata pomagał wielu klientom w transformacji platform danych w różnych branżach. Jego główne obszary specjalizacji obejmują strategię technologiczną, analizę danych i naukę o danych. W wolnym czasie lubi grać w tenisa, oglądać programy telewizyjne i grać w Tablę.