Amazon Comprehend ve Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence'ı kullanarak akış verilerinden hassas verileri neredeyse gerçek zamanlı olarak çıkarın. Dikey Arama. Ai.

Amazon Comprehend ve Amazon Kinesis Data Firehose kullanarak akış verilerinden hassas verileri neredeyse gerçek zamanlı olarak çıkarın

Gerçek zamanlıya yakın veri ve içgörü teslimi, işletmelerin müşterilerinin ihtiyaçlarına hızla yanıt vermesini sağlar. Gerçek zamanlı veriler, sosyal medya, IoT cihazları, altyapı izleme, çağrı merkezi izleme ve daha fazlası dahil olmak üzere çeşitli kaynaklardan gelebilir. Birden fazla kaynaktan alınan verilerin genişliği ve derinliği nedeniyle işletmeler, müşterilerinin gizliliğini korumak ve hassas verilere uç sistemlerden erişilmesini engellemek için çözümler arar. Daha önce, yanlış pozitifleri işaretleyebilecek veya verileri kaçırabilecek kişisel olarak tanımlanabilir bilgi (PII) kural motorlarına güvenmeniz veya akış verilerinizde PII'yi tanımlamak için özel makine öğrenimi (ML) modelleri oluşturmanız ve sürdürmeniz gerekiyordu. Ayrıca bu motorları veya modelleri desteklemek için gerekli altyapıyı uygulamanız ve sürdürmeniz gerekiyordu.

Bu süreci kolaylaştırmaya ve maliyetleri düşürmeye yardımcı olmak için şunları kullanabilirsiniz: Amazon Kavramak, yapılandırılmamış metindeki insanlar, yerler, duygular ve konular gibi içgörüleri ve ilişkileri bulmak için makine öğrenimini kullanan bir doğal dil işleme (NLP) hizmetidir. Artık müşteri e-postalarında, destek biletlerinde, ürün incelemelerinde, sosyal medyada ve daha fazlasında PII'yi algılamak ve düzeltmek için Amazon Comprehend ML özelliklerini kullanabilirsiniz. Makine öğrenimi deneyimi gerekmez. Örneğin, PII varlıklarını algılamak ve belgeleri dizine eklemeden önce metni yeniden düzenlemek için destek biletlerini ve bilgi makalelerini analiz edebilirsiniz. Bundan sonra, belgelerde PII varlıkları bulunmaz ve kullanıcılar verileri tüketebilir. PII varlıklarını yeniden düzenlemek, müşterinizin gizliliğini korumanıza ve yerel yasalara ve düzenlemelere uymanıza yardımcı olur.

Bu gönderide, PII varlıklarını gerçek zamanlı olarak yeniden düzenlemek için Amazon Comprehend'i akış mimarilerinize nasıl uygulayacağınızı öğreneceksiniz. Amazon Kinesis Veri İtfaiyesi ile AWS Lambda.

Bu gönderi, son kullanıcılar veya aşağı akış uygulamaları tarafından tüketilmek üzere verilerin ek türev kopyalarını oluşturmak, depolamak ve sürdürmek istediğiniz Kinesis Data Firehose kullanılarak bir akış mimarisine alınan seçili alanlardan verileri çıkarmaya odaklanmıştır. kullanıyorsanız Amazon Kinesis Veri Akışları veya PII redaksiyonu dışında ek kullanım durumları varsa, bkz. Amazon Kinesis Data Analytics, Amazon Translate ve Amazon Comprehend ile SQL işlevlerini kullanarak akış verilerini çevirin, düzeltin ve analiz edin, nasıl kullanabileceğinizi gösterdiğimiz yer Amazon Kinesis Veri Analitiği Stüdyosu tarafından desteklenmektedir Apaçi Zeplin ve Apache Flink'i Akış verilerindeki metin alanlarını etkileşimli olarak analiz etmek, çevirmek ve yeniden düzenlemek için.

Çözüme genel bakış

