跳至內容

如何使用系統政策來控制 Amazon EFS 檔案系統的存取?

2 分的閱讀內容
0

我想要跨 AWS 帳戶存取 Amazon Elastic File System (Amazon EFS) 檔案系統,以便共用檔案。我想針對網路檔案系統 (NFS) 用戶端和 Amazon EFS 存取點使用 AWS Identity and Access Management (IAM) 授權。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

連線 VPC

使用 VPC 對等互連將 NFS 用戶端的虛擬私有雲端 (VPC) 與 EFS 檔案系統連線。或者,使用 Amazon Virtual Private Cloud (Amazon VPC) Transit Gateway。此連線可讓來自相同或不同帳戶的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體存取不同 VPC 中的 EFS 檔案系統。

授予存取和掛載跨帳戶 EFS 檔案系統的權限

若要授予存取和掛載跨帳戶 EFS 檔案系統的權限,請將下列陳述式新增至您的 IAM 政策:

{            "Sid": "EfsPermissions",
            "Effect": "Allow",
            "Action": [
                "elasticfilesystem:ClientMount",
                "elasticfilesystem:ClientWrite",
                "elasticfilesystem:ClientRootAccess"
            ],
            "Resource": "arn:aws:elasticfilesystem:region:account-id:file-system/file-system-id"
        }

**注意:**上述範例陳述式允許 IAM 角色在 EFS 檔案系統上擁有掛載、寫入和根存取權限。如果您的 NFS 用戶端是 EC2 執行個體,則將 IAM 角色附加到該執行個體

或者,使用 AWS CLI 承擔 IAM 角色

**注意:**AWS CLI 無法解析位於另一個 VPC 中的 EFS 檔案系統的 DNS。因此,您必須為用戶端確定正確的掛載目標 IP 位址。然後,設定用戶端。若要掛載 EFS 檔案系統,請使用位於與 NFS 用戶端相同的可用區域中的掛載目標 IP 位址。可用區域名稱對應可能會因帳戶而異。當您在另一個帳戶中掛載 EFS 檔案系統時,NFS 用戶端和掛載目標必須位於相同可用區域。

確定執行個體的可用區域

請完成下列步驟:

  1. 開啟 Amazon EC2 主控台
  2. 選擇 Instances (執行個體)。
  3. 選取您的執行個體,然後選擇 Networking (網路)。
  4. Networking details (網路詳細資訊) 下,找到可用區域。

或者,從對 Amazon EC2 具有足夠讀取權限的 IAM 實體,執行以下 describe-availability-zones AWS CLI 命令:

aws ec2 describe-availability-zones --zone-name `curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone`

輸出範例:

{
    "AvailabilityZones": [
        {
            "State": "available",
            "ZoneName": "us-east-2b",
            "Messages": [],
            "ZoneId": "use2-az2",
            "RegionName": "us-east-2"
        }
    ]
}

確定本機可用區域的掛載目標 IP 位址

請完成下列步驟:

  1. 開啟 Amazon EFS 主控台
  2. 選擇 File Systems (檔案系統)。
  3. 選取您的檔案系統。
  4. Network (網路) 下,記下可用區域的 IP 位址。

或者,從對 Amazon EC2 具有足夠讀取權限的 IAM 實體執行以下 describe-mount-targets 命令:

aws efs describe-mount-targets --file-system-id fs-cee4feb7

**注意:**將 fs-cee4feb7 替換為您的檔案系統 ID。

在命令的輸出中,記下與執行個體可用區域中的掛載目標對應的 IP 位址。輸出範例:

aws efs describe-mount-targets --file-system-id fs-cee4feb7{
    "MountTargets": [
        {
            "MountTargetId": "fsmt-a9c3a1d0",
            "AvailabilityZoneId": "use2-az2",
            "NetworkInterfaceId": "eni-048c09a306023eeec",
            "AvailabilityZoneName": "us-east-2b",
            "FileSystemId": "fs-cee4feb7",
            "LifeCycleState": "available",
            "SubnetId": "subnet-06eb0da37ee82a64f",
            "OwnerId": "958322738406",
            "IpAddress": "10.0.2.153"
        },
...
        {
            "MountTargetId": "fsmt-b7c3a1ce",
            "AvailabilityZoneId": "use2-az3",
            "NetworkInterfaceId": "eni-0edb579d21ed39261",
            "AvailabilityZoneName": "us-east-2c",
            "FileSystemId": "fs-cee4feb7",
            "LifeCycleState": "available",
            "SubnetId": "subnet-0ee85556822c441af",
            "OwnerId": "958322738406",
            "IpAddress": "10.0.3.107"
        }
    ]
}

掛載 EFS 檔案系統

請完成下列步驟:

  1. 執行下列命令,將主機項目新增至 NFS 用戶端中的 /etc/hosts 檔案:
    echo "10.0.2.153 fs-cee4feb7.efs.us-east-2.amazonaws.com" | sudo tee -a /etc/hosts
    **注意:**將 10.0.2.153 替換為您的掛載目標 IP 位址,將 fs-cee4feb7 替換為您的檔案系統 ID,並將 us-east-2 替換為您的 AWS 區域。
  2. 使用掛載助手掛載 EFS 檔案系統。預設情況下,掛載助理會使用 DNS 來解析掛載目標的 IP 位址。如果從其他帳戶或 Amazon VPC 掛載,則必須手動解析 Amazon EFS 掛載目標 IP 位址。

如果您在掛載檔案系統時遇到問題,請參閱掛載問題疑難排解

相關資訊

建立檔案系統政策

AWS 官方已更新 7 個月前