微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 aws-sdk-js-v3 中获得签名的 cookie

如何解决如何在 aws-sdk-js-v3 中获得签名的 cookie

我想使用签名的 cookie 来查看存储在 S3 上的私有内容以及 CloudFront for CDN。

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

老式 (v2) 版本:

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

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

解决方法

看来他们还没有提供该功能。以下是要跟进的功能请求 github 问题:https://github.com/aws/aws-sdk-js-v3/issues/1862

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。