aws - 使用promises时CloudFront createInvalidation()方法参数错误

时间:2018-04-27 04:30:09

标签: javascript amazon-web-services typescript aws-sdk amazon-cloudfront

AWS SDK for JavaScript允许在调用AWS Service类的方法时使用promises而不是回调。以下是S3的示例。 (我正在使用TypeScript和无服务器框架进行开发)

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();
}

上面的函数完全正常,我们将bucket参数作为方法的唯一参数传递。

但是,当我尝试通过调用AWS CloudFront类上的createInvalidation()方法来执行类似的操作时,它会给出一个错误,指出参数不匹配。

以下是我的代码和我得到的错误。

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 :(得分:2)

您缺少将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();
}