craftcms / aws-s3
Craft CMS 的 Amazon S3 集成
Requires
- php: ^8.0.2
- craftcms/cms: ^4.0.0-beta.1|^5.0.0-beta.1
- craftcms/flysystem: ^1.0.0-beta.2|^2.0.0
- league/flysystem-aws-s3-v3: ^3.0.0
Requires (Dev)
- craftcms/ecs: dev-main
- craftcms/phpstan: dev-main
- craftcms/rector: dev-main
- 2.x-dev
- 2.2.1
- 2.2.0
- 2.1.0
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 2.0.0-beta.3
- 2.0.0-beta.2
- 2.0.0-beta.1
- v1.x-dev
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.15
- 1.2.14
- 1.2.13
- 1.2.12
- 1.2.11
- 1.2.10
- 1.2.9
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0.1
- dev-dependabot/npm_and_yarn/braces-3.0.3
- dev-dependabot/composer/composer/composer-2.7.7
- dev-fix-invalidations
- dev-fix-web-identity-check
This package is auto-updated.
Last update: 2024-08-24 23:20:44 UTC
README
为 Craft CMS 提供 Amazon S3
此插件为 Amazon S3 提供了与 Craft CMS 的集成。
要求
此插件需要 Craft CMS 4.0.0+ 或 5.0.0+。
安装
您可以从插件商店或使用 Composer 安装此插件。
从插件商店
转到项目控制面板中的插件商店,搜索“Amazon S3”,然后在弹出的模态窗口中点击“安装”。
使用 Composer
打开终端并运行以下命令
# go to the project directory cd /path/to/my-project.test # tell Composer to load the plugin composer require craftcms/aws-s3 # tell Craft to install the plugin ./craft plugin/install aws-s3
设置
要创建一个新的 Amazon S3 文件系统以用于您的卷,请访问“设置”→“文件系统”,然后点击“新建文件系统”。将“文件系统类型”设置为“Amazon S3”,并根据需要配置。
💡 基础 URL、访问密钥 ID、秘密访问密钥、存储桶、区域、子文件夹、CloudFront 分发 ID 和 CloudFront 路径前缀设置可以设置为环境变量。有关更多信息,请参阅 Craft 文档中的 环境配置。
AWS IAM 权限
设置此插件使用的 IAM 权限取决于您想要提供的选项。
通常,您可能需要一个 IAM 策略,授予以下操作在您将要使用的 资源(s) 上
s3:GetBucketLocation
s3:ListBucket
s3:PutObject
s3:GetObject
s3:DeleteObject
s3:GetObjectAcl
s3:PutObjectAcl
如果您想允许网站管理员列出并选择要使用的存储桶,您还必须将 s3:ListAllMyBuckets
权限添加到 arn:aws:s3:::
资源,并将 s3:GetBucketLocation
权限添加到特定的存储桶资源。请注意,如果存储桶缺少 s3:GetBucketLocation
权限,则它将不会出现在存储桶选择列表中。
如果您使用 Cloudfront 并希望 Craft 代表您使文件无效,您还需要以下权限
cloudfront:ListInvalidations
cloudfront:GetInvalidation
cloudfront:CreateInvalidation
一个典型的 IAM 策略,授予用户选择存储桶的权限,可以看起来像这样
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket",
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:GetObjectAcl",
"s3:PutObjectAcl",
"cloudfront:ListInvalidations",
"cloudfront:GetInvalidation",
"cloudfront:CreateInvalidation"
],
"Resource": [
"arn:aws:s3:::bucketname/*",
"arn:aws:cloudfront::accountid:distribution/distributionid"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::bucketname"
]
}
]
}
使用自动焦点检测
此插件可以使用 AWS Rekognition 服务检测图像中的面部并相应地自动设置焦点。这需要图像是 jpg 或 png 文件。您可以通过文件系统设置中的“尝试自动设置焦点?”启用此功能。
⚠️ 使用此功能将产生额外的费用,并需要允许
rekognition:DetectFaces
操作。
使用 OIDC 假设角色
此插件还具有使用环境变量AWS_WEB_IDENTITY_TOKEN_FILE
和AWS_ROLE_ARN
提供的角色假设运行时角色的能力。如果您没有向AWS提供凭证并且这些环境变量存在,则插件将尝试使用CredentialProvider::assumeRoleWithWebIdentityCredentialProvider
创建与AWS的连接。这是允许在Kubernetes中托管Craft CMS(例如)进行细粒度访问控制的理想方式。有关更多详细信息,请参阅AWS的IAM文档。
在ECS中运行的作业
此插件与ECS任务的IAM角色兼容,如果可用,将自动使用环境变量AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
。有关更多详细信息,请参阅AWS的IAM Roles for Tasks文档。