View a markdown version of this page

Amazon S3 Files 액세스 구성 - AWS Lambda

Amazon S3 Files 액세스 구성

Amazon S3 Files는 모든 AWS 컴퓨팅 리소스를 Amazon S3의 데이터에 직접 연결하는 공유 파일 시스템을 제공합니다. Amazon S3 Files를 사용하면 로컬 탑재 경로에서 읽기 및 쓰기와 같은 표준 파일 시스템 작업을 통해 Amazon S3 객체를 파일로 액세스할 수 있습니다. Amazon S3 Files에 대해 자세히 알아보세요.

사전 조건 및 설정

Lambda 함수로 Amazon S3 Files를 설정하기 전에 다음 조건을 갖추었는지 확인합니다.

  • Lambda 함수와 동일한 계정 및 AWS 리전에서 사용 가능한 상태의 Amazon S3 파일 시스템 및 탑재 대상.

  • 탑재 대상과 동일한 VPC에 있는 Lambda 함수. 함수가 배포되는 각 서브넷에 탑재 대상이 있어야 합니다.

  • Lambda 함수와 탑재 대상 사이에서 NFS 트래픽(포트 2049)을 허용하는 보안 그룹. 보안 그룹 구성에 대해 자세히 알아봅니다.

자세한 내용은 Amazon S3 사용 설명서에서 다음 주제를 참조하세요.

실행 역할 및 사용자 권한

Amazon S3 Files 파일 시스템에 액세스하려면 함수의 실행 역할에 다음 권한이 있어야 합니다.

실행 역할 권한
  • s3files:ClientMount – 파일 시스템을 탑재하는 데 필요합니다.

  • s3files:ClientWrite – 읽기-쓰기 액세스에 필요합니다. 읽기 전용 연결에는 필요하지 않습니다.

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

참고

Amazon S3 Files는 Amazon S3 버킷에서 직접 적격 읽기 요청을 스트리밍해 처리량을 최적화합니다. 메모리 512MB 이상으로 구성된 함수에는 기본적으로 직접 읽기가 활성화됩니다. 자세한 내용은 직접 읽기 구성 섹션을 참조하세요.

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

  • s3:GetObject

  • s3:GetObjectVersion

필요한 권한에 대한 자세한 내용은 Amazon S3 사용 설명서IAM permissions for Amazon S3 Files를 참조하세요.

콘솔에서 파일 시스템을 구성할 때 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)을 파일 시스템으로 라우팅할 수 있는 동일한 가용 영역의 서브넷일 수 있습니다.

참고

함수가 VPC에 아직 연결되어 있지 않은 경우 Lambda 함수에 Amazon VPC의 리소스에 대한 액세스 권한 부여를 참조하세요.

S3 Files 액세스를 구성하는 방법
  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 함수를 선택합니다.

  3. 구성을 선택한 다음 파일 시스템을 선택하세요.

  4. 파일 시스템 추가를 선택하거나 기존 구성을 수정하려면 편집을 선택하세요.

  5. S3 Files를 선택하세요.

  6. 다음 속성을 구성합니다.

    • S3 파일 시스템 - 드롭다운에서 파일 시스템을 선택합니다.

    • 액세스 포인트(선택 사항) - 액세스 포인트를 선택합니다. 파일 시스템에 액세스 포인트가 없는 경우 Lambda는 저장할 때 액세스 포인트를 자동으로 생성합니다(UID/GID 1000:1000, 루트 디렉터리 /lambda, 권한 755). 액세스 포인트가 있는 경우 하나의 액세스 포인트를 선택해야 합니다.

    • 로컬 마운트 경로 - 파일 시스템이 Lambda 함수에서 마운트되는 위치로, /mnt/로 시작합니다.

    • 고급 구성

      • 직접 S3 읽기 – 처리량이 많은 경우 Lambda가 Amazon S3 버킷에서 직접 적격 읽기를 스트리밍할 수 있는지 제어합니다. 자세한 내용은 직접 읽기 구성 섹션을 참조하세요.

  7. 저장을 선택합니다.

다음에 Lambda 함수를 간접 호출할 때 파일 시스템이 연결됩니다.

직접 읽기 구성

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

  • AUTO(기본값) – 메모리 512MB 이상으로 구성된 함수에 대하여 직접 읽기를 활성화합니다.

  • ENABLED – 메모리 512MB 미만인 함수를 포함해 함수에 대하여 직접 읽기를 활성화합니다.

  • DISABLED – 모든 읽기를 파일 시스템의 고성능 스토리지를 통해 라우팅합니다.

참고

직접 읽기가 실패하면 Lambda는 파일 시스템을 통한 읽기로 자동 폴백합니다.

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