Aşağıdaki şekil, aşağıdakileri kullanarak gerçek zamanlı olarak akış verilerinin PII redaksiyonunu gerçekleştirmek için örnek bir mimariyi göstermektedir: Amazon Basit Depolama Hizmeti (Amazon S3), Kinesis Data Firehose veri dönüşümü, Amazon Kavramak, ve AWS Lambda. Ek olarak, kullandığımız Python için AWS SDK (Boto3) Lambda işlevleri için. Şemada gösterildiği gibi, S3 ham paketi, redaksiyona tabi tutulmamış veriler içerir ve S3 redaksiyona tabi tutulmuş paket, Amazon Comprehend kullanıldıktan sonra redaksiyona tabi tutulmuş verileri içerir. DetectPiiEntities Bir Lambda işlevi içindeki API.

İlgili maliyetler

Bu çözüm, Kinesis Data Firehose, Amazon S3 ve Lambda maliyetlerine ek olarak Amazon Comprehend'in kullanım maliyetlerini de beraberinde getirecektir. Ödediğiniz tutar, PII'yi ve Lambda işlevi tarafından işlenen karakterleri içeren toplam kayıt sayısının bir faktörüdür. Daha fazla bilgi için bkz. Amazon Kinesis Data Firehose fiyatlandırması, Amazon Anlayış Fiyatlandırması, ve AWS Lambda Fiyatlandırması.

Örnek olarak, 10,000 günlük kaydınız olduğunu ve PII'yi çıkarmak istediğiniz anahtar değerin 500 karakter olduğunu varsayalım. 10,000 günlük kaydından 50'sinin PII içerdiği belirlenir. Maliyet detayları aşağıdaki gibidir:

PII Maliyetini İçerir:

  • Her bir anahtar değerinin boyutu = 500 karakter (1 birim = 100 karakter)
  • Kayıt başına birim sayısı (100 karakter) (en az 3 birimdir) = 5
  • Toplam birim = 10,000 (kayıt) x 5 (kayıt başına birim) x 1 (kayıt başına Amazon Anlama isteği) = 50,000
  • Birim başına fiyat = 0.000002 $
    • ContainerPiiEntities API'sini kullanarak PII ile günlük kayıtlarını tanımlamanın toplam maliyeti = 0.1 ABD doları [50,000 birim x 0.000002 ABD doları] 

PII Maliyetini Düzeltin:

  • PII içeren toplam birim = 50 (kayıt) x 5 (kayıt başına birim) x 1 (kayıt başına Amazon Anlama isteği) = 250
  • Birim başına fiyat = 0.0001 $
    • DetectPiiEntities API'sini kullanarak PII konumunu belirlemenin toplam maliyeti = [birim sayısı] x [birim başına maliyet] = 250 x 0.0001 ABD doları = 0.025 ABD doları

Tanımlama ve redaksiyon için Toplam Maliyet:

  • Toplam maliyet: 0.1 ABD doları (alan PII içeriyorsa doğrulama) + 0.025 ABD doları (PII içeren alanları yeniden düzenleyin) = 0.125 ABD doları

Çözümü AWS CloudFormation ile dağıtın

Bu gönderi için bir AWS CloudFormation akış veri redaksiyonu şablon, tekrarlanabilir dağıtımları etkinleştirmek için uygulamanın tüm ayrıntılarını sağlar. Dağıtımın ardından bu şablon iki S3 klasörü oluşturur: biri Amazon Kinesis Data Generator'dan (KDG) alınan ham örnek verileri depolamak için, diğeri ise düzeltilen verileri depolamak için. Ek olarak, Kinesis Data Firehose dağıtım akışı oluşturur. DirectPUT girdi olarak ve Amazon Anlayışını çağıran bir Lambda işlevi İçerirPiiVarlıklar ve DetectPiiEntities PII verilerini tanımlamak ve çıkarmak için API. Lambda işlevi, PII için hangi anahtar değerlerin incelenmesi gerektiğini belirlemek için ortam değişkenlerindeki kullanıcı girdisine dayanır.

