Docs Menu
Docs Home
/ / /
PHP ライブラリ マニュアル
/

Bref を使用した Amazon Web Services Lambda へのデプロイ

項目一覧

  • Overview
  • 前提条件
  • MongoDB 拡張機能のインストール
  • Amazon Web Services認証情報

Bref PHPAmazon Web ServicesLambdaを使用すると、 にサーバーレス アプリケーションを配置できます。このチュートリアルでは、PHP MongoDBPHP拡張機能を使用して単純な アプリケーションを配置し、Atlas Amazon Web ServicesIAM 認証を使用して クラスターに接続します。

Bref を使用してAmazon Web Services 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-extended によって提供される拡張機能のリストで「Serverless config」名を見つけます 。これをserverless.yamlの関数のlayersに追加すると、このファイルは次のようになります。

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

Atlasサンプル データセットの惑星をリストするウェブページを持つ MongoDB ドライバーを使用します。 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は、 Amazon Web Servicesの認証情報を使用したパスワードレス認証をサポートしています。 Lambda Amazon Web Servicesは、配置された関数に割り当てられたロールを持つアクセス トークンとシークレット トークンを含む環境変数を設定します。

  1. Lambdaコンソールで 関数を開きますAmazon Web Services

  2. Configuration > Permissionで、 Role nameをコピーします

  3. このロールを 組み込みロール を使用して Atlas クラスターに追加します。「任意のデータベースの読み取りと書込み」

統合Amazon Web Services アクセスを設定する方法については、 ドキュメントのAmazon Web Services 「 統合 アクセスの設定MongoDB Atlas 」 を参照してください。

権限が設定されたことで、Lambda 関数は Atlas クラスターにアクセスできるようになります。 Atlas エンドポイントを使用してアプリケーションを構成できます。

Atlas クラスターへのアクセスは、IP アドレスによっても制限されます。 IPから送信されるAmazon Web Services の範囲は非常に幅広い ため、あらゆる場所からのアクセスを許可できます。

注意

Atlas クラスターをインターネットから分離するために、 VPC ピアリング を使用することをお勧めします。 これには、 Lambda関数がこのAmazon Web Services VPCに配置されている必要があります。

Atlas UI Atlas > Deployment > Database > Connectで接続 URI を見つけます。 3. AWS IAMを選択します。 URI から<AWS access key>:<AWS secret key>部分を削除すると、環境変数から認証情報が読み取られます。

環境変数MONGODB_URIを渡すようにserverless.ymlファイルを更新します。

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

最後に、新しい構成で を配置します。 配置が完了すると、 関数 URL にアクセスして、Atlas クラスターの惑星リストを表示できます。

$ serverless deploy

戻る

サンプルデータ