[PYTHON] Löschen Sie DynamoDB-Daten nach 5 Minuten mit den AWS-Schrittfunktionen

Einführung

Ich entwickle eine Web-API mit API Gateway + Lambda + DynamoDB. Ich musste Daten mit der Lambda-Funktion in DynamoDB schreiben und diese Daten nach 5 Minuten löschen. Daher habe ich die folgende Methode in Betracht gezogen. -Löschen Sie Daten nach 5 Minuten mit der TTL-Funktion von DynamoDB · Rufen Sie Lambda an, um Daten nach 5 Minuten von Lambda zu löschen, um Daten zu schreiben

DynamoDB TTL-Funktion

Zuerst habe ich die TTL-Funktion von DynamoDB überprüft, aber es gab eine Beschreibung, dass "TTL Elemente löscht, die innerhalb von 48 Stunden nach dem Ablaufdatum abgelaufen sind", und es war nicht möglich, die Löschung immer nach 5 Minuten festzulegen. https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/howitworks-ttl.html

Verwenden Sie AWS-Schrittfunktionen

Als nächstes sollten Sie "Lambda aufrufen, um Daten aus Lambda zu löschen, um Daten zu schreiben". Als Ergebnis der Untersuchung scheint es, dass es mit AWS-Schrittfunktionen realisiert werden kann. Ich werde versuchen, es umzusetzen.

Erstellen einer Lambda-Funktion zum Schreiben von Daten

Die Laufzeit gewährt Zugriff auf Python 3.8-, DynamoDB- und Schrittfunktionen. Schreiben Sie Daten mit der folgenden Lambda-Funktion in DynamoDB und rufen Sie StateMachine auf. Übergeben Sie userId als Parameter an StateMachine.

lambda_function.py


import  boto3

client = boto3.client('stepfunctions')
dynamoDB = boto3.resource('dynamodb')

def lambda_handler(event, context):
    #Tabelle zum Schreiben von Daten
    table = dynamoDB.Table('test')
    #Rufen Sie State Machine an
    stateMachineArn = 'Zustandsmaschine ARN'
    #Schreiben Sie Daten in DynamoDB
    table.put_item(Item={'data': data})
    #Rufen Sie StateMachine auf
    input = {"parameters":{"userId":userId}}
    client.start_execution(
        stateMachineArn = stateMachineArn,
        input = json.dumps(input)
        )
    return {'statusCode': 200, 'body': "writeData"}

Erstellen einer Zustandsmaschine

Erstellen Sie eine Zustandsmaschine mit der folgenden Definition. Geben Sie StateMachine Zugriff auf Lambda.

{
  "StartAt": "wait_5_miutes",
  "States": {
    "wait_5_miutes": {
      "Type": "Wait",
      "Seconds": 300,
      "Next": "deleteData"
    },
    "deleteData": {
      "Type": "Task",
      "Resource": "ARN der Lambda-Funktion zum Löschen von Daten",
      "Parameters": {
          "userId.$": "$.parameters.userId"
      },
      "End": true
    }
  }
}

スクリーンショット 2020-09-20 16.04.15.png

Erstellen einer Lambda-Funktion, die Daten löscht

Löschen Sie die Daten aus StateMachine, indem Sie die folgende Lambda-Funktion ausführen.

lambda_function.py


import boto3

dynamoDB = boto3.resource('dynamodb')
table = dynamoDB.Table('test')

#Wird von StateMachine aufgerufen
def lambda_handler(event, context):
    #Erhalten Sie Parameter von StateMachine
    userId = event['userId']
    #Suchen Sie die zu löschenden Daten
    searchResult = table.get_item(Key={'userId': userId})
    if "Item" in searchResult:
        table.delete_item(Key={'userId': userId})
    return {'statusCode': 200, 'body': "deleteData"}

abschließend

Mithilfe der AWS-Schrittfunktionen konnten wir "Daten in DynamoDB schreiben und diese Daten nach 5 Minuten löschen" realisieren. Ich würde es gerne versuchen, da anscheinend eine kompliziertere Verarbeitung möglich ist.

Referenz

https://qiita.com/ketancho/items/147a141c9f8a6de86c97 https://aws.amazon.com/jp/getting-started/hands-on/create-a-serverless-workflow-step-functions-lambda/

Recommended Posts

Löschen Sie DynamoDB-Daten nach 5 Minuten mit den AWS-Schrittfunktionen
AWS-Schrittfunktionen zum Lernen anhand eines Beispiels
[AWS] Spielen mit Schrittfunktionen (SAM + Lambda) Teil 3 (Zweig)
[AWS] Spielen mit Schrittfunktionen (SAM + Lambda) Teil 1 (Basic)
[AWS] Spielen mit Schrittfunktionen (SAM + Lambda) Teil 2 (Parameter)
Verwalten Sie Ihre Daten mit AWS RDS
Stellen Sie Funktionen mit Cloud Pak for Data bereit
Bearbeiten von DynamoDB-Daten mit Lambda (Node & Python)
Daten in RDS mit AWS Glue überschreiben
[AWS SAM] Erstellen Sie eine API mit DynamoDB + Lambda + API Gateway
[AWS] Migrieren Sie Daten von DynamoDB nach Aurora MySQL
Zeigen Sie das Bild nach der Datenerweiterung mit Pytorch an