Amazon S3 Files 접근 구성

Amazon S3 Files 접근 구성

Amazon S3 Files는 모든 AWS 컴퓨팅 리소스를 Amazon S3의 데이터와 직접 연결하는 공유 파일 시스템을 제공해요. Amazon S3 Files는 로컬 마운트 경로에서 읽기·쓰기 같은 표준 파일 시스템 작업을 사용해서 Amazon S3 객체에 파일로 접근할 수 있게 해줘요. Amazon S3 Files에 대해 자세히 알아보세요.

출처: AWS Lambda 개발자 안내서

본문

주제(Topics)

사전 조건 및 설정

Lambda 함수로 Amazon S3 Files를 설정하기 전에 다음이 있는지 확인하세요.

  • Lambda 함수와 같은 계정 및 AWS 리전에 사용 가능 상태의 Amazon S3 파일 시스템과 마운트 대상(mount target)이 있어야 해요.
  • 마운트 대상과 같은 VPC에 Lambda 함수가 있어야 해요. 함수가 배포되는 각 서브넷에 마운트 대상이 있어야 해요.
  • Lambda 함수와 마운트 대상 간에 NFS 트래픽(포트 2049)을 허용하는 보안 그룹이 있어야 해요. 보안 그룹 구성에 대해 자세히 알아보기.

자세한 내용은 Amazon S3 사용자 안내서의 다음 주제를 참고하세요.

실행 역할 및 사용자 권한

함수의 실행 역할은 Amazon S3 Files 파일 시스템에 접근하려면 다음 권한이 있어야 해요.

실행 역할 권한

  • s3files:ClientMount – 파일 시스템을 마운트하는 데 필요해요.
  • s3files:ClientWrite – 읽기-쓰기 접근에 필요해요. 읽기 전용 연결에는 필요 없어요.

이러한 권한은 AmazonS3FilesClientReadWriteAccess 관리형 정책에 포함돼 있어요. 또한 실행 역할에는 파일 시스템의 VPC에 연결하는 데 필요한 권한이 있어야 해요.

참고(Note) Amazon S3 Files는 자격이 되는 읽기 요청을 Amazon S3 버킷에서 직접 스트리밍하여 처리량을 최적화해요. 직접 읽기는 512MB 이상의 메모리로 구성된 함수에 기본적으로 활성화돼요. 자세한 내용은 직접 읽기 구성을 참고하세요.

함수는 Amazon S3에서 직접 읽으려면 다음 권한도 필요해요.

  • s3:GetObject
  • s3:GetObjectVersion

필요한 권한에 대한 자세한 내용은 Amazon S3 사용자 안내서의 Amazon S3 Files에 대한 IAM 권한을 참고하세요.

콘솔에서 파일 시스템을 구성할 때 Lambda는 사용자 권한을 사용해서 마운트 대상과 액세스 포인트를 검증해요. 함수가 파일 시스템에 연결하도록 구성하려면 사용자에게 다음 권한이 필요해요.

사용자 권한

  • s3files:ListFileSystems
  • s3files:ListAccessPoints
  • s3files:GetFileSystem
  • s3files:GetAccessPoint
  • s3files:CreateAccessPoint – 콘솔에서 파일 시스템을 함수에 연결할 때 필요해요.

다음 예시 정책은 함수의 실행 역할에 읽기-쓰기 접근으로 Amazon S3 파일 시스템을 마운트하고 Amazon S3에서 직접 읽을 수 있는 권한을 부여해요.

{
    "Version": "2012-10-17", 	 	 	 
    "Statement": [
        {
            "Sid": "S3FilesLambdaAccess",
            "Effect": "Allow",
            "Action": [
                "s3files:ClientMount",
                "s3files:ClientWrite"
            ],
            "Resource": "*"
        },
        {
            "Sid": "S3DirectRead",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::{{bucket-name}}/*"
        },
        {
            "Sid": "S3FilesConsoleSetup",
            "Effect": "Allow",
            "Action": [
                "s3files:ListFileSystems",
                "s3files:ListAccessPoints",
                "s3files:GetFileSystem",
                "s3files:GetAccessPoint",
                "s3files:CreateAccessPoint"
            ],
            "Resource": "*"
        }
    ]
}

파일 시스템 연결(콘솔)

함수는 VPC의 로컬 네트워크를 통해 파일 시스템에 연결해요. 함수가 연결하는 서브넷은 파일 시스템의 마운트 지점이 포함된 서브넷이거나, 파일 시스템으로 NFS 트래픽(포트 2049)을 라우팅할 수 있는 같은 가용 영역(Availability Zone)의 서브넷일 수 있어요.

참고(Note) 함수가 아직 VPC에 연결되어 있지 않다면 Lambda 함수에 Amazon VPC의 리소스 접근 권한 부여를 참고하세요.

S3 Files 접근을 구성하려면

  1. Lambda 콘솔의 Functions 페이지를 열어요.

  2. 함수를 선택해요.

  3. Configuration을 선택한 다음 File systems을 선택해요.

  4. Add file system(또는 기존 구성을 수정하려면 Edit)을 선택해요.

  5. S3 Files를 선택해요.

  6. 다음 속성을 구성해요.

    • S3 file system – 드롭다운에서 파일 시스템을 선택해요.
    • Access point(선택 사항) – 액세스 포인트를 선택해요. 파일 시스템에 액세스 포인트가 없으면 저장할 때 Lambda가 자동으로 하나를 만들어요(UID/GID 1000:1000, 루트 디렉토리 /lambda, 권한 755). 액세스 포인트가 있으면 하나를 선택해야 해요.
    • Local mount path – 파일 시스템이 Lambda 함수에 마운트되는 위치로, /mnt/로 시작해요.
    • Advanced configuration
      • Direct S3 Reads – Lambda가 자격이 되는 읽기를 Amazon S3 버킷에서 직접 스트리밍할지(더 높은 처리량)를 제어해요. 자세한 내용은 직접 읽기 구성을 참고하세요.
  7. Save를 선택해요.

파일 시스템은 다음에 Lambda 함수를 호출할 때 연결돼요.

직접 읽기 구성

직접 읽기는 Amazon S3 버킷에서 데이터를 직접 스트리밍하여 처리량을 최적화해요. Lambda는 대용량 읽기와 파일 시스템의 고성능 스토리지가 파일 데이터를 보유하지 않을 때 직접 읽기를 사용해요. 자세한 내용은 S3 Files가 성능을 제공하는 방법을 참고하세요. 이 선택적 구성은 함수의 FileSystemConfigs의 일부이며 Amazon S3 파일 시스템에만 적용돼요. DirectS3Read 설정은 다음 값을 허용해요.

  • AUTO(기본값) – 512MB 이상의 메모리로 구성된 함수에 직접 읽기를 활성화해요.
  • ENABLED – 512MB 미만의 메모리를 가진 함수를 포함해 함수에 직접 읽기를 활성화해요.
  • DISABLED – 모든 읽기를 파일 시스템의 고성능 스토리지를 통해 라우팅해요.

참고(Note) 직접 읽기가 실패하면 Lambda는 자동으로 파일 시스템을 통한 읽기로 대체해요.

직접 읽기를 사용하려면 함수의 실행 역할에 필요한 권한이 있어야 해요. 자세한 내용은 Amazon S3 Files 사전 조건 정책을 참고하세요.

더 알아보기 (Learn more)

Amazon S3 Files에 대한 자세한 내용은 Amazon S3 사용자 안내서를 참고하세요.