Zephyrnet Logosu

Hesaplar arası Amazon Kinesis Data Streams'den AWS Lambda işlevlerini çağırın | Amazon Web Hizmetleri

Tarih:

AWS'de çok hesaplı bir mimari, iş yüklerini izole ederek, ayrıntılı maliyet tahsisine olanak tanıyarak ve farklı ortamlar arasında iş birliğini kolaylaştırarak güvenliği, uyumluluğu ve kaynak yönetimini geliştirmek için gereklidir. Ayrıca riskleri azaltır, ölçeklenebilirliği artırır ve gelişmiş ağ yapılandırmalarına olanak tanır.

Akış mimarisinde, iş ve BT gereksinimlerinize bağlı olarak tek bir hesapta etkinlik üreticileriniz, akış depolamanız ve etkinlik tüketicileriniz olabilir veya farklı hesaplara dağılmış olabilirsiniz. Örneğin, şirketiniz tıklama akışı verilerini merkezileştirmek veya farklı hesaplardaki birden fazla farklı üreticiden gelen verileri günlüğe kaydetmek isteyebilir. Pazarlama, ürün mühendisliği veya analitikten gelen veri tüketicileri, hesaplar arasında aynı akış verilerine erişmeyi gerektirir; bu da, çok hesaplı bir akış mimarisi sunma becerisini gerektirir.

Çok hesaplı bir akış mimarisi oluşturmak için şunları kullanabilirsiniz: Amazon Kinesis Veri Akışları akış depolaması olarak ve AWS Lambda etkinlik tüketicisi olarak. Amazon Kinesis Data Streams, akış verilerinin uygun ölçekte gerçek zamanlı işlenmesini sağlar. Lambda ile entegre edildiğinde sunucusuz veri işlemeye olanak tanır ve altyapıyı yönetmeye gerek kalmadan veri akışlarını gerçek zamanlı olarak analiz etmenize ve bunlara tepki vermenize olanak tanır. Bu entegrasyon, gerçek zamanlı analiz, günlük işleme, Nesnelerin İnterneti (IoT) veri alımı ve daha fazlası dahil olmak üzere çeşitli kullanım durumlarını destekleyerek akış verilerinden zamanında öngörülere ihtiyaç duyan işletmeler için onu değerli kılar. Bu gönderide, bir hesaptaki bir akışa alınan verileri başka bir hesaptaki Lambda işleviyle nasıl işleyebileceğinizi gösteriyoruz.

Kinesis Data Streams desteğinin yakın zamanda lansmanı kaynak tabanlı politikalar Başka bir hesaptan Lambda'nın çağrılmasını sağlar. Kaynak tabanlı bir politikayla AWS hesaplarını belirtebilirsiniz, AWS Kimlik ve Erişim Yönetimi (IAM) kullanıcıları veya IAM rolleri ve erişim izni vermek istediğiniz tam Kinesis Veri Akışları eylemleri. Erişim verildikten sonra, hesabınıza ait veri akışını işlemeye başlamak için başka bir hesapta bir Lambda işlevi yapılandırabilirsiniz. Bu, maliyeti azaltır ve veri işleme hattını basitleştirir, çünkü artık her iki hesapta da Lambda işlevlerini kullanarak akış verilerini kopyalamanıza gerek kalmaz. Veri akışlarınıza veya kayıtlı tüketicilere erişimi paylaşmak, hesabınızda ek ücrete neden olmaz. Kinesis Data Streams kaynaklarının hesaplar arası kullanımı, kaynak sahiplerine faturalandırılmaya devam edecek.

Bu yazıda Kinesis Veri Akışlarını aşağıdakilerle birlikte kullanıyoruz: gelişmiş yayma Bu özellik, tüketicilere uygulamalarına göre uyarlanmış özel okuma verimi sağlıyor. Kinesis Data Streams, varsayılan olarak tüketiciler arasında parça başına 2 MB/sn'lik paylaşımlı okuma aktarım hızı sunar, ancak gelişmiş yayma özelliğiyle her tüketici, parça başına 2 MB/sn'lik özel aktarım hızının keyfini çıkarabilir. Bu esneklik, Kinesis Veri Akışlarını özel gereksinimlerinize sorunsuz bir şekilde uyarlamanıza olanak tanır; ihtiyaçlarınıza göre özel üretim için gelişmiş yayma veya paylaşılan üretim arasında seçim yapar.

