

# Amazon EC2에 S3 파일 시스템 탑재
<a name="s3-files-mounting"></a>

EC2 인스턴스에 S3 파일 시스템을 탑재하려면 S3 Files 탑재 도우미를 사용해야 합니다. 탑재 도우미를 사용하면 지원되는 배포판이 실행되는 EC2 인스턴스에 S3 파일 시스템을 탑재할 수 있습니다. 파일 시스템을 탑재할 때 탑재 도우미는 Linux의 표준 `mount` 명령과 완전히 호환되는 `s3files`라는 새로운 네트워크 파일 시스템 유형을 정의합니다. 또한 탑재 도우미는 EC2 Linux 인스턴스에 있는 `/etc/fstab` 구성 파일의 항목을 사용해 자동으로 인스턴스 부팅 시 인스턴스에 S3 파일 시스템을 탑재하는 것을 지원합니다. 탑재 도우미는 S3 Files 클라이언트(amazon-efs-utils)를 설치할 때 설치되는 오픈 소스 도구 모음의 일부입니다.

![S3 버킷, S3 파일 시스템 및 Amazon EC2 인스턴스 간의 데이터 흐름을 보여 주는 다이어그램입니다.](http://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/images/S3Files_EC2_dataflow.png)


## EC2 인스턴스에 탑재하기 위한 사전 조건
<a name="s3-files-mounting-prereqs"></a>
+ 하나 이상의 탑재 대상을 사용할 수 있는 S3 파일 시스템이 있습니다.
+ EC2 인스턴스는 파일 시스템을 탑재하는 데 사용할 탑재 대상과 동일한 가용 영역에 있습니다.
+ IAM 인스턴스 프로파일은 S3 Files에 필요한 권한이 있는 EC2 인스턴스에 연결됩니다. 자세한 내용은 [파일 시스템을 AWS 컴퓨팅 리소스에 연결하기 위한 IAM 역할](s3-files-prereq-policies.md#s3-files-prereq-iam-compute-role)을 참조하세요.
+ 필요한 [보안 그룹](s3-files-prereq-policies.md#s3-files-prereq-security-groups)을 구성했습니다.
+ EC2 인스턴스에 amazon-efs-utils 패키지를 설치해야 합니다. 자세한 내용은 [S3 Files 클라이언트](s3-files-prereq-policies.md#s3-files-prereq-client) 섹션을 참조하세요.

## 탑재 도우미는 어떻게 작동하나요?
<a name="s3-files-mounting-how-it-works"></a>

탑재 명령을 실행하면 탑재 도우미가 다음 작업을 수행합니다.
+ EC2 인스턴스 프로파일에서 IAM 자격 증명을 검색합니다.
+ efs-proxy 프로세스를 초기화하여 탑재 대상에 대한 TLS 암호화 연결을 설정합니다.
+ TLS 탑재 상태를 모니터링하는 amazon-efs-mount-watchdog 감독자 프로세스를 시작합니다. 이 프로세스는 S3 파일 시스템을 처음 탑재할 때 자동으로 시작됩니다.
+ 지정된 탑재 지점에 파일 시스템을 탑재합니다.

탑재 도우미는 TLS 버전 1.2를 사용해 파일 시스템과 통신합니다. TLS를 사용하기 위해서는 인증서가 필요하며, 신뢰할 수 있는 Amazon 인증 기관이 서명한 인증서여야 합니다. 암호화 작동 방식에 대한 자세한 내용은 [S3 Files의 보안](s3-files-security.md) 섹션을 참조하세요.

탑재 도우미는 S3 Files에 최적화된 다음과 같은 탑재 옵션을 사용합니다.


| 옵션 | 값 | 설명 | 
| --- | --- | --- | 
| nfsvers | 4.2 | NFS 프로토콜 버전. | 
| rsize | 1048576 | NFS 클라이언트가 원하지 않는 성능 저하를 방지하기 위해 가능한 가장 큰 1048576(1MB)에 대한 각 네트워크 READ 요청에 대해 수신할 수 있는 최대 데이터 바이트 수를 설정합니다. | 
| wsize | 1048576 | NFS 클라이언트가 원하지 않는 성능 저하를 방지하기 위해 가능한 가장 큰 1048576(1MB)에 대한 각 네트워크 WRITE 요청에 대해 송신할 수 있는 최대 데이터 바이트 수를 설정합니다. | 
| hard | — | NFS 요청 시간이 초과된 후에는 NFS 클라이언트의 복구 동작을 설정하여 데이터 무결성을 확인하기 위하여 서버가 응답할 때까지 NFS 요청을 무기한 재시도합니다. | 
| timeo | 600 | NFS 클라이언트가 600데시초(60초) 후에 재시도하기 전에 데이터 무결성을 확인하기 위하여 NFS 클라이언트가 응답을 기다리는 데 사용하는 시간 초과 값을 설정합니다. | 
| retrans | 2 | NFS 클라이언트가 추가 복구 작업을 시도하기 전에 요청을 재시도하는 횟수를 2로 설정합니다. | 
| noresvport | — | 네트워크 연결이 다시 설정될 때 NFS 클라이언트가 새로운 권한 없는 TCP 소스 포트를 사용하도록 지시합니다. 이 noresvport 옵션을 사용하면 재연결 또는 네트워크 복구 이벤트 후에도 파일 시스템을 중단 없이 사용할 수 있습니다. | 

또한 탑재 도우미는 S3 파일 시스템을 S3 Files로 탑재할 때 `tls` 및 `iam` 탑재 옵션을 자동으로 사용합니다. 연결을 설정하려면 이러한 옵션이 필요합니다. 이는 S3 Files가 항상 TLS 암호화 및 IAM 인증을 사용하여 파일 시스템을 탑재하므로 비활성화할 수 없기 때문입니다.

## EC2 인스턴스에 S3 파일 시스템을 탑재하는 방법은 무엇인가요?
<a name="s3-files-mounting-steps"></a>
+ Secure Shell(SSH) 또는 EC2 콘솔의 EC2 Instance Connect를 통해 EC2 인스턴스에 연결합니다. 자세한 내용은 [EC2 인스턴스에 연결](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect.html)을 참조하세요.
+ 다음 명령을 사용하여 파일 시스템 탑재 지점으로 사용할 디렉터리 `/mnt/s3files`를 생성합니다.

  ```
  sudo mkdir /mnt/s3files
  ```
+ S3 파일 시스템 탑재:

  ```
  FS="{{{YOUR_FILE_SYSTEM_ID}}}"
  sudo mount -t s3files $FS:/ /mnt/s3files
  ```
+ 파일 시스템이 탑재되었는지 확인합니다.

  ```
  df -h /mnt/s3files
  ```

  다음과 유사한 응답이 나타납니다.

  ```
  Filesystem      Size  Used Avail Use% Mounted on
  {{{s3files-dns}}}    8.0E  129M  8.0E   1% {{{path/to/mount}}}
  ```

  로컬 탑재 지점의 콘텐츠를 나열하여 파일 시스템 탑재를 확인하고 탑재 옵션을 검사할 수도 있습니다. 탑재에 성공하면 이 명령은 특정 디렉터리에 대한 탑재 옵션을 포함한 탑재 세부 정보를 표시합니다.

  ```
  findmnt -T /mnt/s3files
  ```

탑재 명령에 대한 자세한 내용은 [GitHub 설명서](https://github.com/aws/efs-utils/blob/master/README.md#mountefs)를 참조하세요.

이제 표준 파일 시스템 작업을 사용하여 로컬 탑재 경로에서 S3 객체를 파일로 읽고 쓸 수 있습니다. S3 버킷에 객체가 있는 경우 다음 명령을 사용하여 해당 객체를 파일로 볼 수 있습니다.

```
ls /mnt/s3files
```

[CloudWatch 지표](s3-files-monitoring-cloudwatch.md)를 사용하여 파일 시스템 스토리지, 성능, 클라이언트 연결 및 동기화 오류를 모니터링할 수 있습니다.

## 액세스 포인트를 사용하여 EC2 인스턴스에 S3 파일 시스템을 탑재하는 방법
<a name="s3-files-mounting-access-points-inline"></a>

액세스 포인트를 사용하여 파일 시스템을 탑재할 때 탑재 명령에는 `access-point-id` 탑재 옵션이 포함됩니다.

```
sudo mount -t s3files -o accesspoint={{access-point-id}} {{file-system-id}} /mnt/s3files
```

여기서 각 항목은 다음과 같습니다.
+ {{access-point-id}}는 액세스 포인트의 ID입니다.
+ {{file-system-id}}는 S3 파일 시스템의 ID입니다.

## EC2 인스턴스가 시작될 때 S3 파일 시스템 자동 탑재
<a name="s3-files-mounting-auto"></a>

`/etc/fstab` 파일을 업데이트하여 인스턴스가 시작되거나 다시 시작될 때 S3 파일 시스템을 자동으로 탑재하도록 EC2 인스턴스를 구성할 수 있습니다. `/etc/fstab` 파일에는 파일 시스템에 대한 정보가 포함되어 있으며 운영 체제에서 부팅 시 탑재할 파일 시스템을 결정하는 데 사용됩니다.

**주의**  
파일 시스템을 자동으로 마운트하는 경우 네트워크 파일 시스템 식별에 사용하는 `_netdev` 옵션을 사용합니다. `_netdev`이 빠진 경우 EC2 인스턴스가 응답을 중지합니다. 컴퓨팅 인스턴스가 네트워킹을 시작한 후 네트워크 파일 시스템의 초기화를 완료해야 하기 때문입니다. 자세한 내용은 [자동 마운팅 실패 및 인스턴스 응답 없음](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/builtInFS-fstab-issues.html)을 참조하세요.

탑재 도우미를 사용하면 Amazon EC2 인스턴스가 시작될 때 S3 파일 시스템을 자동으로 탑재하도록 구성할 수 있습니다.
+ S3 파일 시스템에 대한 항목으로 EC2 `/etc/fstab` 파일을 업데이트합니다.
+ EC2 인스턴스 시작 마법사를 사용하여 새 EC2 인스턴스를 생성할 때 S3 파일 시스템을 연결합니다.

### /etc/fstab 파일 업데이트
<a name="s3-files-mounting-auto-fstab"></a>

인스턴스가 다시 시작될 때 인스턴스가 탑재 도우미를 사용하여 S3 Files 파일 시스템을 자동으로 다시 탑재하도록 EC2 Linux 인스턴스에서 `/etc/fstab`를 수동으로 업데이트하려면 다음 단계를 수행합니다.
+ [EC2 인스턴스에 연결합니다](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect.html).
+ 에디터에서 `/etc/fstab` 파일을 열고 다음 줄을 추가합니다.

  ```
  {{file-system-id}}:/ {{mount-directory}} s3files _netdev 0 0
  ```

  위치:
  + {{file-system-id}}는 S3 파일 시스템의 ID입니다(예: `fs-0123456789abcdef0`).
  + {{mount-directory}}는 EC2 인스턴스의 탑재 지점 디렉터리입니다(예: `/mnt/s3files`).
  + `_netdev`는 파일 시스템이 네트워크 파일 시스템임을 지정하여 인스턴스가 탑재를 시도하기 전에 네트워크 가용성을 대기하도록 합니다.
+ 파일을 저장하고 편집기를 닫습니다.
+ 모든 파일 시스템을 fstab에 탑재하여 fstab 항목을 테스트합니다.

  ```
  sudo mount -a
  ```
+ 파일 시스템이 탑재되었는지 확인:

  ```
  findmnt -T {{mount-directory}}
  ```

**nofail 옵션 사용**

프로덕션 환경의 fstab 항목에 `nofail` 옵션을 추가하는 것이 좋습니다. 이 옵션을 사용하면 파일 시스템이 탑재되지 않더라도 인스턴스를 부팅할 수 있습니다.

```
{{file-system-id}}:/ {{mount-directory}} s3files _netdev,nofail 0 0
```

**액세스 포인트를 사용한 자동 탑재**

S3 Files 액세스 포인트를 사용하여 자동으로 탑재하려면 `accesspoint` 옵션을 포함합니다.

```
{{file-system-id}}:/ {{mount-directory}} s3files _netdev,accesspoint={{access-point-id}} 0 0
```

**하위 디렉터리를 사용한 자동 탑재**

파일 시스템의 특정 하위 디렉터리를 자동으로 탑재하려면 경로를 지정합니다.

```
{{file-system-id}}:/path/to/directory {{mount-directory}} s3files _netdev 0 0
```

### EC2 인스턴스 시작 마법사 사용
<a name="s3-files-mounting-auto-wizard"></a>
+ [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.
+ **인스턴스 시작**을 선택합니다.
+ 이 설명서에 따라 AWS 콘솔에서 인스턴스 시작 마법사를 사용하여 EC2 인스턴스를 시작합니다. **인스턴스 시작**을 선택하기 전에 다음 단계와 같이 네트워크를 구성하고 S3 파일 시스템을 추가합니다.
+ **네트워크 설정**에서 서브넷을 선택해야 합니다.
+ EC2 인스턴스가 S3 파일 시스템에 액세스할 수 있도록 하려면 기본 보안 그룹을 선택합니다. 이 보안 그룹을 사용하여 Secure Shell(SSH)로 EC2 인스턴스에 액세스할 수 없습니다. SSH 액세스의 경우, 나중에 기본 보안을 편집하고 SSH를 허용하는 규칙을 추가하거나 SSH를 허용하는 새 보안 그룹을 추가할 수 있습니다. 다음 설정을 사용할 수 있습니다.
  + 유형: SSH
  + 프로토콜: TCP
  + 포트 범위: 22
  + 소스: 위치 무관 0.0.0.0/0
+ **스토리지** 섹션에서 **파일 시스템**을 선택하고 **S3 Files**를 선택합니다.
+ 파일 시스템 드롭다운 아래에는 네트워크 설정에서 이전에 선택한 서브넷을 기반으로 가용 영역에 파일 시스템이 표시됩니다. 탑재할 S3 파일 시스템을 선택합니다. 파일 시스템이 없는 경우 새 파일 시스템 생성을 선택하여 새 항목을 생성하세요.
+ 파일 시스템을 탑재하려는 EC2 인스턴스의 로컬 탑재 경로를 입력합니다(예: `/mnt/s3files`).
+ 파일 시스템을 탑재하고 fstab에 추가하는 명령이 생성됩니다. 사용자 데이터에 명령을 추가하거나 시작된 후 EC2 인스턴스에서 수동으로 실행하도록 선택할 수 있습니다. 이제 EC2 인스턴스가 시작될 때와 재부팅될 때마다 S3 파일 시스템을 탑재하도록 구성되었습니다.
+ **인스턴스 시작**을 선택합니다.

## 다른 VPC에서 S3 파일 시스템 탑재
<a name="s3-files-mounting-cross-vpc"></a>

VPC 피어링 연결 또는 전송 게이트웨이를 사용하여 VPC를 연결하면 하나의 VPC에 있는 Amazon EC2 인스턴스가 다른 VPC의 Amazon S3 파일 시스템에 액세스할 수 있습니다.

전송 게이트웨이는 VPC와 온프레미스 네트워크를 상호 연결하는 데 사용할 수 있는 네트워크 전송 허브입니다. 자세한 내용은 Amazon VPC 전송 게이트웨이 가이드**의 [전송 게이트웨이 시작하기](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-getting-started.html)를 참조하세요. VPC 피어링 연결은 두 VPC 간의 네트워킹 연결입니다. 이러한 유형의 연결을 사용하면 프라이빗 Internet Protocol version 4(IPv4) 또는 Internet Protocol version 6(IPv6) 주소를 사용하여 이들 간의 트래픽을 라우팅할 수 있습니다. VPC 피어링을 사용하여 동일한 AWS 리전 내 또는 다른 AWS 리전 간에 VPC를 연결할 수 있습니다. VPC 피어링에 대한 자세한 내용은 *Amazon VPC 사용 설명서*의 [VPC 피어링이란?](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html)을 참조하세요.

다른 VPC에서 파일 시스템을 탑재할 때는 탑재 대상을 수동으로 확인해야 합니다. 다음과 같이 해당 가용 영역에 있는 탑재 대상의 IP 주소를 사용하고 {{mount-target-ip-address}}, {{file-system-id}} 및 {{mount-directory}}를 값으로 바꿔야 합니다.

```
sudo mount -t s3files -o mounttargetip={{mount-target-ip-address}} {{file-system-id}} {{mount-directory}}
```

파일 시스템의 고가용성을 보장하려면 항상 NFS 클라이언트와 동일한 가용 영역에 있는 탑재 대상 IP 주소를 사용하는 것이 좋습니다.

또는 DNS 서비스로 Amazon Route 53을 사용할 수도 있습니다. Route 53에서 프라이빗 호스팅 영역과 리소스 레코드 세트를 생성하여 다른 VPC에서 탑재 대상 IP 주소를 확인할 수 있습니다. 확인하는 방법에 대한 자세한 내용은 *Amazon Route 53 개발자 안내서*의 [프라이빗 호스팅 영역 작업](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html)을 참조하세요.

다른 VPC에서 탑재하는 방법에 대한 자세한 내용은 [GitHub ReadMe](https://github.com/aws/efs-utils/blob/master/README.md)를 참조하세요.

## 다른 AWS 리전에서 S3 파일 시스템 탑재
<a name="s3-files-mounting-cross-region"></a>

파일 시스템과 다른 AWS 리전에 있는 또 다른 VPC에서 S3 파일 시스템을 탑재하는 경우 `s3files-utils.conf` 파일을 편집해야 합니다. `/etc/amazon/efs/s3files-utils.conf`에서 다음 줄을 찾습니다.

```
#region = us-east-1
```

해당 줄의 주석 처리를 제거하고 파일 시스템이 위치한 리전의 ID 값을 바꾸세요(us-east-1에 없는 경우).

그런 다음 구성에서 리전을 변경한 후 탑재 명령에서 탑재 대상 IP를 지정해야 합니다.

```
sudo mount -t s3files -o mounttargetip={{mount-target-ip-address}} {{file-system-id}} {{mount-directory}}
```

## S3 파일 시스템 탑재 해제
<a name="s3-files-mounting-unmount"></a>

Linux를 실행하는 EC2 인스턴스에 연결된 S3 파일 시스템을 탑재 해제하려면 다음과 같이 `umount` 명령을 사용하세요.

```
umount {{mount-directory}}
```

다른 `umount` 옵션은 지정하지 않는 것이 좋습니다. 기본값과 다른 그 밖의 `umount` 옵션은 설정하지 않는 것이 좋습니다. `findmnt` 명령을 실행하여 S3 파일 시스템이 탑재 해제되었는지 확인할 수 있습니다. 탑재 해제에 성공하면 탑재 디렉터리의 `findmnt` 명령은 출력을 생성하지 않습니다.