ssigwart/lambda-php

AWS Lambda 的 PHP 运行时。

v1.0.1 2021-10-23 02:15 UTC

This package is auto-updated.

Last update: 2024-09-23 08:38:37 UTC


README

cd scripts
./buildRuntime.sh

编写 Lambda 处理程序

  1. 编写一个实现了 ssigwart\LambdaRuntime\LambdaHandlerInterface 接口的类。
  2. 编写一个 bootstrap.php 文件,调用 \LambdaRuntimeBootstrap\RuntimeBootstrap::setHandler() 来设置您的处理程序。
    • 此文件可以执行额外的工作,例如设置自动加载。
  3. 将您的文件放在 handler/your_handler_name 目录中,压缩并上传到 Lambda。
    • 确保 Lambda 中配置的处理程序名称与 your_handler_name 匹配。

示例处理程序

<?php

use ssigwart\LambdaRuntime\LambdaHandlerInterface;

/** Simple lamdba handler */
class MyHandler implements LambdaHandlerInterface
{
	/**
	 * Handle request
	 *
	 * @param string $invocationId Invocation ID
	 * @param string $payload Payload (typically JSON)
	 *
	 * @return string Response
	 */
	public function handleRequest(string $invocationId, string $payload): string
	{
		return 'Invocation ' . $invocationId . ' with payload: ' . $payload;
	}
}

// Set handler
\LambdaRuntimeBootstrap\RuntimeBootstrap::setHandler(new MyHandler());

管理 Lambda 层

上传一个层

  • runtime.zip 添加到 S3 桶
  • 将层上传到 lambda
     aws --profile=YOUR_PROFILE lambda publish-layer-version --layer-name YOUR_LAYER_NAME --description "PHP 8.0 runtime." --content S3Bucket=YOUR_BUCKET,S3Key=YOUR_S3_PATH/runtime.zip
  • 保存 ARN 并用它来添加到 lambda

在 Lambda 函数上设置层

aws --profile=YOUR_PROFILE lambda update-function-configuration --function-name YOUR_FUNCTION --layers arn:aws:lambda:us-east-1:635144173025:layer:YOUR_LAYER_NAME:1

删除一个层

aws --profile=YOUR_PROFILE lambda delete-layer-version --layer-name=YOUR_LAYER_NAME --version-number=1

列出层

aws --profile=YOUR_PROFILE lambda list-layers
aws --profile=YOUR_PROFILE lambda list-layer-versions --layer-name=YOUR_LAYER_NAME