Bu çözümdeki Lambda işlevi, 100 KB ile sınırlı yük boyutlarına sahiptir. Metnin 100 KB'den büyük olduğu bir yük sağlanırsa, Lambda işlevi bunu atlayacaktır.

Çözümü dağıtmak için aşağıdaki adımları tamamlayın:

  1. CloudFormation yığınını ABD Doğu'da (K. Virginia) başlatın us-east-1:
    Amazon Comprehend ve Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence'ı kullanarak akış verilerinden hassas verileri neredeyse gerçek zamanlı olarak çıkarın. Dikey Arama. Ai.
  2. Bir yığın adı girin ve diğer parametreleri varsayılan değerlerinde bırakın
  3. seç AWS CloudFormation'ın özel adlarla IAM kaynakları oluşturabileceğini kabul ediyorum.
  4. Klinik Yığın oluştur.

Kaynakları manuel olarak dağıtın

AWS CloudFormation kullanmak yerine mimariyi manuel olarak oluşturmayı tercih ediyorsanız bu bölümdeki adımları tamamlayın.

S3 paketlerini oluşturun

Aşağıdaki adımlarla S3 paketlerinizi oluşturun:

  1. Amazon S3 konsolunda şunu seçin: Kepçeler Gezinti bölmesinde.
  2. Klinik Grup oluştur.
  3. Ham verileriniz için bir paket ve düzeltilmiş verileriniz için bir paket oluşturun.
  4. Az önce oluşturduğunuz kovaların adlarını not edin.

Lambda işlevini oluşturun

Lambda işlevini oluşturmak ve dağıtmak için aşağıdaki adımları tamamlayın:

  1. Lambda konsolunda şunu seçin: İşlev oluştur.
  2. Klinik Sıfırdan yazar.
  3. İçin Fonksiyon adı, girmek AmazonComprehendPII-Redact.
  4. İçin Süre, seçmek Python 3.9.
  5. İçin mimariseçin x86_64.
  6. İçin Yürütme rolüseçin Lambda izinleriyle yeni bir rol oluşturun.
  7. Fonksiyonu oluşturduktan sonra aşağıdaki kodu girin:
    import json
    import boto3
    import os
    import base64
    import sys
    
    def lambda_handler(event, context):
        
        output = []
        
        for record in event['records']:
            
            # Gathers keys from enviroment variables and makes a list of desired keys to check for PII
            rawkeys = os.environ['keys']
            splitkeys = rawkeys.split(", ")
            print(splitkeys)
            #decode base64
            #Kinesis data is base64 encoded so decode here
            payloadraw=base64.b64decode(record["data"]).decode('utf-8')
            #Loads decoded payload into json
            payloadjsonraw = json.loads(payloadraw)
            
            # Creates Comprehend client
            comprehend_client = boto3.client('comprehend')
            
            
            # This codes handles the logic to check for keys, identify if PII exists, and redact PII if available. 
            for i in payloadjsonraw:
                # checks if the key found in the message matches a redact
                if i in splitkeys:
                    print("Redact key found, checking for PII")
                    payload = str(payloadjsonraw[i])
                    # check if payload size is less than 100KB
                    if sys.getsizeof(payload) < 99999:
                        print('Size is less than 100KB checking if value contains PII')
                        # Runs Comprehend ContainsPiiEntities API call to see if key value contains PII
                        pii_identified = comprehend_client.contains_pii_entities(Text=payload, LanguageCode='en')
                        
                        # If PII is not found, skip over key
                        if (pii_identified['Labels']) == []:
                            print('No PII found')
                        else:
                        # if PII is found, run through redaction logic
                            print('PII found redacting')
                            # Runs Comprehend DetectPiiEntities call to find exact location of PII
                            response = comprehend_client.detect_pii_entities(Text=payload, LanguageCode='en')
                            entities = response['Entities']
                            # creates redacted_payload which will be redacted
                            redacted_payload = payload
                            # runs through a loop that gathers necessary values from Comprehend API response and redacts values
                            for entity in entities:
                                char_offset_begin = entity['BeginOffset']
                                char_offset_end = entity['EndOffset']
                                redacted_payload = redacted_payload[:char_offset_begin] + '*'*(char_offset_end-char_offset_begin) + redacted_payload[char_offset_end:]
                            # replaces original value with redacted value
                            payloadjsonraw[i] = redacted_payload
                            print(str(payloadjsonraw[i]))
                    else:
                        print ('Size is more than 100KB, skipping inspection')
                else:
                    print("Key value not found in redaction list")
            
            redacteddata = json.dumps(payloadjsonraw)
            
            # adds inspected record to record
            output_record = {
                'recordId': record['recordId'],
                'result': 'Ok',
                'data' : base64.b64encode(redacteddata.encode('utf-8'))
            }
            output.append(output_record)
            print(output_record)
            
        print('Successfully processed {} records.'.format(len(event['records'])))
        
        return {'records': output}

  8. Klinik Sürüş.
  9. Gezinti bölmesinde şunu seçin: Yapılandırma.
  10. Şu yöne rotayı ayarla Ortam Değişkenleri.
  11. Klinik Düzenle.
  12. İçin anahtar, girmek keys.
  13. İçin Özellik, virgül ve boşlukla ayırarak, PII'yi çıkarmak istediğiniz anahtar değerleri girin. Örneğin, girin Tweet1, Tweet2 Bu gönderinin sonraki bölümünde sağlanan örnek test verilerini kullanıyorsanız.
  14. Klinik İndirim.
  15. Şu yöne rotayı ayarla Genel yapılandırma.
  16. Klinik Düzenle.
  17. Değerini değiştirmek Zaman Aşımı 1 dakikaya kadar.
  18. Klinik İndirim.
  19. Şu yöne rotayı ayarla İzinler.
  20. Altındaki rol adını seçin Yürütme Rolü.
    Yönlendirilirsiniz AWS Kimlik ve Erişim Yönetimi (IAM) konsolu.
  21. İçin İzin ekle, seçmek Politikaları ekleyin.
  22. Keşfet Comprehend arama çubuğuna girin ve politikayı seçin ComprehendFullAccess.
  23. Klinik Politikaları ekleyin.

