“文档” 菜单
文档首页
/ / /
PHP 库手册
/

使用 Bref 部署到 AWS Lambda

在此页面上

  • 概述
  • 先决条件
  • 安装 MongoDB 扩展
  • AWS 凭证

Bref 允许您在PHP Amazon Web ServicesLambda上部署无服务器 应用程序。在本教程中,您将使用 扩展部署一个简单的PHP MongoDBPHP应用程序,并使用Atlas Amazon Web ServicesIAM 身份验证连接到 集群。

要使用 Bref 部署到 AWS Lambda,您必须设置以下组件:

  • 带有访问密钥的Amazon Web Services帐户

  • 无服务器框架

要了解如何进行设置,请按照 设置教程 进行操作 在 Bref 官方文档中。

Bref 使用 Lambda 层提供 PHP 运行时。 bref层使用 PHP 和一些扩展进行编译。其他扩展(例如mongodb )可在其他层中使用。

首先为项目创建一个新目录,然后安装所需的 MongoDB 和 Bref 依赖项。

$ mkdir bref-mongodb-app && cd bref-mongodb-app
$ composer init
$ composer require bref/bref bref/extra-php-extensions mongodb/mongodb

然后使用bref命令初始化无服务器配置。

$ vendor/bin/bref init

执行这一系列命令后,您应该拥有以下文件:

  • composer.json 用于安装在vendor目录中的 PHP 依赖项

  • index.php 示例网页

  • serverless.yml 用于配置部署

要验证设置,请尝试部署此默认应用程序。 这将输出一个呈现带有 Bref 徽标的网页的 URL:

$ serverless deploy

现在您已初始化项目,接下来将添加mongodb 扩展。在 bref/extra-php-extension 提供的扩展列表中找到“Serverless config”名称 。将其添加到layers serverless.yaml中,此文件将如下所示:

plugins:
- ./vendor/bref/bref
- ./vendor/bref/extra-php-extensions
functions:
api:
handler: index.php
runtime: php-83-fpm
layers:
- ${bref-extra:mongodb-php-83}

让我们将 MongoDB 驱动程序与网页一起使用,列出 Atlas样本数据集的行星。将index.php的内容替换为以下内容:

<?php
use MongoDB\Client;
require_once __DIR__ . '/vendor/autoload.php';
$uri = getenv('MONGODB_URI');
try {
$client = new Client($uri);
$planets = $client
->selectCollection('sample_guides', 'planets')
->find([], ['sort' => ['orderFromSun' => 1]]);
} catch (Throwable $exception) {
exit($exception->getMessage());
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<title>MongoDB Planets</title>
</head>
<body>
<ul>
<?php foreach ($planets as $planet) : ?>
<li><?= $planet->name ?></li>
<?php endforeach ?>
</ul>
</body>
</html>

使用新的index.php重新部署应用程序:

$ serverless deploy

应用程序将显示一条错误消息,因为尚未设置MONGODB_URI环境变量。我们将在下一节中了解如何设置此变量。

Atlas 支持使用 AWS 档案进行无密码身份验证。在任何 Lambda 函数中,AWS 都会设置包含访问令牌和密钥令牌的环境变量,以及分配给已部署函数的角色。

  1. Lambda在Amazon Web Services 控制台中打开 函数

  2. Configuration > Permission中,复制Role name

  3. 使用内置角色将此角色添加到 Atlas 集群:“读取和写入任何数据库”

要了解如何设置统一 AWS 访问,请参阅 MongoDB Atlas 文档中的设置统一 AWS 访问

现在已配置权限,允许 Lambda 函数访问您的 Atlas 集群。 您可以使用 Atlas 端点配置应用程序。

对 Atlas 集群的访问也受到 IP 地址的限制。 IP由于来自Amazon Web Services 范围非常广泛,因此您可以 允许从任何地方进行访问。

注意

建议使用 VPC 对等互连,将 Atlas 集群与互联网隔离。 这需要在此Lambda 中部署Amazon Web ServicesVPC 函数。

在 Atlas 用户界面Atlas > Deployment > Database > Connect中查找连接 URI。选择3. AWS IAM 。从 URI 中删除<AWS access key>:<AWS secret key>部分,将从环境变量中读取档案。

更新serverless.yml文件以传递环境变量MONGODB_URI

provider:
environment:
MONGODB_URI: "mongodb+srv://cluster0.example.mongodb.net/?authSource=%24external&authMechanism=MONGODB-AWS&retryWrites=true&w=majority"

最后,使用新配置进行部署。 部署完成后,您可以访问函数 URL 并查看 Atlas 集群中的planet列表。

$ serverless deploy

后退

示例数据

来年

对 BSON 数据建模