Docs Menu

Bref를 사용하여 Amazon Web Services Lambda 에 배포

이 가이드 에서는 Bref 를 사용하여 서버리스 PHP 애플리케이션을 Amazon Web Services Lambda 에 배포 방법을 학습 수 있습니다. 이 가이드 PHP 라이브러리를 사용하여 구축된 PHP 애플리케이션 배포 하고 Amazon Web Services IAM 인증 사용하여 Atlas cluster 에 연결하는 방법을 설명합니다.

Bref를 사용하여 Amazon Web Services Lambda 에 배포 하려면 먼저 다음 구성 요소를 설정하다 해야 합니다.

Bref 문서의 설정 튜토리얼에서는 이러한 구성 요소를 준비하는 방법을 설명합니다.

Bref는 Lambda 계층 을 사용하여 PHP 런타임을 제공합니다. bref 계층은 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: 배포서버 구성합니다.

프로젝트 초기화한 후 mongodb 확장자를 추가할 수 있습니다. Serverless config bref/extra-php-extension 패키지 에서 제공하는 확장 목록에서 이름을 찾습니다. 다음 코드와 같이 serverless.yaml 파일 에 있는 함수의 layers 에 추가합니다.

plugins:
- ./vendor/bref/bref
- ./vendor/bref/extra-php-extensions # Adds the extra Serverless plugin
functions:
api:
handler: index.php
runtime: php-83-fpm
layers:
- ${bref-extra:mongodb-php-81} # Adds the MongoDB layer

index.php 의 내용을 다음 코드로 바꿔서 Atlas 샘플 데이터 의 행성을 나열하는 웹 페이지를 만듭니다.

<?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>

작업 찾기

앞의 코드는 MongoDB\Collection::find() 메서드를 사용하여 문서를 조회 . 이 메서드에 대해 자세히 학습 데이터 조회 가이드 참조하세요.

Atlas Amazon Web Services 자격 증명 사용할 때 암호 없는 인증 지원합니다. 모든 Lambda 함수에서 Amazon Web Services 함수 배포 위해 할당된 역할 에 대한 액세스 토큰과 비밀 토큰이 포함된 환경 변수를 설정합니다.

다음 단계는 Atlas cluster 에서 역할 설정하다 방법을 보여줍니다.

  1. Amazon Web Services 콘솔에서 Lambda 함수를 엽니다.

  2. Configuration > Permission로 이동한 다음 Role name를 복사합니다.

  3. 이 역할 Atlas cluster 의 Database Access 섹션에 추가하세요. AWS IAM 인증 방법을 선택하고 내장 역할 Read and write any database를 설정하다 .

통합 Amazon Web Services 액세스 설정하다 방법을 학습 Atlas 설명서에서 통합 Amazon Web Services 액세스 설정 을 참조하세요.

권한을 구성한 후에는 Lambda 함수가 Atlas cluster 에 액세스 할 수 있습니다. 다음으로, Atlas 엔드포인트를 사용하도록 애플리케이션 구성합니다.

Atlas 클러스터에 대한 액세스도 IP 주소 로 제한됩니다. Amazon Web Services 에서 제공하는 IP 주소의 범위 매우 넓기 때문에 어디에서든 액세스 허용할 수 있습니다. 범용 액세스 허용하는 방법을 학습 Atlas 설명서에서 IP 액세스 목록 항목 구성을 참조하세요.

참고

Atlas cluster 인터넷에서 격리하려면 가상 사설 클라우드( VPC) 피어링 사용하는 것이 좋습니다. 이를 위해서는 Amazon Web Services VPC 에 Lambda 함수를 배포해야 합니다. 자세히 학습 Atlas 설명서에서 네트워크 피어링 연결 설정을 참조하세요.

그런 다음 환경 변수에서 자격 증명 읽을 때 연결 문자열 복사하고 <AWS access key>:<AWS secret key> 섹션을 제거 .

프로젝트의 serverless.yml 파일 에서 MONGODB_URI 환경 변수를 연결 문자열 로 설정하다 .

provider:
environment:
MONGODB_URI: "<connection string without credentials>"

MONGODB-AWS 인증 메커니즘 사용에 대해 자세히 학습 인증 메커니즘 가이드 의 MONGODB-AWS 섹션을 참조하세요.

마지막으로 애플리케이션 배포 .

serverless deploy

배포서버 완료되면 URL 액세스 하여 컬렉션 의 행성 목록을 볼 수 있습니다.