Çözüme genel bakış

Çözümümüz için, veri akışından veri almak üzere Hesap 1'de Kinesis Veri Akışlarını ve Hesap 2'de tüketici olarak Lambda'yı dağıtıyoruz. Aşağıdaki şemada üst düzey mimari gösterilmektedir.

Amazon KDS-Lambda çapraz hesap çözüm mimarisi

Kurulum aşağıdaki temel unsurları gerektirir:

  • Hesap 1'de Kinesis veri akışı ve Hesap 2'de Lambda işlevi
  • Hesap 1'deki Kinesis Data Streams kaynak politikaları, hesaplar arası Lambda yürütme rolünün Kinesis veri akışında işlemler gerçekleştirmesine olanak tanır
  • Hesap 2'de bir Lambda yürütme rolü ve Hesap 1'de geliştirilmiş bir dağıtım tüketici kaynağı politikası, hesaplar arası Lambda yürütme rolünün Kinesis veri akışı üzerinde işlemler gerçekleştirmesine olanak tanır

Kurulum için üç tane kullanırsınız AWS CloudFormation temel kaynakları oluşturmak için şablonlar:

  • CloudFormation şablonu 1, Hesap 1'de aşağıdaki temel kaynakları oluşturur:
    • Kinesis veri akışı
    • Kinesis veri akışı geliştirilmiş tüketici yayma
  • CloudFormation şablonu 2, Hesap 2'de aşağıdaki temel kaynakları oluşturur:
    • Tüketici Lambda işlevi
    • Tüketici Lambda işlevi yürütme rolü
  • CloudFormation şablonu 3, Hesap 2'de aşağıdaki kaynağı oluşturur:
    • Tüketici Lambda işlevi olay kaynağı eşlemesi

Çözüm, tek Bölge dağıtımını destekler ve CloudFormation şablonlarının aynı Bölgede farklı AWS hesaplarına dağıtılması gerekir. Bu çözümde, birden fazla tüketicide büyük verim gerektiren mimarilerin dağıtımı için en iyi uygulama olan Kinesis Data Streams geliştirilmiş yayılımını kullanıyoruz. Bu çözümü dağıtmak için aşağıdaki bölümlerdeki adımları tamamlayın.

Önkoşullar

Çözüm mimarisinde bahsedilen hizmetleri oluşturmak amacıyla CloudFormation şablonunu çalıştırmak için iki AWS hesabınızın ve gerekli izinlerinizin olması gerekir. Ayrıca ihtiyacınız var AWS Komut Satırı Arayüzü (AWS CLI) yüklü, sürüm 2.15 ve üzeri.

CloudFormation şablonunu başlatın 1

İlk CloudFormation şablonunu başlatmak için aşağıdaki adımları tamamlayın:

  1. Adresinde oturum açın AWS Yönetim Konsolu Hesap 1 olarak ve uygun AWS Bölgesini seçin.
  2. İndirme ve başlatma CloudFormation şablonu 1 Kinesis veri akışınızı dağıtmak istediğiniz yer.
  3. İçin LambdaTüketiciHesabıKimliği, Lambda tüketici hesabı kimliğinizi girin ve gönder'i tıklayın. CloudFormation şablon dağıtımının tamamlanması birkaç dakika sürecektir.
  4. Yığın tamamlandığında AWS CloudFormation konsolunda yığına gidin Çıkışlar sekmesine tıklayın ve aşağıdaki parametrelerin değerlerini kopyalayın:
    • KinesisStreamArn
    • KinesisStreamEFOConsumerArn
    • KMSKeyArn

Daha sonraki adımlarda bu değerlere ihtiyacınız olacak.

CloudFormation şablonunu başlatın 2

