View a markdown version of this page

S3 檔案的先決條件 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

S3 檔案的先決條件

開始使用 S3 檔案之前,請確定您已完成下列先決條件。

AWS 帳戶和運算設定

  • 您有 AWS 帳戶。

  • 在您要建立檔案系統的所需 AWS 區域中,您擁有運算資源和 S3 一般用途儲存貯體。如需詳細資訊,請參閱建立一般用途儲存貯體

  • 您的 S3 儲存貯體已啟用版本控制。S3 檔案需要 S3 版本控制,才能同步檔案系統和 S3 儲存貯體之間的變更。如需詳細資訊,請參閱在儲存貯體上啟用版本控制

  • 您的 S3 儲存貯體必須使用下列其中一種加密類型:使用 Amazon S3 受管金鑰 (SSE-S3) 進行伺服器端加密,或使用 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 進行伺服器端加密。

S3 檔案用戶端

若要搭配 Amazon EC2 使用 S3 檔案,您必須安裝用戶端 amazon-efs-utils,這是 Amazon EFS 和 Amazon S3 檔案的共用開放原始碼工具集合。若要使用 S3 檔案,您需要 3amazon-efs-utils.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 README 中的其他 Linux 發行版本

步驟 2:安裝 botocore

amazon-efs-utils 用戶端使用 botocore 與其他 AWS 服務互動。例如,您需要安裝 botocore,才能使用 Amazon CloudWatch 監控您的檔案系統。如需安裝和升級 botocore 的說明,請參閱 GitHub 上 amazon-efs-utils README 中的安裝 botocore

啟用 S3 檔案的 FIPS 模式

如果您需要遵守聯邦資訊處理標準 (FIPS),則必須在用戶端中啟用 FIPS 模式。啟用 FIPS 模式需要修改作業系統上的 s3files-utils.conf 檔案。

請依照下列步驟,在用戶端中為 S3 檔案啟用 FIPS 模式:

  1. 使用您選擇的文字編輯器,開啟 /etc/amazon/efs/s3files-utils.conf 檔案。

  2. 尋找包含下列文字的行:

    fips_mode_enabled = false
  3. 將文字變更為下列內容:

    fips_mode_enabled = true
  4. 儲存您的變更。

(IAM) 角色和政策

若要使用 S3 檔案,您必須將 IAM 角色和連接的政策設定為兩種用途:

  • 從檔案系統存取您的儲存貯體

  • 將檔案系統連接至 AWS 運算資源

從檔案系統存取儲存貯體的 IAM 角色

建立 S3 檔案系統時,您必須指定 S3 檔案擔任的 IAM 角色,以讀取和寫入 S3 儲存貯體。此角色允許 S3 檔案同步檔案系統和 S3 儲存貯體之間的變更。此角色也會授予許可,以管理 S3 檔案用來偵測 S3 儲存貯體中變更和觸發同步的 Amazon EventBridge 規則。您也必須確保來源儲存貯體的儲存貯體政策不會拒絕從運算資源存取。

注意

當您使用 AWS 管理主控台建立檔案系統時,S3 檔案會自動建立此具有必要許可的 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/*" ] } ] }

    將預留位置值取代為您自己的值。

    #預留位置Description範例
    1bucketS3 儲存貯體的名稱my-bucket
    2region儲存貯體 AWS 的區域us-east-1
    3accountId AWS 您的帳戶 ID123456789012
  • 允許 S3 檔案擔任 IAM 角色的信任政策。將下列信任政策新增至 IAM 角色,以允許 S3 Files 服務擔任該角色。將 accountId區域取代為您的值。

    { "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將 授予唯讀存取權,您可以連接 AmazonS3FilesClientFullAccess 受管 AWS 政策,例如 受管政策。如果您想要啟用 Amazon CloudWatch 監控,也可以連接 AmazonElasticFileSystemUtils受管政策。如需 S3 檔案可用受管政策的詳細資訊和完整清單,請參閱 AWS Amazon S3 檔案的受管政策。您也可以將 s3files:ClientMount或 等個別 IAM 許可 s3files:ClientWrite(唯讀連線不需要) 新增至運算資源的 IAM 角色,以提供這些許可。

  • 將運算資源讀取存取權授予 S3 物件的內嵌政策

    將下列內嵌政策新增至 IAM 角色。此政策授予運算資源許可,以直接從相同帳戶中連結的 S3 儲存貯體讀取物件,以最佳化讀取效能。以 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" } ] }

Security groups (安全群組)

建立檔案系統和掛載目標後,您必須設定正確的安全群組以開始使用檔案系統。運算資源和掛載目標上的安全群組必須允許所需的流量,如下表所示:

安全群組 規則類型 通訊協定 站點 來源/目的地
EC2 執行個體 傳出 TCP 2049 掛載目標安全群組
掛載目標 傳入 TCP 2049 EC2 執行個體安全群組