S3 Files 的先决条件
在开始使用 S3 Files 之前,请确保您已满足以下先决条件。
AWS 账户和计算设置
您已经有一个 AWS 账户。
在您想要创建文件系统的所需 AWS 区域中,您有一个计算资源和一个 S3 通用存储桶。有关更多信息,请参阅 创建通用存储桶。
您的 S3 存储桶已启用版本控制。S3 Files 需要使用 S3 版本控制,以便在文件系统和 S3 存储桶之间同步更改。有关更多信息,请参阅 在存储桶上启用版本控制。
S3 存储桶必须使用以下加密类型之一:具有 Amazon S3 托管式密钥的服务器端加密(SSE-S3)或具有 AWS Key Management Service(AWS KMS)密钥的服务器端加密(SSE-KMS)。
S3 Files 客户端
要将 S3 Files 与 Amazon EC2 结合使用,您必须安装客户端 amazon-efs-utils,这是一组用于 Amazon EFS 和 Amazon S3 Files 的共享开源工具。要使用 S3 Files,需要 amazon-efs-utils 版本 3.0.0 或更高版本。该客户端包括一个挂载助手程序,该程序可简化 S3 文件系统的挂载,并启用 Amazon CloudWatch 指标来监控文件系统的挂载状态。
步骤 1:安装客户端
通过 Secure Shell(SSH)访问您的 Amazon EC2 实例的终端,然后使用相应的用户名登录。有关更多信息,请参阅《Amazon Elastic Compute Cloud 用户指南》中的连接到您的 EC2 实例。
-
对于那些使用 Amazon Linux 的客户端,请执行以下操作从 Amazon 的存储库安装 efs-utils:
sudo yum -y install amazon-efs-utils -
如果您使用其它受支持的 Linux 发行版,则可以执行以下操作:
curl https://amazon-efs-utils.aws.com/efs-utils-installer.sh | sudo sh -s -- --install -
有关其它 Linux 发行版,请参阅 GitHub 上 amazon-efs-utils 自述文件中的 On other Linux distributions
。
步骤 2:安装 botocore
amazon-efs-utils 客户端使用 botocore 与其它 AWS 服务进行交互。例如,您需要安装 botocore 才能使用 Amazon CloudWatch 来监控文件系统。有关安装和升级 botocore 的说明,请参阅 GitHub 上 amazon-efs-utils 自述文件中的 Installing botocore
为 S3 Files 启用 FIPS 模式
如果您需要符合联邦信息处理标准(FIPS),则必须在客户端中启用 FIPS 模式。要启用 FIPS 模式,需要修改操作系统上的 s3files-utils.conf 文件。
按照以下步骤在客户端中为 S3 Files 启用 FIPS 模式:
使用所选的文本编辑器打开
/etc/amazon/efs/s3files-utils.conf文件。找到包含以下文本的行:
fips_mode_enabled = false将该文本更改为以下内容:
fips_mode_enabled = true保存更改。
IAM 角色和策略
要使用 S3 Files,您必须出于两个目的配置 IAM 角色和附加的策略:
从文件系统访问您的存储桶
将文件系统附加到 AWS 计算资源
用于从文件系统访问您的存储桶的 IAM 角色
创建 S3 文件系统时,必须指定 S3 Files 代入的 IAM 角色,以读取和写入您的 S3 存储桶。此角色支持 S3 Files 在您的文件系统和 S3 存储桶之间同步更改。该角色还授予管理 Amazon EventBridge 规则的权限,S3 Files 使用这些规则来检测 S3 存储桶中的更改并触发同步。您还必须确保源存储桶的存储桶策略不会拒绝来自计算资源的访问。
注意
当您使用 AWS 管理控制台创建文件系统时,S3 Files 将自动创建具有所需权限的此 IAM 角色。
此 IAM 角色需要以下各项:
-
内联策略,如下所示:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3BucketPermissions", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:ListBucketVersions" ], "Resource": "arn:aws:s3:::bucket", "Condition": { "StringEquals": { "aws:ResourceAccount": "accountId" } } }, { "Sid": "S3ObjectPermissions", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:DeleteObject*", "s3:GetObject*", "s3:List*", "s3:PutObject*" ], "Resource": "arn:aws:s3:::bucket/*", "Condition": { "StringEquals": { "aws:ResourceAccount": "accountId" } } }, { "Sid": "UseKmsKeyWithS3Files", "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Encrypt", "kms:Decrypt", "kms:ReEncryptFrom", "kms:ReEncryptTo" ], "Condition": { "StringLike": { "kms:ViaService": "s3.region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::bucket", "arn:aws:s3:::bucket/*" ] } }, "Resource": "arn:aws:kms:region:accountId:*" }, { "Sid": "EventBridgeManage", "Effect": "Allow", "Action": [ "events:DeleteRule", "events:DisableRule", "events:EnableRule", "events:PutRule", "events:PutTargets", "events:RemoveTargets" ], "Condition": { "StringEquals": { "events:ManagedBy": "elasticfilesystem.amazonaws.com" } }, "Resource": [ "arn:aws:events:*:*:rule/DO-NOT-DELETE-S3-Files*" ] }, { "Sid": "EventBridgeRead", "Effect": "Allow", "Action": [ "events:DescribeRule", "events:ListRuleNamesByTarget", "events:ListRules", "events:ListTargetsByRule" ], "Resource": [ "arn:aws:events:*:*:rule/*" ] } ] }将占位符值替换为您自己的值。
# Placeholder 说明 示例 1 存储桶:S3 存储桶的名称 my-bucket 2 region您的存储桶的 AWS 区域 us-east-1 3 accountId您的 AWS 账户 ID 123456789012 -
支持 S3 Files 代入 IAM 角色的信任策略。将下面的信任策略添加到 IAM 角色中,以支持 S3 Files 服务代入该角色。将
accountId和region替换为您的值。{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowS3FilesAssumeRole", "Effect": "Allow", "Principal": { "Service": "elasticfilesystem.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "accountId" }, "ArnLike": { "aws:SourceArn": "arn:aws:s3files:region:accountId:file-system/*" } } } ] }
用于将文件系统附加到 AWS 计算资源的 IAM 角色
您在其中挂载 S3 文件系统的计算资源必须附加了一个 IAM 角色(例如,EC2 实例配置文件),其策略可让您的计算资源与 S3 文件系统和源 S3 存储桶进行交互。您还必须确保源存储桶的存储桶策略不会拒绝来自计算资源的访问。
将以下两个策略添加到已附加到计算资源的 IAM 角色:
-
计算资源连接到 S3 文件系统并与之交互的权限
IAM 角色必须包括供挂载助手连接到 S3 文件系统并与之交互的权限。如果您想授予计算资源对 S3 文件系统的完全读写权限,或者授予
AmazonS3FilesClientReadOnlyAccess以获得只读访问权限,则可以附加 AWS 托管式策略,例如AmazonS3FilesClientFullAccess托管式策略。如果您想启用 Amazon CloudWatch 监控,也可以附加AmazonElasticFileSystemUtils托管式策略。有关更多信息和 S3 Files 的可用托管式策略的完整列表,请参阅 Amazon S3 Files 的 AWS 托管式策略。还可以通过向计算资源的 IAM 角色添加单独的 IAM 权限来提供这些权限,例如s3files:ClientMount或s3files:ClientWrite(对于只读连接则不需要)。 -
授予计算资源对 S3 对象的读取权限的内联策略
将下面的内联策略添加到 IAM 角色。此策略向计算资源授予直接从同一账户中关联的 S3 存储桶读取对象的权限,以优化读取性能。将
bucket替换为您的 S3 存储桶名称或带前缀的存储桶名称。{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ObjectReadAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::bucket/*" }, { "Sid": "S3BucketListAccess", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::bucket" } ] }
安全组
创建文件系统和挂载目标后,必须配置正确的安全组才能开始使用您的文件系统。计算资源和挂载目标上的安全组都必须支持所需的流量,如下表所示:
| 安全组 | 规则类型 | 协议 | 端口 | 源/目标 |
|---|---|---|---|---|
| EC2 实例 | 出站 | TCP | 2049 | 挂载目标安全组 |
| 挂载目标 | 入站 | TCP | 2049 | EC2 实例安全组 |