S3 Files의 사전 조건
S3 Files 사용을 시작하기 전에 다음 사전 조건을 완료했는지 확인합니다.
AWS 계정 및 컴퓨팅 설정
AWS 계정이 있습니다.
파일 시스템을 생성하려는 원하는 AWS 리전에 컴퓨팅 리소스와 S3 범용 버킷이 있습니다. 자세한 내용은 범용 버킷 생성 섹션을 참조하세요.
S3 버킷에 버전 관리가 활성화되어 있습니다. S3 Files는 파일 시스템과 S3 버킷 간의 변경 사항을 동기화하려면 S3 버전 관리가 필요합니다. 자세한 내용은 버킷에 버전 관리 사용 설정 섹션을 참조하세요.
S3 버킷은 Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3) 또는 AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS) 중 하나를 사용해야 합니다.
S3 Files 클라이언트
Amazon EC2에서 S3 Files를 사용하려면 Amazon EFS 및 Amazon S3 Files를 위한 공유 오픈 소스 도구 모음인 amazon-efs-utils 클라이언트를 설치해야 합니다. S3 Files를 사용하려면 amazon-efs-utils 버전 3.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 클라이언트는 다른 AWS 서비스와 상호 작용하기 위해 botocore를 사용합니다. 예를 들어 Amazon CloudWatch를 사용하여 파일 시스템을 모니터링하려면 botocore를 설치해야 합니다. botocore 설치 및 업그레이드에 대한 지침은 GitHub의 amazon-efs-utils README에 있는 botocore 설치
S3 Files에 대한 FIPS 모드 활성화
FIPS(연방 정보 처리 표준)를 준수해야 하는 경우 클라이언트에서 FIPS 모드를 활성화해야 합니다. FIPS 모드를 활성화하려면 운영 체제에서 s3files-utils.conf 파일을 수정해야 합니다.
다음 단계에 따라 S3 Files에 대해 클라이언트에서 FIPS 모드를 활성화합니다.
선택한 텍스트 편집기를 사용해
/etc/amazon/efs/s3files-utils.conf파일을 엽니다.다음 텍스트가 포함된 줄을 찾습니다.
fips_mode_enabled = false텍스트를 다음으로 변경합니다.
fips_mode_enabled = true변경 내용을 저장합니다.
IAM 역할 및 정책
S3 Files를 사용하려면 다음 두 가지 목적으로 IAM 역할과 연결된 정책을 구성해야 합니다.
파일 시스템에서 버킷에 액세스
AWS 컴퓨팅 리소스에 파일 시스템 연결
파일 시스템에서 버킷에 액세스하기 위한 IAM 역할
S3 파일 시스템을 생성할 때 S3 버킷에서 읽고 쓰기 위해 S3 Files가 수임하는 IAM 역할을 지정해야 합니다. 이 역할을 사용하면 S3 Files가 파일 시스템과 S3 버킷 간의 변경 사항을 동기화할 수 있습니다. 또한 역할은 S3 Files가 S3 버킷의 변경 사항을 감지하고 동기화를 트리거하는 데 사용하는 Amazon EventBridge 규칙을 관리할 수 있는 권한을 부여합니다. 또한 소스 버킷의 버킷 정책이 컴퓨팅 리소스의 액세스를 거부하지 않는지 확인해야 합니다.
참고
AWS Management Console을 사용하여 파일 시스템을 생성하면 S3 Files가 필요한 권한으로 이 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/*" ] } ] }자리 표시자 값을 해당 값으로 바꿉니다.
# Placeholder 설명 예제 1 버킷S3 버킷의 이름. my-bucket 2 리전버킷의 AWS 리전 us-east-1 3 accountIdAWS 계정 ID. 123456789012 -
S3 Files가 IAM 역할을 수임하도록 허용하는 신뢰 정책입니다. S3 Files 서비스가 수임할 수 있도록 다음 신뢰 정책을 IAM 역할에 추가합니다.
accountId와region을 해당 값으로 바꿉니다.{ "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 파일 시스템을 탑재하는 컴퓨팅 리소스에는 컴퓨팅 리소스가 S3 파일 시스템 및 소스 S3 버킷과 상호 작용할 수 있도록 허용하는 정책과 함께 IAM 역할(예: EC2 인스턴스 프로파일)이 연결되어 있어야 합니다. 또한 소스 버킷의 버킷 정책이 컴퓨팅 리소스의 액세스를 거부하지 않는지 확인해야 합니다.
컴퓨팅 리소스에 연결된 IAM 역할에 다음 두 가지 정책을 추가합니다.
-
컴퓨팅 리소스가 S3 파일 시스템에 연결하고 상호 작용할 수 있는 권한
IAM 역할에는 탑재 도우미가 S3 파일 시스템에 연결하고 상호 작용할 수 있는 권한이 포함되어야 합니다. 컴퓨팅 리소스에 S3 파일 시스템에 대한 전체 읽기 및 쓰기 권한을 부여하려면
AmazonS3FilesClientFullAccess관리형 정책과 같은 AWS 관리형 정책을 연결할 수 있으며, 읽기 전용 권한의 경우에는AmazonS3FilesClientReadOnlyAccess를 연결할 수 있습니다. Amazon CloudWatch 모니터링을 활성화하려는 경우AmazonElasticFileSystemUtils관리형 정책을 연결할 수도 있습니다. S3 Files에 사용할 수 있는 관리형 정책의 전체 목록과 자세한 내용은 Amazon S3 Files에 대한 AWS 관리형 정책을 참조하세요. 컴퓨팅 리소스의 IAM 역할에s3files:ClientMount또는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" } ] }
보안 그룹
파일 시스템 및 탑재 대상이 생성되면 파일 시스템 사용을 시작하도록 올바른 보안 그룹을 구성해야 합니다. 컴퓨팅 리소스와 탑재 대상의 보안 그룹은 아래 표와 같이 필요한 트래픽을 허용해야 합니다.
| 보안 그룹 | 규칙 타입 | 프로토콜 | Port | 소스/대상 |
|---|---|---|---|---|
| EC2 인스턴스 | 아웃바운드 | TCP | 2049 | 탑재 대상 보안 그룹 |
| 탑재 대상 | 인바운드 | TCP | 2049 | EC2 인스턴스 보안 그룹 |