node.js - 来自 lambda 的 context.awsRequestId

标签 node.js amazon-web-services lambda serverless-framework

context.awsRequestId 中的 uuid 真的是独一无二的吗?我想在创建资源时使用它,所以我现在可以在创建资源时:

const uuid = require('uuid');
const AWS = require('aws-sdk');

const dynamoDb = new AWS.DynamoDB.DocumentClient();

module.exports.create = (event, context, callback) => {
  const timestamp = new Date().getTime();
  const data = JSON.parse(event.body);
  if (typeof data.text !== 'string') {
    console.error('Validation Failed');
    callback(null, {
      statusCode: 400,
      headers: { 'Content-Type': 'text/plain' },
      body: 'Couldn\'t create the todo item.',
    });
    return;
  }

  const params = {
    TableName: process.env.DYNAMODB_TABLE,
    Item: {
      id: context.awsRequestId,
      text: data.text,
      checked: false,
      createdAt: timestamp,
      updatedAt: timestamp,
    },
  };

  // write the todo to the database
  dynamoDb.put(params, (error) => {
    // handle potential errors
    if (error) {
      console.error(error);
      callback(null, {
        statusCode: error.statusCode || 501,
        headers: { 'Content-Type': 'text/plain' },
        body: 'Couldn\'t create the todo item.',
      });
      return;
    }

    // create a response
    const response = {
      statusCode: 200,
      body: JSON.stringify(params.Item),
    };
    callback(null, response);
  });
};

谢谢。

最佳答案

我不认为这有明确的记录,但根据观察,这些 UUID 似乎不是随机生成的(这有利于唯一性)。相反,它们看起来像是 Type 1 UUIDs 的变体。 ,其中大部分字节实际上表示时间戳,因此可以安全地假设它们在空间和时间上都是唯一的。

xxxxxxxx-xxxx-Mxxx-xxxx-xxxxxxxxxxxx 中的数字 M 设置为 1 时,UUID 应为 Type 1 并应表示高分辨率时间戳和“Node ”标识符,虽然在这种情况下 Node 组件似乎没有携带任何有意义的信息......但时间戳似乎接近实时(尽管并非如此)。

关于node.js - 来自 lambda 的 context.awsRequestId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48649037/

相关文章:

java - 为什么 CompletableFuture.supplyAsync 会成功随机次数?

javascript - node.js 无法正常执行的问题

node.js - 我如何托管Node JS和MongoDB

用于 AWS S3 的 Python + Boto3 : Error - Bucket name must match the regex "^[a-zA-Z0-9.\-_]{1,255}$"

amazon-web-services - 使用 Redis 作为 AWS 负载均衡器

python - lambda x : lambda: x 的用途

c++ - 这种用于创建异构仿函数容器的技术能否得到挽救?

node.js - CI Runner - 使用 G++ 4.8 进行 npm 安装步骤

node.js - 有时在发生 sequelize 错误时不发送响应(未处理的拒绝 SequelizeDatabaseError)

javascript - 如何使用 Babel 和预设启动 PM2 Node JS