首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在aws-sdk-js-v3中获取签名cookie

如何在aws-sdk-js-v3中获取签名cookie
EN

Stack Overflow用户
提问于 2021-04-28 09:35:30
回答 1查看 109关注 0票数 0

我想使用签名的cookies来查看存储在CDN的CloudFront上的私人内容。

我不知道在aws-sdk-js-v3中使用哪些命令来获取签名的cookie。根据新的SDK文档,它应该类似于下面的第二个代码示例,但我找不到包含我需要的命令的特定npm包。在v2中它是"getSignedCookie“,但我不知道它被更新成了什么。

老式(v2)版本:

代码语言:javascript
复制
import AWS from "aws-sdk";

const CFSigner = new AWS.CloudFront.Signer(cfPublicKeyId, cfPrivateKey);
const policy = JSON.stringify({
        Statement: [
          {
            Resource: `https://${cfDomain}/images/*`,
            Condition: {
              DateLessThan: {
                "AWS:EpochTime": expireTime,
              },
            },
          },
        ],
      });

const myCookie = CFSigner.getSignedCookie({ policy });

尝试使用v3 SDK

代码语言:javascript
复制
import {
  CloudFrontClient,
  CloudFrontClientConfig,
} from "@aws-sdk/client-cloudfront";
import { ICantFindAnAppropriateCommandToSignCookies } from "ICantFindAnAppropriateCommandToSignCookies";

async function signMyCookies() {
  const config: CloudFrontClientConfig = {
    apiVersion: "2015-12-08",
    credentials: {
      accessKeyId: process.env.SC_ADMIN_ACCESS_KEY_ID,
      secretAccessKey: process.env.SC_ADMIN_SECRET_ACCESS_KEY,
    },
    region: "us-east-01",
  };

  const cfClient = new CloudFrontClient(config);

  const cfDomain = process.env.CLOUDFRONT_DOMAIN;

  const twoDays = 2 * 24 * 60 * 60 * 1000;

  const expireTime = Math.floor((Date.now() + twoDays) / 1000);

  const params = {
    policy: JSON.stringify({
      Statement: [
        {
          Resource: `https://${cfDomain}/images/*`,
          Condition: {
            DateLessThan: {
              "AWS:EpochTime": expireTime,
            },
          },
        },
      ],
    }),
  };

  const command = new ICantFindAnAppropriateCommandToSignCookies(params);

  try {
    const data = await cfClient.send(command);
    console.log("SUCCESS!", data);
  } catch (error) {
    console.error("OH NO ERROR GETTING SIGNED COOKIE", error);
  } finally {
    console.log("PROCESS COMPLETE");
  }
}
EN

回答 1

Stack Overflow用户

发布于 2021-06-24 22:50:16

看起来他们还没有提供这个功能。下面是github的特性请求问题:https://github.com/aws/aws-sdk-js-v3/issues/1862

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67292649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档