Firehose teslimat akışını oluşturun

Firehose teslimat akışınızı oluşturmak için aşağıdaki adımları tamamlayın:

  1. Kinesis Data Firehose konsolunda, Teslimat akışı oluştur.
  2. İçin Kaynakseçin Doğrudan PUT.
  3. İçin Varış yeriseçin Amazon S3.
  4. İçin Teslimat akışı adı, girmek ComprehendRealTimeBlog.
  5. Altında AWS Lambda ile kaynak kayıtlarını dönüştürünseçin Etkin.
  6. İçin AWS Lambda işlevi, oluşturduğunuz işlev için ARN'yi girin veya işleve göz atın AmazonComprehendPII-Redact.
  7. İçin Arabellek Boyutu, değeri 1 MB olarak ayarlayın.
  8. İçin Tampon Aralığı, 60 saniye olarak bırakın.
  9. Altında Hedef Ayarları, düzeltilen veriler için oluşturduğunuz S3 paketini seçin.
  10. Altında Yedekleme ayarları, ham kayıtlar için oluşturduğunuz S3 paketini seçin.
  11. Altında Izin, bir IAM rolü oluşturun veya güncelleyin ya da uygun izinlere sahip mevcut bir rolü seçin.
  12. Klinik Teslimat akışı oluştur.

Kinesis Data Generator ile veri akışı çözümünü devreye alın

Örnek verileri Kinesis Data Firehose'a almak ve çözümü test etmek için Kinesis Data Generator'ı (KDG) kullanabilirsiniz. Bu süreci basitleştirmek için bir Lambda işlevi ve bir Amazon Cognito'su kullanıcı ve KDG'yi kullanmak için uygun izinleri atayın.

  1. Üzerinde Amazon Kinesis Veri Oluşturucu sayfası, seçmek CloudFormation ile bir Cognito Kullanıcısı Oluşturun.Yığınınızı oluşturmak için AWS CloudFormation konsoluna yönlendirilirsiniz.
  2. KDG'ye giriş yaptığınız kullanıcı için bir kullanıcı adı ve şifre sağlayın.
  3. Diğer ayarları varsayılanlarında bırakın ve yığınınızı oluşturun.
  4. Üzerinde Çıkışlar sekmesinde, KDG UI bağlantısını seçin.
  5. Giriş yapmak için kullanıcı adınızı ve şifrenizi girin.

