bref / extra-php-extensions
为您的lambda应用程序提供额外的PHP扩展。
Requires (Dev)
- async-aws/core: ^1.7
- async-aws/lambda: ^1.1
- bref/logger: ^1.0
- mnapoli/silly: ^1.7
- mnapoli/silly-php-di: ^1.2
- php-di/php-di: ^6.3
- symfony/finder: ^5.2
- symfony/http-client: 5.3.8
- symfony/process: ^5.0
Conflicts
- bref/bref: <2.1.15
- dev-master
- 1.4.7
- 1.4.6
- 1.4.5
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.2
- 1.0.1
- 1.0.0
- 0.x-dev
- 0.12.4
- 0.12.3
- 0.12.2
- 0.12.1
- 0.12.0
- 0.11.35
- 0.11.34
- 0.11.33
- 0.11.32
- 0.11.31
- 0.11.30
- 0.11.29
- 0.11.28
- 0.11.27
- 0.11.26
- 0.11.25
- 0.11.24
- 0.11.23
- 0.11.22
- 0.11.21
- 0.11.20
- 0.11.19
- 0.11.18
- 0.11.17
- 0.11.16
- 0.11.15
- 0.11.14
- 0.11.13
- 0.11.12
- 0.11.11
- 0.11.10
- 0.11.9
- 0.11.8
- 0.11.7
- 0.11.6
- 0.11.5
- 0.11.4
- 0.11.3
- 0.11.2
- 0.11.1
- 0.11.0
- 0.10.10
- 0.10.9
- 0.10.8
- 0.10.7
- 0.10.6
- 0.10.5
- 0.10.4
- 0.10.3
- 0.10.2
- 0.10.1
- 0.10.0
- 0.9.7
- 0.9.6
- 0.9.5
- 0.9.4
- 0.9.3
- 0.9.2
- 0.9.1
- 0.9.0
- 0.8.1
- 0.8.0
- 0.7.3
- 0.7.2
- 0.7.1
- 0.7.0
- 0.6.4
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.3
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.1
- 0.2.0
- 0.1.0
- dev-blackfire-update
This package is auto-updated.
Last update: 2024-09-19 06:55:02 UTC
README
此存储库通过AWS Lambda层为Bref应用程序提供PHP扩展。
当您需要“现成的”东西时非常有用。如果您需要超过2-3层,则应考虑创建自己的层。这是因为AWS为每个Lambda限制为5层。您还可以利用提供的Docker镜像进行本地开发。
注意
如果您使用Bref v2,您需要使用
bref/extra-php-extensions
包的1.x
版本。如果您使用Bref v1,您需要使用
bref/extra-php-extensions
包的0.x
版本。
警告
Bref v2尚不支持ARM64。
我们很高兴接受其他扩展的贡献。只有天空是极限!(以及您的Docker知识...)
安装和配置
composer require bref/extra-php-extensions
# serverless.yml service: app provider: name: aws region: us-east-1 plugins: - ./vendor/bref/bref - ./vendor/bref/extra-php-extensions # <----- Add the extra Serverless plugin functions: console: handler: bin/console runtime: php-81 layers: - ${bref-extra:amqp-php-81} # <----- Example for AMQP layer
可用层
Blackfire安装
Blackfire层只安装了探针。
您仍然需要安装代理。代理安装在不同的服务器上(不是Lambda函数)。微型EC2实例足以运行Blackfire代理。
在php/conf.d/
中创建一个blackfire.ini
文件,用于您的lambda函数,其中加载扩展并修改agent_socket
以指向Blackfire代理。
;php/conf.d/blackfire.ini blackfire.agent_socket = tcp://ip-172-40-40-40.eu-central-1.compute.internal:8307 blackfire.agent_timeout = 0.25
您可能需要调整其他Blackfire参数。有关这些参数的更多信息,请参阅Blackfire文档。
然后修改您的代理配置,确保您正在监听tcp://0.0.0.0:8307
。
这篇博客文章可能很有帮助,因为它描述了如何安装Blackfire代理。
ODBC Snowflake设置
您需要在您的serverless.yaml
中设置环境变量ODBCSYSINI: /opt/snowflake_odbc/conf/
,以便告诉unixODBC加载Snowflake客户端的ini文件。
然后您可以像这样使用Snowflake:odbc_connect('DRIVER=SnowflakeDSIIDriver;Server=[name].snowflakecomputing.com;Account=;Schema=;Warehouse=;Database=;Role=', 'username', 'password')
。
有关驱动器ini配置的更多信息,请参阅Snowflake客户端文档,但默认配置在大多数情况下已足够。查看这些的最简单方法是下载snowflake_odbc
目录。
Symfony运行时
请参阅runtime/bref文档。
SQL Server设置
SQL Server层包括SQLSRV扩展和PDO_SQLSRV扩展(源代码)。如果您不确定使用哪个扩展,这篇Stackoverflow帖子可能很有帮助。您需要在您的serverless.yaml
中设置环境变量ODBCSYSINI: /opt/microsoft/conf/
,以便告诉unixODBC加载所需的ini文件。
新 relic
阅读 新 relic 教程。
datadog
阅读 datadog 教程。
Docker 镜像
每个层都有 Docker 镜像。每次向 master 推送以及每个 tag 都会更新。镜像的名称是 bref/extra-[name]-php-[version]
。在 Docker 仓库 中找到所有镜像。
这些是与创建层的相同 Docker 镜像。所有层文件都位于镜像中的 /opt
目录下。
本地开发
在本地开发时,您可以使用所需扩展构建自己的镜像。以下是用 PHP 8.2 和 MongoDB 扩展的示例
docker-compose.yml
php:
build:
context: .
dockerfile: Dockerfile-phpFpm
volumes:
- .:/var/task:ro
Dockerfile-phpFpm
FROM bref/php-82-fpm-dev:2
COPY --from=bref/extra-mongodb-php-82:1 /opt /opt
对于贡献者和维护者
创建新的层
思路是从 bref/build-php-XX 开始,安装所有想要的库和扩展,然后将所有相关文件移动到 /opt
。这些文件将在 Lambda 的相同位置可用。
注意,不能随意移动文件/库。其中大多数都期望在它们的“标准”位置。
- 在
layers
中创建一个新的文件夹,并以您的扩展名称命名。 - 添加您的 Dockerfile
- 在层目录的根目录下创建一个 config.json 文件,指定构建的 PHP 版本
- 创建一个 test.php 文件,其中包含一个小测试来确保扩展被加载
- 更新 README 中的表格
有关更多详细信息,请参阅 此处。
测试层
# Test all layers and PHP versions
make test
# Test only a single layer
layer=imagick make test
# Test a single layer on a single PHP version
layer=imagick php_versions=81 make test
您可以将层发布到您的 AWS 账户中,以在 AWS Lambda 中进行测试
# Publish a single layer on a single PHP version in a single region
layer=imagick php_versions=81 only_region=us-east-1 make publish
部署新版本
使用 Github actions
准备变更日志,包括一些发布说明。然后推送您的更改到 prepare-release
分支。Github Action 将构建和发布层,然后将 layers.json
提交到您的 PR。
现在您只需合并并创建一个标签。
手动方式
export AWS_PROFILE=my_profile
make publish
git add layers.json
git commit -m "New version of layers"
git push
配置
您还可以通过向 make
提供 layer=blackfire
来仅构建一个特定的层。同样,对于某些特定的 PHP 版本,您可以通过向 make
提供 php_versions="80 81"
来完成。您可以以两种方式调用它们。
# First way: make with named arguments make layer=gd php_versions=81 # Second way: environment variables passed to make layer=blackfire php_versions=81 make
Lambda 层的详细信息
注意:本节仅适用于您想了解更多信息的情况。
lambda 层遵循以下模式
arn:aws:lambda:<region>:403367587399:layer:<layer-name>:<layer-version>
查看 最新层版本。