İkinci CloudFormation şablonunu başlatmak için aşağıdaki adımları tamamlayın:

  1. Konsolda Hesap 2 olarak oturum açın ve uygun Bölgeyi seçin.
  2. İndirme ve başlatma CloudFormation şablonu 2 Lambda tüketicisini nerede ağırlamak istiyorsunuz?
  3. Önceki adımdan alınan aşağıdaki giriş parametrelerini sağlayın:
    • KinesisStreamArn
    • KinesisStreamEFOConsumerArn
    • KMSKeyArn

CloudFormation şablonu aşağıdaki temel kaynakları oluşturur:

  • Lambda tüketicisi
  • Lambda yürütme rolü

Lambda işlevinin yürütme rolü, işleve AWS hizmetlerine ve kaynaklarına erişim izni veren bir IAM rolüdür. Burada gerekli Kinesis Veri Akışlarına ve Lambda çağırma izinlerine sahip bir Lambda yürütme rolü oluşturursunuz.

CloudFormation şablon dağıtımının tamamlanması birkaç dakika sürecektir.

  1. Yığın tamamlandığında AWS CloudFormation konsolunda yığına gidin Çıkışlar sekmesine tıklayın ve aşağıdaki parametrelerin değerlerini kopyalayın:
    • KinesisStreamCreateResourcePolicyCommand
    • KinesisStreamEFOConsumerCreateResourcePolicyCommand
  2. Hesap 1'de aşağıdaki AWS CLI komutlarını kullanarak çalıştırın: AWS BulutKabuğu. AWS CLI'nin en son sürümüne sahip olacağı ve her türlü arızayı önleyeceği için CloudShell'i kullanmanızı öneririz.
    • KinesisStreamCreateResourcePolicyCommand – Bu, Kinesis Veri Akışı için Hesap 1'de kaynak politikasını oluşturur. Örnek bir kaynak politikası aşağıdadır:
      {
      "Version": "2012-10-17",
      "Statement": [
      {
      "Sid": "StreamEFOReadStatementID",
      "Effect": "Allow",
      "Principal": {
      "AWS": [
      "arn:aws:iam::<AWS Lambda - Consumer account id>:role/kds-cross-account-stream-consumer-lambda-execution-role"
      ]
      },
      "Action": [
      "kinesis:DescribeStreamSummary",
      "kinesis:ListShards",
      "kinesis:DescribeStream",
      "kinesis:GetRecords",
      "kinesis:GetShardIterator"
      ],
      "Resource": "arn:aws:kinesis:<region id>:<Account 1 - Amazon KDS account id>:stream/kds-cross-account-stream"
      }
      ]
      }

    • KinesisStreamEFOCumerCreateResourcePolicyCommand – Bu, Hesap 1'deki Kinesis veri akışı için gelişmiş yayma tüketicisine yönelik kaynak politikasını oluşturur. Aşağıda örnek bir kaynak politikası yer almaktadır:
      {
      "Version": "2012-10-17",
      "Statement": [
      {
      "Sid": "ConsumerEFOReadStatementID",
      "Effect": "Allow",
      "Principal": {
      "AWS": [
      " arn:aws:iam::<AWS Lambda - Consumer account id>:role/kds-cross-account-stream-consumer-lambda-execution-role"
      ]
      },
      "Action": [
      "kinesis:DescribeStreamConsumer",
      "kinesis:SubscribeToShard"
      ],
      "Resource": "arn:aws:kinesis:<region id>:<Account 1 - Amazon KDS account id>:stream/kds-cross-account-stream/consumer/kds-cross-account-stream-efo-consumer:1706616477"
      }
      ]
      }

Bu politikaya ayrıca Kinesis Veri Akışları konsolundan da erişebilirsiniz. Gelişmiş yayma, tüketici adı, ve Tüketici paylaşımı kaynak tabanlı politika.

CloudFormation şablonunu başlatın 3

