IAM 권한 부여 및 EFS 액세스 포인트를 사용하여 여러 계정에서 내 EFS 파일 시스템에 액세스하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 2월 12일

파일을 공유할 수 있도록 여러 계정에서 Amazon Elastic File System(Amazon EFS) 파일 시스템에 액세스하려면 어떻게 해야 합니까? NFS 클라이언트용 AWS Identity and Access Management(IAM) 권한 부여EFS 액세스 포인트를 사용하여 이 작업을 수행하려면 어떻게 해야 합니까?

간략한 설명

Amazon EFS 탑재 헬퍼와 함께 NFS 클라이언트용 IAM 권한 부여 및 EFS 액세스 포인트를 사용하여 Amazon EFS 파일 시스템을 탑재할 수 있습니다. 기본적으로 탑재 헬퍼는 DNS를 사용하여 탑재 대상의 IP 주소를 확인하므로 다른 계정 또는 VPC에서 탑재하는 경우 EFS 탑재 대상 IP를 수동으로 확인해야 합니다.

사전 조건

NFS 클라이언트의 Amazon Virtual Private Cloud(Amazon VPC)와 Amazon EFS 파일 시스템의 VPC가 VPC 피어링 연결 또는 VPC Transit Gateway를 사용하여 연결되어 있어야 합니다. VPC 피어링 연결 또는 Transit Gateway를 사용하여 VPC를 연결하면 동일한 계정 또는 다른 계정의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스가 다른 VPC에 있는 Amazon EFS 파일 시스템에 액세스할 수 있습니다.

​해결 방법

클라이언트에 사용할 올바른 탑재 대상 IP를 확인한 다음, 해당 IP를 사용하여 Amazon EFS 파일 시스템을 탑재하도록 클라이언트를 구성하십시오.

1.    EFS 탑재 대상 IP를 확인하십시오.

고가용성을 보장하기 위해 항상 NFS 클라이언트와 동일한 가용 영역에 있는 탑재 대상 IP 주소를 사용하는 것이 좋습니다. 가용 영역 이름 매핑은 계정마다 다를 수 있습니다. 다른 계정에 Amazon EFS 파일 시스템을 탑재하는 경우, DescribeAvailabilityZonesDescribeMountTargets를 모두 호출하여 NFS 클라이언트와 탑재 대상이 동일한 가용 영역 ID(AZ ID)에 있는지 확인하십시오. 동일한 계정에 있는 경우, AmazonElasticFileSystemReadOnlyAccess 관리형 정책이 연결되어 있는 IAM 역할에서 이 두 가지를 모두 호출하십시오. 다른 계정에 있는 경우, 파일 시스템 IAM 리소스 정책을 사용하여 보안 주체 ARN을 사용하는 교차 계정 역할에 DescribeMountTargets 권한을 부여하십시오.

로컬 인스턴스의 가용 영역 이름을 사용하여 DescribeAvailabilityZones를 호출해 AZ ID를 확인하십시오.

[ec2-user@ip-172-30-2-10 ~]$ 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"
        }
    ]
}

위의 예제에서 인스턴스는 AZ ID use2-az2에 있습니다.

파일 시스템에서 DescribeMountTargets를 호출하여 로컬 AZ 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"
        }
    ]
}

위의 예제 출력에서 AZ ID use2-as2에는 IP가 10.0.2.153인 탑재 대상이 있습니다.

2.    탑재 대상 IP에 대한 호스트 항목을 추가하십시오.

클라이언트의 /etc/hosts 파일에 mount-target-IP-Address file-system-ID.efs.region.amazonaws.com 형식의 행을 추가하십시오.

echo "10.0.2.153 fs-cee4feb7.efs.us-east-2.amazonaws.com" | sudo tee -a /etc/hosts

3.    파일 시스템을 탑재하십시오.

탑재 헬퍼를 사용하여 파일 시스템을 탑재하십시오. 먼저 탑재 헬퍼가 설치되어 있는지 확인하고 탑재할 디렉터리를 생성한 후 탑재하십시오. 아래 예제에서는 Amazon Linux를 실행하는 호스트에 탑재 헬퍼를 설치하고 디렉터리를 생성한 후 IAM 자격 증명을 사용하여 탑재를 수행합니다.

sudo yum install -y amazon-efs-utils
sudo mkdir /efs/
sudo mount -t efs -o tls,iam fs-cee4feb7 /efs/

다음 예제에서는 액세스 포인트를 사용하여 파일 시스템을 탑재합니다.

sudo yum install -y amazon-efs-utils
sudo mkdir /efs/
sudo mount -t efs -o tls,iam,accesspoint=fsap-0b370416e358edbfd fs-cee4feb7 /efs/

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?