లాంబ్డాతో DynamoDB స్ట్రీమ్‌లు

Lambdato Dynamodb Strim Lu



DynamoDB స్ట్రీమ్‌లు అనేది Amazon DynamoDBలోని ఒక ఫీచర్, ఇది మీ DynamoDB టేబుల్‌లకు చేసిన మార్పులు లేదా డేటా మార్పుల యొక్క నిజ-సమయ ప్రసారాన్ని పొందడానికి మిమ్మల్ని అనుమతిస్తుంది. కాష్‌లను నవీకరించడం మరియు నోటిఫికేషన్‌లను పంపడం వంటి DynamoDB పట్టికలలో డేటా మార్పులకు ప్రతిస్పందించే అప్లికేషన్‌లను రూపొందించడానికి మీరు ఈ లక్షణాన్ని ఉపయోగించవచ్చు.

వాస్తవానికి, దిగువ ప్రక్రియలు మరియు AWS లాంబ్డా ఫంక్షన్‌లను ట్రిగ్గర్ చేయడానికి మీరు DynamoDB స్ట్రీమ్‌లను కూడా ఉపయోగించవచ్చు. Lambda, నిర్వచనం ప్రకారం, ఈవెంట్‌లకు ప్రతిస్పందనగా మీ కోడ్‌ని అమలు చేసే సర్వర్‌లెస్ కంప్యూట్ సేవ మరియు మీ కోసం కంప్యూట్ వనరులను స్వయంచాలకంగా నిర్వహిస్తుంది.

స్ట్రీమ్ రికార్డ్‌లను ప్రాసెస్ చేయడానికి మరియు తగిన చర్యలు తీసుకోవడానికి Node.js, Python, Java లేదా C#లో కోడ్‌ని వ్రాయడానికి మీరు Lambdaని ఉపయోగించవచ్చు. లాంబ్డాతో DynamoDB స్ట్రీమ్‌లను ఏకీకృతం చేయడం యొక్క ప్రధాన ప్రయోజనం ఏమిటంటే, లాంబ్డా మీరు నిర్వహణ అవసరం లేకుండానే మద్దతు ఉన్న సేవలు లేదా అప్లికేషన్ కోడ్‌లను అమలు చేయడానికి అనుమతిస్తుంది.







లాంబ్డాతో AWS DynamoDB స్ట్రీమ్‌లను ఎలా ఉపయోగించాలి

DynamoDB స్ట్రీమ్ నుండి ఈవెంట్‌లు మరియు సంఘటనలను వినియోగించే లాంబ్డా ఫంక్షన్‌ని సృష్టించడం సాధ్యమైనప్పటికీ, ఈ ప్రక్రియ చాలా పని చేస్తుంది, ముఖ్యంగా మీ మొదటి ప్రయత్నంలో. కింది దశలు సహాయపడతాయి:



దశ 1: మీ సిస్టమ్ ముందస్తు అవసరాలకు అనుగుణంగా ఉందని నిర్ధారించుకోండి

ప్రాథమిక లాంబ్డా కార్యకలాపాలు మరియు ప్రక్రియలు మీకు తెలిస్తేనే ఈ విధానం విజయవంతమవుతుంది. అందువల్ల, లాంబ్డాపై మీ అవగాహన సగటు కంటే ఎక్కువగా ఉందని నిర్ధారించుకోవడంలో ఇది మీ మొదటిది.



మీ సిస్టమ్ యొక్క AWS సంస్కరణను నిర్ధారించడం అనేది పరిగణించవలసిన రెండవ అవసరం. మీరు కింది ఆదేశాన్ని ఉపయోగించవచ్చు:





aws - వెర్షన్

అందించిన ఆదేశం యొక్క ఫలితం ఇలా ఉండాలి:

aws-cli/ 2 .x.x పైథాన్/ 3 .x.x Linux/ 4 .x.x-xxx-std బోటోకోర్/ 2 .x.x

