Sie versuchen zu entschlüsseln Geheimtext in eine Lambda-Funktion, die mithilfe von KMS-Ergebnisse im timeout

Beim entschlüsseln ciphertext von der Befehlszeile aus mithilfe der AWS CLI, der verschlüsselte Text wird entschlüsselt ohne Probleme:

$ aws kms decrypt --ciphertext-blob fileb://encrypted-secrets --output text --query Plaintext --region us-east-1 | base64 --decode > decryped-secrets

Diese Entschlüsselung funktioniert auch lokal, wenn Sie versuchen zu tun, damit aus einem js-script:

#!/usr/local/bin/node

const fs = require('fs');
const AWS = require('aws-sdk');
const kms = new AWS.KMS({region:'us-east-1'});

const secretPath = './encrypted-secrets';
const encryptedSecret = fs.readFileSync(secretPath);

const params = {
      CiphertextBlob: encryptedSecret
};

kms.decrypt(params, function(err, data) {
  if (err) {
    console.log(err, err.stack);
  } else {
    const decryptedScret = data['Plaintext'].toString();
    console.log('decrypted secret', decryptedScret);
  }
});

Jedoch, wenn Sie versuchen zu tun, also mit fast der exakt gleiche code wie oben im Kontext einer AWS Lambda-Funktion, der Aufruf der Funktion führt zu einem timeout:

'use strict';

const zlib = require('zlib');
const mysql = require('mysql');
const fs = require('fs');
const AWS = require('aws-sdk');
const kms = new AWS.KMS({region:'us-east-1'});

const secretPath = './encrypted-secrets';
const encryptedSecret = fs.readFileSync(secretPath);

const params = {
    CiphertextBlob: encryptedSecret
};

exports.handler = (event, context, callback) => {
    kms.decrypt(params, (err, data) => {
       if (err) {
            console.log(err, err.stack);
            return callback(err);
        } else {
            const decryptedScret = data['Plaintext'].toString();
            console.log('decrypted secret', decryptedScret);
            return callback(null, `Successfully processed ${parsed.logEvents.length} log events.`);
        }
    });
};

timeout log:

START RequestId: start-request-id-redacted Version: $LATEST
END RequestId: end-request-id-redacted
REPORT RequestId: report-requested-id-redacted  Duration: 10002.43 ms   Billed Duration: 10000 ms   Memory Size: 128 MB Max Memory Used: 18 MB  
2016-11-13T19:22:28.774Z task-id-redacted Task timed out after 10.00 seconds

Hinweise:

  • Wenn ich kommentiere den Aufruf kms.decrypt und versuchen console.log die params oder nichts wirklich, die Werte werden ausgegeben, ohne Probleme. Es scheint eine Art von Problem mit der kms.decrypt nennen, und keine tatsächlichen Fehler, über die Zeitüberschreitung zurückgegeben.
  • Der Politik angebracht, um die Rolle zu, unter dem die lambda-Funktion aufgerufen wird, enthält die beigefügte Richtlinie AWSLambdaVPCAccessExecutionRole, und auch die folgenden beigefügten inline-policy:

policygen-lambda_basic_execution_and_kms_decrypt-201611131221:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "sid-redacted",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:account-redacted:key/key-id-redacted"
            ]
        }
    ]
}
  • Habe ich unkenntlich gemacht, alle persönlichen Informationen aus dem code.
Schreibe einen Kommentar