AWS S3 поставить событие Lambda создать запись DynamoDB с правильным владельцем Cognito - PullRequest
1 голос
/ 16 апреля 2019

Я использую JS-библиотеку амплификации Storage для того, чтобы поместить файл на S3.

    this.amplify.storage().put( 
            this.s3ImagePath,
        this.s3ImageFile, 
        this._storageOptions)

На s3 я создал триггер для событий PUT для вызова Lambda.Лямбда вставляет запись в DynamoDB.Моя проблема в том, что я хочу указать правильного владельца в этой недавно созданной записи DynamoDB.

Внутри лямбды я называю headObject следующим образом:

    const headResult = await S3.headObject({Bucket: bucketName, Key: key }).promise();
    console.log('headResult ', headResult);

Я ожидаю, что headResult будет содержать правильного владельца, который загрузил файл и создал событие в корзине S3.Я могу найти по событию S3:

ownerIdentity: { principalId: 'A2N3MUDHGLOEZI' },

, но я не уверен, как его использовать, чтобы найти правильного владельца и вставить правильное значение в новую запись DynamoDB.

Я также обнаружил, что это может помочь:

userIdentity: 
{ principalId: 'AWS:AROASQSLQMXWXMMOH3FEA:CognitoIdentityCredentials' },

Поскольку я новичок в безсерверной парадигме, скажите, пожалуйста, как мне добавить новую запись в DynamoDB, когда Lambda запускается изсобытие S3 PUT?

В качестве обходного пути я думаю удалить событие S3 PUT, которое вызывает лямбду, чтобы создать запись и вызвать мутацию от клиента, когда загрузка файла завершится.Но я считаю, что это обходной путь, а не правильный подход к проблеме.

...