DynamoDB voogesitus Lambdaga

Dynamodb Voogesitus Lambdaga



DynamoDB Streams on Amazon DynamoDB funktsioon, mis võimaldab teil saada reaalajas DynamoDB tabelites tehtud muudatuste või andmemuudatuste voogu. Selle funktsiooni abil saate luua rakendusi, mis reageerivad DynamoDB tabelite andmemuudatustele, nagu vahemälu värskendamine ja teatiste saatmine.

Loomulikult saate kasutada ka DynamoDB Streams allavoolu protsesside ja AWS Lambda funktsioonide käivitamiseks. Lambda on definitsiooni järgi serverita arvutusteenus, mis käivitab teie koodi vastuseks sündmustele ja haldab automaatselt teie eest arvutusressursse.

Vookirjete töötlemiseks ja asjakohaste toimingute tegemiseks saate kasutada Lambdat koodi kirjutamiseks Node.js-s, Pythonis, Javas või C#-s. DynamoDB Streamsi Lambdaga integreerimise peamine eelis seisneb selles, et Lambda võimaldab teil käivitada toetatud teenuseid või rakenduskoode ilma, et oleks vaja administreerida.







Kuidas kasutada AWS DynamoDB vooge koos Lambdaga

Kuigi on võimalik luua Lambda funktsioon, mis tarbib DynamoDB Streami sündmusi ja juhtumeid, võib protsess olla üsna töökas, eriti teie esimesel katsel. Järgmised sammud aitavad:



1. samm: veenduge, et teie süsteem vastab eeltingimustele

See protseduur on edukas ainult siis, kui tunnete põhilisi Lambda toiminguid ja protsesse. Seega peaks see olema teie esimene, et tagada, et teie arusaam lambdast on keskmisest kõrgem.



Teine eeltingimus, mida tasub kaaluda, on oma süsteemi AWS-i versiooni kinnitamine. Võite kasutada järgmist käsku:





aws – versioon

Antud käsu tulemus peaks välja nägema järgmine:

aws-cli/ 2 .x.x Python/ 3 .x.x Linux/ 4 .x.x-xxx-std botocore/ 2 .x.x

Antud näidisvastus sisaldab AWS CLI installitud versiooni ( aws-cli/2.x.x ), Pythoni versioon ( Python/3.x.x ) ja operatsioonisüsteem ( Linux/4.x.x-xxx-std ). Vastuse viimane osa määratleb Botocore'i teegi versiooni, millel teie AWS-i CLI töötab ( botocore/2.x.x ).



Seetõttu saate millegi sellisega:

2. samm: looge täitmisroll

Järgmine samm on AWS-i CLI-s täitmisrolli loomine. Täitmisroll on AWS-i identiteedi- ja juurdepääsuhalduse (IAM) roll, mille võtab AWS-teenus teie nimel ülesannete täitmiseks. See annab teile juurdepääsu AWS-i ressurssidele, mida vajate.

Saate luua rolli, kasutades järgmist käsku:

aws iam loomise roll \

--rolli nimi LambdaDynamoDBExecutionRole \

--assume-role-policy-document file://assume-role-policy.json \

--kirjeldus 'AWSLambdaDynamoDBExecutionRole' \

--teenuse nimi lambda.amazonaws.com

Eelmine käsk on AWS CLI käsk rolli loomiseks. Rolli loomiseks saate kasutada ka Amazoni halduskonsooli. Kui olete IAM-konsoolis, avage Rollid lehele ja klõpsake nuppu Loo roll nuppu.

Jätkake järgmise sisestamiseks:

  • Usaldusväärne üksus: lambda
  • Rolli nimi: lambda-dynamodb-roll
  • Load: AWSLambdaDynamoDBExecutionRole

Saate kasutada ka Pythonit, installides esmalt Pythoni jaoks mõeldud AWS SDK:

pip install boto3

3. samm: lubage oma lauas DynamoDB vood

Peate oma tabelis lubama DynamoDB Streams. Selle illustratsiooni jaoks kasutame Pythoni jaoks mõeldud Boto3, AWS SDK-d. Järgmine käsk aitab:

import boto3

# Ühendage DynamoDB teenusega
dynamodb = boto3.client( 'dynamodb' )

# Lubage DynamoDB vood tabelis 'minu tabel'.
vastus = dynamodb.update_table(
Tabelinimi= 'minulaud' ,
StreamSpecification={
'StreamEnabled' : Tõsi,
'StreamViewType' : „NEW_AND_OLD_IMAGES”
}
)

# Kontrollige vastust ja veenduge, et voog lubati edukalt
kui vastus[ 'StreamSpecification' ][ 'StreamEnabled' ]:
print( 'DynamoDB voog lubati edukalt' )
muu:
print( 'Viga DynamoDB voo lubamisel' )

See kood võimaldab DynamoDB voogu 'mytable' tabelis, mis voogesitab nii üksuste uusi kui ka vanu pilte niipea, kui muudatused toimuvad. Saate valida, kas voogesitada ainult uusi pilte niipea, kui StreamViewType on „NEW_IMAGE”.

Eelkõige võib selle koodi käitamine lubada vooge teie tabelites alles mõne aja pärast. Selle asemel võib protsess veidi aega võtta. Voo oleku kontrollimiseks saate kasutada meetodit description_table.