ఇవ్వబడిన నమూనా ప్రతిస్పందన AWS CLI యొక్క ఇన్‌స్టాల్ చేసిన సంస్కరణను కలిగి ఉంది ( aws-cli/2.x.x ), పైథాన్ వెర్షన్ ( పైథాన్/3.x.x ), మరియు ఆపరేటింగ్ సిస్టమ్ ( Linux/4.x.x-xxx-std ) ప్రతిస్పందన యొక్క చివరి భాగం మీ AWS CLI అమలు చేసే బోటోకోర్ లైబ్రరీ సంస్కరణను నిర్వచిస్తుంది ( బోటోకోర్/2.x.x )



అందువల్ల, మీరు ఇలాంటి వాటితో ముగుస్తుంది:

దశ 2: ఎగ్జిక్యూషన్ పాత్రను సృష్టించండి

AWS CLIలో ఎగ్జిక్యూషన్ పాత్రను సృష్టించడం తదుపరి దశ. ఎగ్జిక్యూషన్ రోల్ అనేది AWS ఐడెంటిటీ అండ్ యాక్సెస్ మేనేజ్‌మెంట్ (IAM) పాత్ర మీ తరపున విధులను నిర్వహించడానికి AWS సేవ ద్వారా ఊహించబడింది. ఇది మీకు అవసరమైన AWS వనరులకు ప్రాప్యతను అందిస్తుంది.

కింది ఆదేశాన్ని ఉపయోగించి మీరు పాత్రను సృష్టించవచ్చు:

aws iam సృష్టించు-పాత్ర \

--role-name LambdaDynamoDBExecutionRole \

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

--వివరణ 'AWSLambdaDynamoDBఎగ్జిక్యూషన్ రోల్' \

--సేవ-పేరు lambda.amazonaws.com

మునుపటి ఆదేశం ఒక పాత్రను సృష్టించడానికి AWS CLI కమాండ్. మీరు పాత్రను సృష్టించడానికి Amazon మేనేజ్‌మెంట్ కన్సోల్‌ను కూడా ఉపయోగించవచ్చు. మీరు IAM కన్సోల్‌కి చేరుకున్న తర్వాత, తెరవండి పాత్రలు పేజీ మరియు క్లిక్ చేయండి పాత్రను సృష్టించండి బటన్.

కింది వాటిని నమోదు చేయడానికి కొనసాగండి:

  • విశ్వసనీయ సంస్థ: లాంబ్డా
  • పాత్ర పేరు: lambda-dynamodb-role
  • అనుమతులు: AWSLambdaDynamoDBExecutionRole

మీరు మొదట పైథాన్ కోసం AWS SDKని ఇన్‌స్టాల్ చేయడం ద్వారా పైథాన్‌ని కూడా ఉపయోగించవచ్చు:

pip ఇన్స్టాల్ boto3

దశ 3: మీ టేబుల్‌పై DynamoDB స్ట్రీమ్‌లను ప్రారంభించండి

మీరు మీ టేబుల్‌పై DynamoDB స్ట్రీమ్‌లను ప్రారంభించాలి. ఈ ఉదాహరణ కోసం, మేము పైథాన్ కోసం Boto3, AWS SDKని ఉపయోగిస్తాము. కింది ఆదేశం సహాయం చేస్తుంది:

దిగుమతి boto3

# DynamoDB సేవకు కనెక్ట్ చేయండి
dynamodb = boto3.client( 'dynamodb' )

# 'my-table' పట్టికలో DynamoDB స్ట్రీమ్‌లను ప్రారంభించండి
ప్రతిస్పందన = dynamodb.update_table(
టేబుల్ పేరు = 'mytable' ,
స్ట్రీమ్ స్పెసిఫికేషన్={
'స్ట్రీమ్‌ఎనేబుల్డ్' : నిజమే,
'స్ట్రీమ్‌వ్యూ టైప్' : 'NEW_AND_OLD_IMAGES'
}
)

