Как получить прошлые ошибки, используя putParameter с aws-sdk для nodejs в Lambda? - PullRequest
2 голосов
/ 14 мая 2019

Я пытаюсь установить параметр, используя putParameter в AWS SDK для JavaScript в Node.js . В частности, я бы хотел воспользоваться преимуществами «Расширенного» уровня, с политикой истечения срока действия и тегами, если это возможно. Когда я выполняю свой код, я получаю сообщения об ошибках вроде:

There were 2 validation errors:
* UnexpectedParameter: Unexpected key 'Policies' found in params
* UnexpectedParameter: Unexpected key 'Tier' found in params

Я подозревал, что проблема была в используемой версии aws-sdk, поэтому я попытался запустить код локально, используя SAM local , и из функций Lambda, используя nodejs8.10 и nodejs10.x сред. Ошибки не уходят.

const AWS = require('aws-sdk');
AWS.config.update({region: 'us-east-1'});
const ssm = new AWS.SSM({apiVersion: '2014-11-06'});

exports.lambdaHandler = async () => {

    const tokenExpiration = new Date();
    tokenExpiration.setSeconds(tokenExpiration.getSeconds() + 60);

    await ssm.putParameter({
        Name: 'SECRET_TOKEN',
        Type: 'SecureString',
        Value: '12345',
        Policies: JSON.stringify([
            {
               "Type":"Expiration",
               "Version":"1.0",
               "Attributes":{
                  "Timestamp": tokenExpiration.toISOString()
               }
            }
        ]),
        Overwrite: true,
        Tier: 'Advanced'
    }).promise();
};

Я ожидал бы, что этот код будет работать и установит параметр с истечением срока действия. Однако, похоже, что SDK не распознает параметры «Policies» и «Tier», которые доступны в соответствии с документацией. Я не знаю, стоит ли ждать ожидания новейшего AWS SDK для JavaScript, но на странице runtime предполагается, что nodejs10.x использует AWS SDK для JavaScript 2.437.0.

Может быть полезно знать, что я могу заставить код работать правильно без рассматриваемых параметров (т. Е. Только параметров «Имя», «Тип» и «Значение»).

1 Ответ

2 голосов
/ 14 мая 2019

К сожалению, и Уровень, и Политики не были добавлены до v2.442.0 ( см. Diff )

Это означает, что для использования этих функций вам потребуется развернуть версию, против которой вы разрабатываете aws-sdk.

Следует отметить, что либо разработка / тестирование со встроенной версией, либо развертывание с aws-sdk, который вы используете, часто упоминается как хорошая практика. Если вы развертываете свою версию, вы можете использовать явный импорт клиента (например, const SSM = require('aws-sdk/clients/ssm'), чтобы уменьшить размер развертывания. Это еще более эффективно, если вы разрабатываете против предварительного просмотра AWS-SDK Version 3 .

...