Amazon S3'te test kayıtları gönderin ve redaksiyonu doğrulayın

Çözümü test etmek için aşağıdaki adımları tamamlayın:

  1. Önceki adımda oluşturduğunuz KDG URL'sine giriş yapın.
  2. AWS CloudFormation yığınının dağıtıldığı Bölgeyi seçin.
  3. İçin Akış/yayın akışı, oluşturduğunuz teslimat akışını seçin (şablonu kullandıysanız, accountnumber-awscomprehend-blog).
  4. Diğer ayarları varsayılanlarında bırakın.
  5. Kayıt şablonu için kendi testlerinizi oluşturabilir veya aşağıdaki şablonu kullanabilirsiniz. Test için aşağıda sağlanan örnek verileri kullanıyorsanız, AmazonComprehendPII-Redact Lambda işlevi Tweet1, Tweet2. CloudFormation aracılığıyla dağıtıldıysa, ortam değişkenlerini şu şekilde güncelleyin: Tweet1, Tweet2 oluşturulan Lambda işlevi içinde. Örnek test verileri aşağıdadır:
    {"User":"12345", "Tweet1":" Good morning, everybody. My name is Van Bokhorst Serdar, and today I feel like sharing a whole lot of personal information with you. Let's start with my Email address SerdarvanBokhorst@dayrep.com. My address is 2657 Koontz Lane, Los Angeles, CA. My phone number is 818-828-6231.", "Tweet2": "My Social security number is 548-95-6370. My Bank account number is 940517528812 and routing number 195991012. My credit card number is 5534816011668430, Expiration Date 6/1/2022, my C V V code is 121, and my pin 123456. Well, I think that's it. You know a whole lot about me. And I hope that Amazon comprehend is doing a good job at identifying PII entities so you can redact my personal information away from this streaming record. Let's check"}

  6. Klinik Veri Gönderve kayıtların akışınıza gönderilmesi için birkaç saniye bekleyin.
  7. Birkaç saniye sonra KDG oluşturucuyu durdurun ve teslim edilen dosyalar için S3 klasörlerinizi kontrol edin.

Aşağıda, ham S3 klasöründeki ham verilere bir örnek verilmiştir:

{"User":"12345", "Tweet1":" Good morning, everybody. My name is Van Bokhorst Serdar, and today I feel like sharing a whole lot of personal information with you. Let's start with my Email address SerdarvanBokhorst@dayrep.com. My address is 2657 Koontz Lane, Los Angeles, CA. My phone number is 818-828-6231.", "Tweet2": "My Social security number is 548-95-6370. My Bank account number is 940517528812 and routing number 195991012. My credit card number is 5534816011668430, Expiration Date 6/1/2022, my C V V code is 121, and my pin 123456. Well, I think that's it. You know a whole lot about me. And I hope that Amazon comprehend is doing a good job at identifying PII entities so you can redact my personal information away from this streaming record. Let's check"}

Aşağıda, düzeltilmiş S3 klasöründeki düzeltilmiş verilere bir örnek verilmiştir:

{"User":"12345", "Tweet1":"Good morning, everybody. My name is *******************, and today I feel like sharing a whole lot of personal information with you. Let's start with my Email address ****************************. My address is ********************************** My phone number is ************.", "Tweet"2: "My Social security number is ***********. My Bank account number is ************ and routing number *********. My credit card number is ****************, Expiration Date ********, my C V V code is ***, and my pin ******. Well, I think that's it. You know a whole lot about me. And I hope that Amazon comprehend is doing a good job at identifying PII entities so you can redact my personal information away from this streaming record. Let's check"}