# స్ట్రీమ్ విజయవంతంగా ప్రారంభించబడిందని నిర్ధారించుకోవడానికి ప్రతిస్పందనను తనిఖీ చేయండి
ప్రతిస్పందన ఉంటే[ 'స్ట్రీమ్ స్పెసిఫికేషన్' ][ 'స్ట్రీమ్ ఎనేబుల్డ్' ]:
ముద్రణ( 'DynamoDB స్ట్రీమ్ విజయవంతంగా ప్రారంభించబడింది' )
లేకపోతే:
ముద్రణ( 'DynamoDB స్ట్రీమ్‌ను ప్రారంభించడంలో లోపం' )

ఈ కోడ్ 'mytable' పట్టికలో DynamoDB స్ట్రీమ్‌ను ప్రారంభిస్తుంది, ఇది ఏవైనా మార్పులు సంభవించిన వెంటనే ఐటెమ్‌ల యొక్క కొత్త మరియు పాత చిత్రాలను ప్రసారం చేస్తుంది. మీరు StreamViewType “NEW_IMAGE”కి వచ్చిన వెంటనే కొత్త చిత్రాలను మాత్రమే ప్రసారం చేయడానికి ఎంచుకోవచ్చు.

ముఖ్యంగా, ఈ కోడ్‌ని అమలు చేయడం వలన కొంత సమయం తర్వాత మాత్రమే మీ టేబుల్‌లపై స్ట్రీమ్‌లను ప్రారంభించవచ్చు. బదులుగా, ప్రక్రియకు కొంత సమయం పట్టవచ్చు. స్ట్రీమ్ స్థితిని తనిఖీ చేయడానికి మీరు వర్ణన_పట్టిక పద్ధతిని ఉపయోగించవచ్చు.

దశ 4: లాంబ్డా ఫంక్షన్‌ను సృష్టించండి

తదుపరి దశ DynamoDB స్ట్రీమ్‌ను ప్రేరేపించే లాంబ్డా ఫంక్షన్‌ను సృష్టిస్తోంది. కింది దశలు సహాయపడాలి:

  • AWS లాంబ్డా కన్సోల్‌ని తెరిచి, 'క్రియేట్ ఫంక్షన్' ట్యాబ్‌ను క్లిక్ చేయండి. 'ఫంక్షన్‌ని సృష్టించు' పేజీలో, 'మొదటి నుండి రచయిత'ని ఎంచుకుని, మీ ఫంక్షన్ కోసం పేరును నమోదు చేయండి. మీరు ఈ సమయంలో మీ రన్‌టైమ్‌ను కూడా నమోదు చేయాలి. మేము ఈ ఉదాహరణ కోసం పైథాన్‌ని ఎంచుకున్నాము.
  • మీ లాంబ్డా ఫంక్షన్‌కు అవసరమైన అనుమతులతో IAM పాత్రను సృష్టించడానికి “ప్రాథమిక లాంబ్డా అనుమతులతో కొత్త పాత్రను సృష్టించు” కింద “ఎంచుకోండి లేదా అమలు చేసే పాత్రను సృష్టించండి”.
  • మీ లాంబ్డా ఫంక్షన్‌ని సృష్టించడానికి 'క్రియేట్ ఫంక్షన్' బటన్‌ను క్లిక్ చేయండి.
  • మీ ఫంక్షన్ కోసం “కాన్ఫిగరేషన్” పేజీలో, “డిజైనర్” విభాగానికి క్రిందికి స్క్రోల్ చేసి, “ట్రిగ్గర్‌ను జోడించు” ట్యాబ్‌ను క్లిక్ చేయండి.
  • కనిపించే “ట్రిగ్గర్ కాన్ఫిగరేషన్” బాక్స్‌లో, “ట్రిగ్గర్” డ్రాప్‌డౌన్ మెను నుండి “DynamoDB”ని ఎంచుకోండి.
  • మీరు ఫంక్షన్‌ను ట్రిగ్గర్ చేయడానికి ఉపయోగించాలనుకుంటున్న DynamoDB పట్టికను ఎంచుకోండి. పూర్తయిన తర్వాత, మీరు ఫంక్షన్‌ని టేబుల్‌కి అన్ని అప్‌డేట్‌లలో ట్రిగ్గర్ చేయాలనుకుంటున్నారా లేదా నిర్దిష్ట అప్‌డేట్‌లలో మాత్రమే (నిర్దిష్ట నిలువు వరుసలకు అప్‌డేట్‌లు వంటివి) ట్రిగ్గర్ చేయాలనుకుంటున్నారా అని ఎంచుకోండి.
  • ట్రిగ్గర్‌ను సృష్టించడానికి 'జోడించు' బటన్‌ను క్లిక్ చేయండి.
  • 'ఫంక్షన్ కోడ్' ఎడిటర్‌లో, మీ ఫంక్షన్ కోసం పైథాన్ కోడ్‌ను వ్రాయండి. ఫంక్షన్‌ను ట్రిగ్గర్ చేసే డేటాను యాక్సెస్ చేయడానికి మీరు మీ ఫంక్షన్‌కు పంపిన ఈవెంట్ ఆబ్జెక్ట్‌ని ఉపయోగించవచ్చు.
  • ఫంక్షన్ సేవ్ చేయడానికి 'సేవ్' బటన్‌ను క్లిక్ చేయండి.

