首页 > 解决方案 > 缺少 Cloudfront 提供的错误密钥对 ID

问题描述

我已经尝试了文档中描述的每一种方式,并且我正在尝试使用签名的 cookie 来提供私人内容。我设置cookie的方式如下。

    function setCloudFrontSignedCookie(res) {

  const AWS = require("aws-sdk");
  const privateKey = Buffer.from(process.env.PRIVATE_KEY, "base64");
  const publicKey = Buffer.from(process.env.PUBLIC_KEY, "base64");
  const cloudFront = new AWS.CloudFront.Signer(publicKey, privateKey);
  const policy = JSON.stringify({
    Statement: [
      {
        Resource: "http*://du1jzqmqkepz6.cloudfront.net/2021-04-01T15-52-51.085Z-slider5.jpg", // http* => http and https
        Condition: {
          DateLessThan: {
            "AWS:EpochTime":
              Math.floor(new Date().getTime() / 1000) + 60 * 60 * 1, // Current Time in UTC + time in seconds, (60 * 60 * 1 = 1 hour)
          },
        },
      },
    ],
  });
  const cookie = cloudFront.getSignedCookie({
    policy,
  });
  console.log(cookie);
  res.cookie('CloudFront-Key-Pair-Id', cookie['CloudFront-Key-Pair-Id'], {  httpOnly: true });
  res.cookie('CloudFront-Policy', cookie['CloudFront-Policy'], {  httpOnly: true });
  res.cookie('CloudFront-Signature', cookie['CloudFront-Signature'], {  httpOnly: true });
  return true;
}

它返回的错误是

    <Error>
    <Code>MissingKey</Code>
    <Message>Missing Key-Pair-Id query parameter or cookie value</Message>
</Error>

我也用邮递员和 Axios 试过。请如果有人可以帮助我。

标签: node.jsreactjscookiesamazon-cloudfront

解决方案


推荐阅读