步骤 4:模拟问题并重播事件以进行恢复 - Amazon Simple Notification Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

步骤 4:模拟问题并重播事件以进行恢复

步骤 1:启用模拟的问题并发送第二个 API 请求

  1. 登录 Amazon Lambda 控制台

  2. 在导航面板上,选择 Functions (函数)

  3. 搜索 serverlessrepo-fork-example 并选择 CheckoutFunction

  4. 在-我的应用程序上 fork-example-ecommerce-ABCDE FCheckoutFunction... 页面的环境变量部分中,将 BUG_ ENABLED 变量设置为 true,然后选择保存。

  5. 将以下 JSON 复制到名为 test_event_2.json 的文件中。

    { "id": 9917, "date": "2019-03-26T21:11:10-08:00", "status": "confirmed", "customer": { "id": 56999, "name": "Marcia Oliveira", "email": "marcia.oliveira@example.com" }, "payment": { "id": 3311, "amount": 75.00, "currency": "usd", "method": "credit", "card-network": "mastercard", "card-number": "1234 5678 9012 3456", "card-expiry": "12/2025", "card-owner": "Marcia Oliveira", "card-cvv": "321" }, "shipping": { "id": 9900, "time": 20, "unit": "days", "method": "plane" }, "items": [{ "id": 9993, "product": 3120, "name": "Hockey Stick", "quantity": 1, "price": 75.00, "subtotal": 75.00 }] }
  6. 要将 HTTPS 请求发送到您的 API 终端节点,请通过执行 curl 命令来将示例事件负载作为输入传递,例如:

    curl -d "$(cat test_event_2.json)" https://abcdefghij.execute-api.us-east-2.amazonaws.com/Prod/checkout

    API 将返回以下空响应,并指示已成功执行:

    { }

步骤 2:验证模拟数据损坏

  1. 登录 Amazon DynamoDB 控制台

  2. 在导航面板上,选择 Tables (表)

  3. 搜索 serverlessrepo-fork-example 并选择 CheckoutTable

  4. 在表详细信息页面上,选择 Items (项目),然后选择已创建的项目。

    将显示存储的属性,其中一些标记为 CORRUPTED! (已损坏!)

步骤 3:禁用模拟的问题

  1. 登录 Amazon Lambda 控制台

  2. 在导航面板上,选择 Functions (函数)

  3. 搜索 serverlessrepo-fork-example 并选择 CheckoutFunction

  4. 在-我的应用程序上 fork-example-ecommerce-ABCDE FCheckoutFunction... 页面的环境变量部分中,将 BUG_ ENABLED 变量设置为 false,然后选择保存。

步骤 4:启用重播以从问题中恢复

  1. 在 Amazon Lambda 控制台中的导航面板上,选择 Functions (函数)

  2. 搜索 serverlessrepo-fork-example 并选择 ReplayFunction

  3. 展开 Designer 部分,选择 SQS 磁贴,然后在 SQS 部分中,选择 Enabled (启用)

    注意

    启用 Amazon SQS 事件源触发器大约需要 1 分钟。

  4. 选择保存

  5. 要查看已恢复的属性,请返回到 Amazon DynamoDB 控制台。

  6. 要禁用重播,请返回到 Amazon Lambda 控制台并为 ReplayFunction 禁用 Amazon SQS事件源触发器。