లాంబ్డా ఫంక్షన్‌ను సృష్టించేటప్పుడు అంతే! పేర్కొన్న DynamoDB పట్టికకు అప్‌డేట్‌లు ఉన్నప్పుడు మీ ఫంక్షన్ ఇప్పుడు ట్రిగ్గర్ చేయబడుతుంది.

DynamoDB స్ట్రీమ్ ట్రిగ్గర్ చేయగల సాధారణ పైథాన్ ఫంక్షన్ యొక్క ఉదాహరణ ఇక్కడ ఉంది:

డెఫ్ లాంబ్డా_హ్యాండ్లర్(ఈవెంట్, కాంటెక్స్ట్):

ఈవెంట్‌లో రికార్డ్ కోసం[ 'రికార్డులు' ]:

ప్రింట్ (రికార్డు[ 'dynamodb' ][ 'కొత్త చిత్రం' ])

ఈ ఫంక్షన్ ఈవెంట్ ఆబ్జెక్ట్‌లోని రికార్డ్‌ల ద్వారా పునరావృతమవుతుంది మరియు ఫంక్షన్‌ను ట్రిగ్గర్ చేసే DynamoDB పట్టికలోని అంశం యొక్క కొత్త చిత్రాన్ని ప్రింట్ చేస్తుంది.

దశ 5: లాంబ్డా ఫంక్షన్‌ని పరీక్షించండి

DynamoDB స్ట్రీమ్ ట్రిగ్గర్ చేయగల లాంబ్డా ఫంక్షన్‌ని పరీక్షించడానికి, మీరు దీన్ని ఉపయోగించవచ్చు boto3 DynamoDB APIని యాక్సెస్ చేయడానికి లైబ్రరీ మరియు ది సహాయం కోరు యొక్క పద్ధతి లాంబ్డా ఫంక్షన్‌ని ట్రిగ్గర్ చేయడానికి క్లయింట్.

దీన్ని ఎలా చేయాలో ఇక్కడ ఒక ఉదాహరణ ఉంది:

దిగుమతి boto3

# DynamoDB సేవకు కనెక్ట్ చేయండి
dynamodb = boto3.client( 'dynamodb' )

# లాంబ్డా సేవకు కనెక్ట్ చేయండి
lambda_client = boto3.client( 'లాంబ్డా' )

