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 檔案從 S3 儲存貯體讀取和寫入的 IAM 角色。此角色會授予 S3 檔案許可,以同步檔案系統和儲存貯體之間的變更,包括觸發同步的 Amazon EventBridge 規則。您也必須確保 S3 儲存貯體政策不會拒絕存取您的運算資源。

S3 檔案需要儲存貯體上的 S3 版本控制。除了 s3:GetObjectVersionTagging之外,它還使用版本特定的 API 操作,例如 s3:GetObjectVersions3:GetObject。下列政策使用萬用字元 (例如,s3:GetObject*而不是 s3:GetObject) 來涵蓋版本控制和非版本控制的動作。

注意

當您使用 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/*" ] } ] }

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

    #預留位置說明範例
    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 監控,也可以連接 AmazonElasticFileSystemsUtils受管政策。如需 S3 檔案可用受管政策的詳細資訊和完整清單,請參閱 AWS Amazon S3 檔案的受管政策。您也可以透過將 s3files:ClientMounts3files:ClientWrite(唯讀連線不需要) 等個別 IAM 許可新增至運算資源的 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 執行個體安全群組