Hassas bilgiler, düzeltilmiş mesajlardan kaldırılarak, bu verileri uç sistemlerle paylaşabileceğinize dair güven sağlanmıştır.

Temizlemek

Bu çözümü denemeyi bitirdiğinizde, bu örnekte dağıtılan tüm kaynakları silmek için AWS CloudFormation konsolunu kullanarak kaynaklarınızı temizleyin. Manuel adımları izlediyseniz, iki kovayı manuel olarak silmeniz gerekecektir. AmazonComprehendPII-Redact işlev, ComprehendRealTimeBlog akış, günlük grubu ComprehendRealTimeBlog akış ve oluşturulan tüm IAM rolleri.

Sonuç

Bu gönderi, PII redaksiyonunu neredeyse gerçek zamanlı akış mimarinize nasıl entegre edeceğinizi ve uçuşta redaksiyon gerçekleştirerek veri işleme süresini nasıl azaltacağınızı gösterdi. Bu senaryoda, düzeltilen verileri son kullanıcılarınıza sağlarsınız ve bir data lake yöneticisi ham paketi daha sonra kullanmak üzere korur. Ton veya duyarlılığı belirlemek, verilerdeki varlıkları belirlemek ve her mesajı sınıflandırmak için Amazon Comprehend ile ek işlemler de oluşturabilirsiniz.

Bu gönderinin bir parçası olarak her hizmet için ayrı adımlar sağladık ve ayrıca hesabınızda gerekli kaynakları sağlamanıza olanak tanıyan bir CloudFormation şablonu ekledik. Bu şablon, yalnızca kavram kanıtı veya test senaryoları için kullanılmalıdır. için geliştirici kılavuzlarına bakın. Amazon Kavramak, Lambda, ve Kinesis Veri Yangın Hortumu Herhangi bir hizmet limiti için.

PII tanımlama ve redaksiyona başlamak için bkz. Kişisel olarak tanımlanabilir bilgiler (PII). Bu gönderideki örnek mimariyle, Kinesis Data Firehose veri dönüşümünü kullanarak Amazon Comprehend API'lerinden herhangi birini neredeyse gerçek zamanlı verilerle entegre edebilirsiniz. Kinesis Data Firehose ile gerçek zamanlıya yakın verilerinizle neler oluşturabileceğiniz hakkında daha fazla bilgi için bkz. Amazon Kinesis Data Firehose Geliştirici Kılavuzu. Bu çözüm, Amazon Comprehend ve Kinesis Data Firehose'un mevcut olduğu tüm AWS Bölgelerinde mevcuttur.


yazarlar hakkında

Amazon Comprehend ve Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence'ı kullanarak akış verilerinden hassas verileri neredeyse gerçek zamanlı olarak çıkarın. Dikey Arama. Ai. Joe Morotti Amazon Web Services'de (AWS) bir Çözüm Mimarıdır ve Ortabatı ABD'deki Kurumsal müşterilere yardımcı olur. Çok çeşitli teknik roller üstlendi ve müşterinin sanatını mümkün kılmaktan keyif aldı. Boş zamanlarında ailesiyle kaliteli zaman geçirmekten ve yeni yerler keşfetmekten ve spor takımının performansını gözden geçirmekten hoşlanıyor.

Amazon Comprehend ve Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence'ı kullanarak akış verilerinden hassas verileri neredeyse gerçek zamanlı olarak çıkarın. Dikey Arama. Ai.Sriharsh Adari Amazon Web Services'de (AWS) Kıdemli Çözüm Mimarıdır ve müşterilerin AWS'de yenilikçi çözümler geliştirmek için iş sonuçlarından geriye doğru çalışmasına yardımcı olur. Yıllar boyunca, endüstri sektörlerinde veri platformu dönüşümlerinde birden fazla müşteriye yardımcı oldu. Temel uzmanlık alanları arasında Teknoloji Stratejisi, Veri Analitiği ve Veri Bilimi bulunmaktadır. Boş zamanlarında Tenis oynamayı, TV şovlarını izlemeyi ve Tabla oynamayı seviyor.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi