Dato che hai menzionato che sei nuovo in AWS, risponderò in modo descrittivo.
Suppongo che tu abbia impostato l'impostazione "Stream abilitato" per la tua tabella DynamoDB su "Sì", e l'hai configurata come sorgente di eventi per la tua funzione lambda.
Questo è come ho ottenuto il nome della tabella dal torrente che ha invocato la mia funzione lambda -
def lambda_handler(event, context):
print(json.dumps(event, indent=2)) # Shows what's in the event object
for record in event['Records']:
ddbARN = record['eventSourceARN']
ddbTable = ddbARN.split(':')[5].split('/')[1]
print("DynamoDB table name: " + ddbTable)
return 'Successfully processed records.'
In sostanza, l'oggetto event
che contiene tutte le informazioni su un particolare flusso DynamoDB che è stato responsabile per quel particolare lambda funzione invoke, contiene un parametro eventSourceARN
. Questo eventSourceARN
è l'ARN (Amazon Resource Number) che identifica in modo univoco la tabella DynamoDB da cui si è verificato lo event
.
questo è un valore di esempio per eventSourceARN
-
ARN: AWS: DynamoDB: noi-est-1: 111.111.111.111: tavolo/prova /stream/2020-10-10T08:18:22.385
Si noti il testo in grassetto sopra - test; questo è il nome della tabella che stai cercando.
Nella riga ddbTable = ddbARN.split(':')[5].split('/')[1]
sopra, ho cercato di suddividere l'intero ARN da ':' prima, e poi da '/' per ottenere il valore prova. Una volta ottenuto questo valore, è possibile chiamare le API S3 per scrivere su un file in S3 con lo stesso nome.
Spero che questo aiuti.
Aiuta. Grazie. – AIR
@AIR Cool! Se ritieni di aver risolto il tuo problema, puoi contrassegnarlo come risposta? Grazie. – rk2
record.eventSourceARN.split ('/') [1] –