4. samm: looge lambda funktsioon

Järgmine samm on Lambda funktsiooni loomine, mis käivitab DynamoDB voo. Järgmised sammud peaksid aitama:

  • Avage AWS Lambda konsool ja klõpsake vahekaarti Loo funktsioon. Lehel 'Loo funktsioon' valige 'Autor nullist' ja sisestage oma funktsioonile nimi. Siin peate sisestama ka oma käitusaja. Selle illustratsiooni jaoks valisime Pythoni.
  • Jaotises 'Valige või looge täitmisroll' valige 'Loo uus roll põhiliste Lambda lubadega', et luua oma Lambda funktsiooni jaoks vajalike õigustega IAM-roll.
  • Lambda funktsiooni loomiseks klõpsake nuppu 'Loo funktsioon'.
  • Kerige oma funktsiooni lehel „Konfiguratsioon” alla jaotiseni „Kujundaja” ja klõpsake vahekaarti „Lisa päästik”.
  • Ilmuvas kastis „Triggeri konfiguratsioon” valige rippmenüüst „Trigger” „DynamoDB”.
  • Valige DynamoDB tabel, mida soovite funktsiooni käivitamiseks kasutada. Kui see on tehtud, valige, kas soovite, et funktsioon käivitataks kõigi tabeli värskenduste või ainult teatud värskenduste korral (nt teatud veergude värskendused).
  • Päästiku loomiseks klõpsake nuppu 'Lisa'.
  • Redaktoris „Funktsioonikood” kirjutage oma funktsiooni Pythoni kood. Funktsiooni käivitavatele andmetele juurdepääsuks saate kasutada funktsioonile edastatud sündmuseobjekti.
  • Funktsiooni salvestamiseks klõpsake nuppu 'Salvesta'.

See on kõik, mis Lambda funktsiooni loomisel juhtub! Teie funktsioon käivitub nüüd iga kord, kui määratud DynamoDB tabelit värskendatakse.

Siin on näide lihtsast Pythoni funktsioonist, mille DynamoDB voog võib käivitada:

def lambda_handler(sündmus, kontekst):

ürituse registreerimiseks[ 'Rekordid' ]:

print(record[ 'dynamodb' ][ 'Uus pilt' ])

See funktsioon kordab sündmuse objekti kirjeid ja prindib DynamoDB tabelis oleva üksuse uue kujutise, mis funktsiooni käivitab.

5. samm: testige lambda funktsiooni

Lambda funktsiooni testimiseks, mida DynamoDB voog võib käivitada, saate kasutada boto3 teek, et pääseda juurde DynamoDB API-le ja kutsuda meetod Lambda klient funktsiooni käivitamiseks.

Siin on näide selle kohta, kuidas seda teha:

import boto3

# Ühendage DynamoDB teenusega
dynamodb = boto3.client( 'dynamodb' )

# Ühendage Lambda teenusega
lambda_client = boto3.client( 'lambda' )

# Sisestage üksus tabelisse 'minu tabel'.
vastus = dynamodb.put_item(
Tabelinimi= 'minulaud' ,
Item={
'id' :{ 'N' : '123' },
'nimi' :{ 'S' : 'Joel Austin},
'
vanus ':{' N ':' 3. 4 '}
}
)

# Kontrollige vastust ja veenduge, et üksus sisestati edukalt
kui vastus['
ResponseMetadata '][' HTTPStatusCode '] == 200:
print ('Üksus edukalt sisestatud')
muu:
print ('Viga üksuse sisestamisel')

# Käivitage Lambda funktsioon, mis on tellitud
minu-laud ' laud
vastus = lambda_client.invoke(
Function,
InvocationType='
Sündmus ',
LogType='
Saba ',
Kasulik koormus='
{ 'Rekordid' :[{ 'dünamodb' :{ 'Uus pilt' :{ 'id' :{ 'N' : '123' }, 'nimi' :{ 'S' : 'Joel Austin' }, 'vanus' :{ 'N' : '3. 4' }}}}]} '
)

# Kontrollige vastust veendumaks, et funktsioon käivitati edukalt
kui vastus['
Olekukood '] == 202:
print ('Lambda funktsioon käivitati edukalt')
muu:
print ('Viga lambda funktsiooni käivitamisel')

See kood sisestab esmalt üksuse müüdav tabel ja seejärel käivitab minu funktsioon Lambda-funktsioon, saates sündmuse kasuliku koormuse näidisfunktsiooni funktsiooni abil kutsuda meetod. Sündmuse kasulik koormus simuleerib DynamoDB voosündmust, mis sisaldab äsja sisestatud üksuse uut pilti.

Seejärel saate kontrollida funktsiooni Lambda logisid, et näha, kas see käivitas ja töötles sündmuse andmeid edukalt.

Järeldus

Oluline on märkida, et saate sama vookirje jaoks mitu korda välja kutsuda, et DynamoDB voog võib käivitada Lambda funktsiooni. Selle peamine põhjus on see, et vookirjed on lõpuks järjepidevad ja Lambda funktsiooni abil on võimalik sama kirjet mitu korda töödelda. Selle juhtumi õigeks käsitlemiseks on ülioluline oma lambdafunktsiooni kavandamine.