Artık Kinesis veri akışı ve gelişmiş yayma tüketicisi için Hesap 1'de kaynak politikaları oluşturduğunuza göre, Hesap 2'deki tüketici Lambda işlevi için Lambda olay kaynağı eşlemesi oluşturabilirsiniz. Aşağıdaki adımları tamamlayın:

  1. Konsolda Hesap 2 olarak oturum açın ve uygun Bölgeyi seçin.
  2. İndirme ve başlatma CloudFormation şablonu 3 CloudFormation şablonunu kullanarak oluşturduğunuz yığını güncellemek için 2.

CloudFormation şablonu Lambda olay kaynağı eşlemesini oluşturur.

Çözümü doğrula

Bu noktada dağıtım tamamlanmıştır. Mesajları tüketmek için bir Kinesis veri akışı mevcuttur ve bir Lambda işlevi bu mesajları hedef hesapta alır. Hesap 1'deki veri akışına örnek mesajlar göndermek için CloudShell'i kullanarak aşağıdaki AWS CLI komutunu çalıştırın:

aws kinesis put-record --stream-name kds-cross-account-stream --data sampledatarecord --partition-key samplepartitionkey3 --region <region id>

Hesap 2'deki Lambda işlevi mesajları alabiliyor ve siz de bunu kullanarak doğrulayabilmelisiniz. Amazon Bulut İzleme günlükleri:

  1. CloudWatch konsolunda seçin Günlük grupları Gezinti bölmesinde.
  2. Günlük grubunu bulun /aws/lambda/kds-cross-account-stream-efo-consumer.
  3. Klinik Günlük grubunu ara İlgili günlük mesajlarını görüntülemek için. Aşağıda örnek bir mesaj yer almaktadır:
    "Records": [
    {
    "kinesis": {
    "kinesisSchemaVersion": "1.0",
    "partitionKey": "samplepartitionkey3",
    "sequenceNumber": "49648798411111169765201534322676841348246990356337393698",
    "data": "sampledatarecord",
    "approximateArrivalTimestamp": 1706623274.658
    },

Temizlemek

Herhangi bir ek maliyetten kaçınmak için bu gönderinin bir parçası olarak oluşturduğunuz tüm kaynakları temizlemek her zaman iyi bir uygulamadır.

Kaynaklarınızı temizlemek için Hesap 1 ve 2'den ilgili CloudFormation yığınlarını silin ve yapımcının olayları Kinesis veri akışına iletmesini durdurun. Bu, gereksiz yere ücretlendirilmemenizi sağlar.

Özet

Bu gönderide, AWS kaynak tabanlı politikalar kullanarak hesaplar arası Lambda entegrasyonunun Kinesis Veri Akışları ile nasıl yapılandırılacağını gösterdik. Bu, bir AWS hesabındaki bir akışa alınan verilerin, başka bir hesapta bulunan bir Lambda işlevi aracılığıyla işlenmesine olanak tanır. Merkezi hesaplarında Kinesis veri akışı kullanan ve buradan veri okuyan birden fazla tüketiciye sahip olan müşterileri desteklemek için Kinesis Veri Akışlarının gelişmiş yayma özelliğini kullandık.

Başlamak için Kinesis Veri Akışları konsolunu açın veya yeni API'yi kullanın PutResourcePolicy veri akışınıza veya tüketicinize bir kaynak politikası eklemek için.


yazarlar hakkında

Pratik Patel Kıdemli Teknik Hesap Yöneticisi ve akış analitiği uzmanıdır. AWS müşterileriyle birlikte çalışır ve en iyi uygulamaları kullanarak çözümlerin planlanması ve oluşturulmasına yardımcı olmak ve müşterilerin AWS ortamlarını proaktif olarak operasyonel olarak sağlıklı tutmak için sürekli destek ve teknik rehberlik sağlar.

Aşk Birleşik Krallık'ta Amazon AWS'de Kıdemli Çözüm Mimarıdır. Enerji, kamu hizmetleri, üretim ve otomotiv müşterileri genelinde stratejik uygulamalar üzerinde çalışıyor ve optimum iş sonuçlarına ulaşmak için AWS Streaming ve gelişmiş veri analizi çözümlerini kullanma konusunda uzmanlaşıyor.

spot_img

En Son İstihbarat

spot_img