0
votes

Quel est le type dois-je utiliser pour l'événement DynamoDb Stream dans TypeScript?

Lorsque je reçois un événement de flux dynamodb dans TypeScript, je vois ci-dessous Schema: xxx

existe une définition de type que je peux utiliser pour cet événement dans Typecript? >


0 commentaires

3 Réponses :


0
votes

En Javascript, vous pouvez utiliser AWS .Dynamodb.converter.unmarshall à la forme persistée de lamarshall Dynamodb dans un objet.

Amazon DynamoDB Datamapper tire parti de @ AWS / DYNAMODB-DATA-Marshaller et @ AWS / DYNAMODB-Expressions Les paquets et permet une interopérabilité facile entre les classes de domaine de votre application et leur formulaire persisté dans Amazon Dynamodb. Votre travail consiste à créer la classe d'applications correspondante et à ajouter des propriétés au prototype de la classe.


1 commentaires

Merci pour votre réponse. J'ai trouvé une autre bibliothèque awslabs.github.io/dynamodub -Data-mapper-js / packages / ... qui ressemble à celui que vous avez posté. Cette bibliothèque provient également d'AWS GitHub. Je ne sais pas pourquoi ils libèrent deux bibliothèques pour faire une chose.



2
votes

Y a-t-il une définition de type que je peux utiliser pour cet événement dans Typescript? P>

Si vous utilisez un AWS Lambda pour traiter les événements de flux Dynamo, vous pouvez trouver des définitions de type dans le fichier @ Types / aws-lambda code> package. p> xxx pré>

Vous pouvez voir la définition de type complète ici dans Le repo GITUB pour @ Types / AWS-Lambda. P>

// http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_StreamRecord.html
export interface StreamRecord {
    ApproximateCreationDateTime?: number;
    Keys?: { [key: string]: AttributeValue };
    NewImage?: { [key: string]: AttributeValue };
    OldImage?: { [key: string]: AttributeValue };
    SequenceNumber?: string;
    SizeBytes?: number;
    StreamViewType?: 'KEYS_ONLY' | 'NEW_IMAGE' | 'OLD_IMAGE' | 'NEW_AND_OLD_IMAGES';
}

// http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_Record.html
export interface DynamoDBRecord {
    awsRegion?: string;
    dynamodb?: StreamRecord;
    eventID?: string;
    eventName?: 'INSERT' | 'MODIFY' | 'REMOVE';
    eventSource?: string;
    eventSourceARN?: string;
    eventVersion?: string;
    userIdentity?: any;
}

// http://docs.aws.amazon.com/lambda/latest/dg/eventsources.html#eventsources-ddb-update
export interface DynamoDBStreamEvent {
    Records: DynamoDBRecord[];
}


0 commentaires

0
votes

juste un addendum à la réponse déjà acceptée

// http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_StreamRecord.html
export interface StreamRecord<T> {
    ApproximateCreationDateTime?: number;
    Keys?: { [key: string]: AttributeValue };
    NewImage?: T;
    OldImage?: T;
    SequenceNumber?: string;
    SizeBytes?: number;
    StreamViewType?: 'KEYS_ONLY' | 'NEW_IMAGE' | 'OLD_IMAGE' | 'NEW_AND_OLD_IMAGES';
}

// http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_streams_Record.html
export interface DynamoDBRecord<T> {
    awsRegion?: string;
    dynamodb?: StreamRecord<T>;
    eventID?: string;
    eventName?: 'INSERT' | 'MODIFY' | 'REMOVE';
    eventSource?: string;
    eventSourceARN?: string;
    eventVersion?: string;
    userIdentity?: any;
}

// http://docs.aws.amazon.com/lambda/latest/dg/eventsources.html#eventsources-ddb-update
export interface DynamoDBStreamEvent<T> {
    Records: DynamoDBRecord<T>[];
}


0 commentaires