检测部署到无服务器环境的 Web 框架 - Amazon X-Ray
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

检测部署到无服务器环境的 Web 框架

这些区域有:AmazonPython X-Ray 开发工具包支持对部署在无服务器应用程序中的 Web 框架进行分析 无服务器是云的本机架构,使您能够将更多的运营责任转移到Amazon,提高您的灵活性和创新能力。

无服务器体系结构是一种软件应用程序模型,可让您构建和运行应用程序和服务,而无需考虑服务器。它消除了基础架构管理任务,如服务器或群集配置、修补、操作系统维护和容量配置。您可以为几乎任何类型的应用程序或后端服务构建无服务器解决方案,并为您处理以高可用性运行和扩展应用程序所需的一切事项。

本教程介绍如何自动分析Amazon X-Ray(例如 Flask 或 Django)上部署到无服务器环境的 Web 框架。通过应用程序的 X-Ray 检测仪,您可以查看所有下游调用,从 Amazon API Gateway 开始,直到Amazon Lambda函数,以及您的应用程序进行的传出调用。

适用于 Python 的 X-Ray 开发工具包支持以下 Python 应用程序框架:

  • 药剂版本 0.8 或更高版本

  • Django 版本 1.0 或更高版本

本教程开发了一个部署到 Lambda 并由 API Gateway 调用的无服务器应用程序示例。本教程使用 Zappa 自动将应用程序部署到 Lambda 并配置 API Gateway 终端节点。

Prerequisites

第 1 步:创建环境

在此步骤中,您将创建一个使用 virtualenv 托管应用程序的虚拟环境。

  1. 使用Amazon CLI中,为应用程序创建一个目录。然后更改到新的目录。

    mkdir serverless_application cd serverless_application
  2. 接下来,在新目录中创建虚拟环境。使用以下命令激活它。

    # Create our virtual environment virtualenv serverless_env # Activate it source serverless_env/bin/activate
  3. 在您的环境中安装 X-Ray、烧瓶、Zappa 和请求库。

    # Install X-Ray, Flask, Zappa, and Requests into your environment pip install aws-xray-sdk flask zappa requests
  4. 将应用程序代码添加到serverless_application目录。对于这个示例,我们可以构建 Falasks 的Hello World示例。

    serverless_application 目录中创建名为 my_app.py 的文件。然后使用文本编辑器添加以下命令。此应用程序将分析 Requests 库,修补 Flask 应用程序的中间件,并打开终端节点 '/'

    # Import the X-Ray modules from aws_xray_sdk.ext.flask.middleware import XRayMiddleware from aws_xray_sdk.core import patcher, xray_recorder from flask import Flask import requests # Patch the requests module to enable automatic instrumentation patcher.patch(('requests',)) app = Flask(__name__) # Configure the X-Ray recorder to generate segments with our service name xray_recorder.configure(service='My First Serverless App') # Instrument the Flask application XRayMiddleware(app, xray_recorder) @app.route('/') def hello_world(): resp = requests.get("https://aws.amazon.com") return 'Hello, World: %s' % resp.url

第 2 步:创建和部署 zappa 环境

在此步骤中,您将使用 Zappa 自动配置 API Gateway 终端节点,然后部署到 Lambda。

  1. serverless_application目录。在此示例中,我们使用了默认设置,但如果您有自定义首选项,Zappa 将显示配置说明。

    zappa init
    What do you want to call this environment (default 'dev'): dev
    ...
    What do you want to call your bucket? (default 'zappa-*******'): zappa-*******
    ...
    ...
    It looks like this is a Flask application.
    What's the modular path to your app's function?
    This will likely be something like 'your_module.app'.
    We discovered: my_app.app
    Where is your app's function? (default 'my_app.app'): my_app.app
    ...
    Would you like to deploy this application globally? (default 'n') [y/n/(p)rimary]: n
  2. 启用 X-Ray。打开zappa_settings.json文件,并验证它看起来与示例类似。

    { "dev": { "app_function": "my_app.app", "aws_region": "us-west-2", "profile_name": "default", "project_name": "serverless-exam", "runtime": "python2.7", "s3_bucket": "zappa-*********" } }
  3. Add"xray_tracing": true作为配置文件的条目。

    { "dev": { "app_function": "my_app.app", "aws_region": "us-west-2", "profile_name": "default", "project_name": "serverless-exam", "runtime": "python2.7", "s3_bucket": "zappa-*********", "xray_tracing": true } }
  4. 部署应用程序。这会自动配置 API Gateway 终端节点并将您的代码上传到 Lambda。

    zappa deploy
    ...
    Deploying API Gateway..
    Deployment complete!: https://**********.execute-api.us-west-2.amazonaws.com/dev

第 3 步:启用 API Gateway 的 X-Ray 跟踪

在此步骤中,您将与 API Gateway 控制台进行交互以启用 X-Ray 跟踪。

  1. 登录到 Amazon Web Services Management Console 并通过以下网站打开 API Gateway 控制台:https://console.aws.amazon.com/apigateway/

  2. 查找新生成的 API。它应该类似于 serverless-exam-dev

  3. 选择 Stages (阶段)

  4. 选择部署阶段的名称。默认为 dev

  5. 在存储库的日录/跟踪选项卡中,选择启用 X-Ray 跟踪

  6. 选择 Save Changes

  7. 访问浏览器中的终端节点。如果您使用了示例 Hello World 应用程序,它应显示以下内容。

    "Hello, World: https://aws.amazon.com/"

第 4 步:查看创建的跟踪

在此步骤中,您将与 X-Ray 控制台进行交互,以查看示例应用程序所创建的跟踪。有关跟踪分析的更详细演练,请参阅查看服务映射

  1. 登录到Amazon Web Services Management Console,然 X-Ray 在https://console.aws.amazon.com/xray/home

  2. 查看 API Gateway、Lambda 函数和 Lambda 容器生成的段。

  3. 在 Lambda 函数段下,查看名为My First Serverless App。后面是第二个子段,名为https://aws.amazon.com

  4. 在初始化期间,Lambda 可能还会生成名为的第三个子分段initialization


        跟踪段视图。

        服务图视图。

第 5 步:清除

始终终止不再使用的资源,以避免意外的成本累积。正如本教程所演示的那样,Zappa 等工具简化了无服务器重新部署。

要从 Lambda、API Gateway 和 Amazon S3 中删除应用程序,请使用Amazon CLI。

zappa undeploy dev

后续步骤

通过将更多功能添加到应用程序Amazon客户端并使用 X-Ray 对其进行分析。了解有关无服务器计算选项的更多信息,上的无服务器Amazon