# 'మై-టేబుల్' పట్టికలో ఒక అంశాన్ని చొప్పించండి
ప్రతిస్పందన = dynamodb.put_item(
టేబుల్ పేరు = 'mytable' ,
అంశం={
'id' :{ 'N' : '123' },
'పేరు' :{ 'ఎస్' : 'జోయెల్ ఆస్టిన్},
'
వయస్సు ':{' ఎన్ ':' 3. 4 '}
}
)

# అంశం విజయవంతంగా చొప్పించబడిందని నిర్ధారించుకోవడానికి ప్రతిస్పందనను తనిఖీ చేయండి
ప్రతిస్పందన ఉంటే['
ప్రతిస్పందన మెటాడేటా '][' HTTP స్టేటస్‌కోడ్ '] == 200:
ప్రింట్ ('అంశం విజయవంతంగా చొప్పించబడింది')
లేకపోతే:
ప్రింట్ ('అంశాన్ని చొప్పించడంలో లోపం')

# 'కు సబ్‌స్క్రైబ్ చేయబడిన లాంబ్డా ఫంక్షన్‌ను ట్రిగ్గర్ చేయండి
నా టేబుల్ 'పట్టిక
ప్రతిస్పందన = lambda_client.invoke(
ఫంక్షన్ పేరు='
నా పనితీరు ',
ఆహ్వాన రకం='
ఈవెంట్ ',
లాగ్ రకం='
తోక ',
పేలోడ్='
{ 'రికార్డులు' :[{ 'డైనమోడ్బి' :{ 'కొత్త చిత్రం' :{ 'id' :{ 'N' : '123' }, 'పేరు' :{ 'ఎస్' : 'జోయెల్ ఆస్టిన్' }, 'వయస్సు' :{ 'N' : '3. 4' }}}}]} '
)

# ఫంక్షన్ విజయవంతంగా ప్రారంభించబడిందని నిర్ధారించుకోవడానికి ప్రతిస్పందనను తనిఖీ చేయండి
ప్రతిస్పందన ఉంటే['
స్టేటస్‌కోడ్ '] == 202:
ప్రింట్ ('లాంబ్డా ఫంక్షన్ విజయవంతంగా ప్రారంభించబడింది')
లేకపోతే:
ప్రింట్ ('లాంబ్డా ఫంక్షన్‌ని ట్రిగ్గర్ చేయడంలో లోపం')

ఈ కోడ్ ముందుగా ఒక అంశాన్ని ఇన్‌సర్ట్ చేస్తుంది mytable పట్టిక ఆపై ట్రిగ్గర్స్ నా పనితీరు లాంబ్డా ఫంక్షన్‌ని ఉపయోగించి ఫంక్షన్‌కు నమూనా ఈవెంట్ పేలోడ్‌ను పంపడం ద్వారా సహాయం కోరు పద్ధతి. ఈవెంట్ పేలోడ్ DynamoDB స్ట్రీమ్ ఈవెంట్‌ను అనుకరిస్తుంది, ఇందులో ఇప్పుడే చొప్పించిన అంశం యొక్క కొత్త చిత్రం ఉంటుంది.

మీరు లాంబ్డా ఫంక్షన్ యొక్క లాగ్‌లను తనిఖీ చేయవచ్చు, ఇది ఈవెంట్ డేటాను విజయవంతంగా ప్రారంభించి, ప్రాసెస్ చేసిందో లేదో చూడవచ్చు.

ముగింపు

DynamoDB స్ట్రీమ్ లాంబ్డా ఫంక్షన్‌ని ట్రిగ్గర్ చేయగల ఒకే స్ట్రీమ్ రికార్డ్ కోసం మీరు అనేకసార్లు ఇన్వోక్ చేయవచ్చని గమనించడం చాలా ముఖ్యం. దీని వెనుక ఉన్న ప్రాథమిక కారణం ఏమిటంటే, స్ట్రీమ్ రికార్డ్‌లు చివరికి స్థిరంగా ఉంటాయి మరియు లాంబ్డా ఫంక్షన్ ద్వారా ఒకే రికార్డ్‌ను అనేకసార్లు ప్రాసెస్ చేయడం సాధ్యపడుతుంది. ఈ కేసును సరిగ్గా నిర్వహించడానికి మీ లాంబ్డా ఫంక్షన్‌ను రూపొందించడం చాలా కీలకం.