winter/wn-driveraws-plugin

为 WinterCMS 添加 AWS SDK (S3、SQS 队列、DynamoDB、SES 邮件驱动) 支持的驱动器

资助包维护!
wintercms
Open Collective

安装次数: 11,640

依赖项: 1

建议者: 0

安全性: 0

星星: 2

关注者: 4

分支: 1

公开问题: 0

类型:winter-plugin

dev-main 2024-04-23 14:15 UTC

This package is auto-updated.

Last update: 2024-08-23 15:02:21 UTC


README

此插件可以通过 Composer 进行安装。

composer require winter/wn-driveraws-plugin

使用方法

简单地安装并启用此插件应该足以启用对各种 Winter / Laravel 核心功能(例如 s3 文件系统磁盘、sqs 队列、dynamodb 缓存、ses 邮件发送器等)的 AWS 驱动器支持。

此插件还提供了 AWS SDK 之外的一些附加功能,包括

作为邮件发送器的 SES 后端配置

默认情况下,您可以通过将 mail.mailers.* 选项配置为 ses 并在配置文件中提供 services.aws.keyservices.aws.secretservices.aws.region 配置值来设置 SES 作为邮件传输。此插件还提供了通过后端邮件设置表单配置这些值的能力。

S3 的流式文件上传

注意:此功能需要 Winter v1.2.1 或更高版本。

在处理大文件或无服务器应用程序基础设施时,支持客户端直接上传到 S3(即文件直接从浏览器上传到 S3,而不通过应用程序服务器)可能非常有用。此插件通过自动连接到 FileUpload、MediaManager、RichEditor 和 MarkdownEditor 小部件,并在其各自的磁盘配置设置为 s3stream_uploads 选项设置为 true 时提供直接上传到 S3 的能力。

以下是在 s3 磁盘配置上可设置的其他配置选项

's3' => [
    // Default options
    'bucket' => env('AWS_BUCKET'),
    'driver' => 's3',
    'endpoint' => env('AWS_ENDPOINT'),
    'key' => env('AWS_ACCESS_KEY_ID'),
    'region' => env('AWS_DEFAULT_REGION'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'stream_uploads' => env('AWS_S3_STREAM_UPLOADS', false),
    'url' => env('AWS_URL'),
    'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false)

    // Additional options used by the StreamS3Uploads functionality:
    // The lifespan of the signed URL in minutes
    'stream_uploads_ttl' => 5,
    // The max upload size of a single file in bytes, default 128 MB
    'stream_uploads_max_size' => 128 * 1024 * 1024,
],

注意:为了使用流上传功能,您的 AWS 凭证需要访问以下 S3 桶上的操作

  • s3:PutObject
  • s3:PutObjectAcl
  • s3:GetObject
  • s3:GetObjectAcl
  • s3:DeleteObject

以下是一个应该可以工作的 IAM 策略示例

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket-name-here"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket-name-here/*"
            ]
        }
    ]
}