aws - ошибка аргументов метода CloudFront createInvalidation () при использовании обещаний - PullRequest
0 голосов
/ 27 апреля 2018

AWS SDK для JavaScript позволяет использовать обещания вместо обратных вызовов при вызове методов классов обслуживания AWS. Ниже приведен пример для S3. (Я использую TypeScript вместе с Serverless Framework для разработки)

const s3 = new S3({ apiVersion: '2006-03-01' });

async function putFiles () {
      await s3.putObject({
        Bucket: 'my-bucket',
        Key: `test.js`,
        Body: Buffer.from(file, 'binary') // assume that the file variable was defined above.
      }).promise();
}

Вышеприведенная функция прекрасно работает, когда мы передаем параметры сегмента в качестве единственного аргумента метода.

Но когда я пытаюсь выполнить аналогичную операцию, вызывая метод createInvalidation () класса AWS CloudFront, я получаю сообщение об ошибке, указывающее, что аргументы не совпадают.

Ниже приведен мой код и полученная ошибка.

const cloudfront = new aws.CloudFront();

async function invalidateFiles() {
      await this.cloudfront.createInvalidation({
        DistributionId: 'xxxxxxxxxxx',
        InvalidationBatch: {
          Paths: {
            Quantity: 1,
            Items: [`test.js`],
          },
        },
      }).promise();
}

Arguements Error

Может кто-нибудь помочь с этим вопросом, пожалуйста?

1 Ответ

0 голосов
/ 27 апреля 2018

Вам не хватает передать CallerReference в качестве аргумента.

const cloudfront = new aws.CloudFront();
async function invalidateFiles() {
    await cloudfront.createInvalidation({
        DistributionId: 'xxxxxxxxxxx',
        InvalidationBatch: {
            CallerReference: `SOME-UNIQUE-STRING-${new Date().getTime()}`,
            Paths: {
                Quantity: 1,
                Items: ['test.js'],
            },
        },
    }).promise();
}
...