객체 Lambda 액세스 포인트 생성 - Amazon Simple Storage Service

객체 Lambda 액세스 포인트 생성

객체 Lambda 액세스 포인트는 정확히 하나의 표준 액세스 포인트에 연결되므로 하나의 Amazon S3 버킷에 연결됩니다. 객체 Lambda 액세스 포인트를 생성하려면 다음 리소스가 필요합니다.

  • Amazon S3 버킷. 버킷 생성에 대한 자세한 내용은 버킷 생성 섹션을 참조하십시오.

  • 표준 S3 액세스 지점. 객체 Lambda 액세스 포인트로 작업할 때 이 표준 액세스 포인트를 지원 액세스 포인트라고 합니다. 표준 액세스 지점 생성에 대한 자세한 내용은 액세스 포인트 생성 섹션을 참조하세요.

  • AWS Lambda 함수. 직접 Lambda 함수를 만들 수도 있고 사전 구축된 함수를 사용할 수도 있습니다. Lambda 함수 생성에 대한 자세한 내용은 S3 객체 Lambda 액세스 포인트에 대한 Lambda 함수 작성 섹션을 참조하세요. 미리 빌드된 함수에 대한 자세한 내용은 AWS 구축 Lambda 함수 사용 섹션을 참조하십시오.

  • (선택 사항) AWS Identity and Access Management (IAM) 정책. Amazon S3 액세스 지점은 리소스, 사용자 또는 기타 조건별로 액세스 지점 사용을 제어할 수 있는 IAM 리소스 정책을 지원합니다. 이러한 정책 생성에 대한 자세한 내용은 객체 Lambda 액세스 포인트에 대한 IAM 정책 구성 섹션을 참조하십시오.

다음 섹션에서는 다음을 사용하여 객체 Lambda 액세스 포인트를 생성하는 방법에 대해 설명합니다.

  • AWS Management Console은

  • AWS Command Line Interface(AWS CLI)

  • AWS CloudFormation 템플릿

  • AWS Cloud Development Kit (AWS CDK)은

REST API를 사용하여 객체 Lambda 액세스 포인트를 생성하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service API 참조의 CreateAccessPointForObjectLambda 섹션을 참조하십시오.

Object Lambda 액세스 포인트 생성

다음 절차 중 하나를 사용하여 객체 Lambda 액세스 포인트를 생성합니다.

콘솔을 사용하여 객체 Lambda 액세스 포인트 생성
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 탐색 모음에서 현재 표시된 AWS 리전의 이름을 선택합니다. 그런 다음 전환하려는 리전을 선택합니다.

  3. 왼쪽 탐색 창에서 객체 Lambda 액세스 포인트(Object Lambda Access Points)를 선택합니다.

  4. 객체 Lambda 액세스 포인트(Object Lambda Access Points) 페이지에서 객체 Lambda 액세스 포인트 생성(Create Object Lambda Access Point)을 선택합니다.

  5. Object Lambda access point name(객체 Lambda 액세스 지점 이름)에 액세스 지점에 사용할 이름을 입력합니다.

    표준 액세스 포인트와 마찬가지로 객체 Lambda 액세스 포인트에 대한 명명 규칙이 있습니다. 자세한 내용은 Amazon S3 액세스 포인트 이름 지정 규칙 단원을 참조하십시오.

  6. Supporting Access Point(지원 액세스 지점)에 사용하려는 표준 액세스 지점을 입력하거나 찾아봅니다. 액세스 포인트는 변환하려는 객체와 동일한 AWS 리전에 있어야 합니다. 표준 액세스 지점 생성에 대한 자세한 내용은 액세스 포인트 생성 섹션을 참조하세요.

  7. 변환 구성에서 객체 Lambda 액세스 포인트의 데이터를 변환하는 함수를 추가할 수 있습니다. 다음 중 하나를 수행합니다.

    • 계정에 이미 AWS Lambda 함수가 있는 경우 Invoke Lambda function(Lambda 함수 호출)에서 해당 함수를 선택할 수 있습니다. 여기에서 AWS 계정에 있는 Lambda 함수의 Amazon 리소스 이름(ARN)을 입력하거나 드롭다운 메뉴에서 Lambda 함수를 선택할 수 있습니다.

    • AWS에서 빌드한 함수를 사용하려면 AWS built function(AWS 구축 함수)에서 함수 이름을 선택하고 Create Lambda function(Lambda 함수 생성)을 선택합니다. 그러면 구축된 함수를 AWS 계정에 배포할 수 있는 Lambda 콘솔로 이동합니다. 구축된 함수에 대한 자세한 내용은 AWS 구축 Lambda 함수 사용 섹션을 참조하십시오.

    S3 APIs(S3 API)에서 호출할 API 작업을 하나 이상 선택합니다. 선택한 각 API에 대해 호출할 Lambda 함수를 지정해야 합니다.

  8. (선택 사항) Payload(페이로드) 아래에서 Lambda 함수에 입력으로 제공할 JSON 텍스트를 추가합니다. 동일한 Lambda 함수를 호출하는 여러 객체 Lambda 액세스 포인트에 대해 서로 다른 파라미터를 사용하여 페이로드를 구성할 수 있으므로 Lambda 함수의 유연성을 높일 수 있습니다.

    중요

    객체 Lambda 액세스 포인트를 사용할 때 페이로드에는 기밀 정보를 포함하지 않아야 합니다.

  9. (선택 사항) Range and part number(범위 및 부분 번호)의 경우 범위 및 부분 번호 헤더가 있는 GETHEAD 요청을 처리하려면 이 옵션을 활성화해야 합니다. 이 옵션을 사용하면 Lambda 함수로 이러한 요청을 인식하고 처리할 수 있음을 확인하는 것입니다. 범위 헤더 및 부분 번호에 대한 자세한 내용은 Range 및 partNumber 헤더 작업 섹션을 참조하십시오.

  10. (선택 사항) 요청 지표에서 활성화 또는 비활성화를 선택하여 객체 Lambda 액세스 포인트에 Amazon S3 모니터링을 추가합니다. 요청 지표는 표준 Amazon CloudWatch 요금으로 청구됩니다.

  11. (선택 사항) Object Lambda Access Point Policy(객체 Lambda 액세스 지점 정책)에서 리소스 정책을 설정합니다. 리소스 정책은 지정된 객체 Lambda 액세스 포인트에 대한 권한을 부여하며 리소스, 사용자 또는 기타 조건별로 액세스 포인트 사용을 제어할 수 있습니다. 객체 Lambda 액세스 지점 리소스 정책에 대한 자세한 내용은 객체 Lambda 액세스 포인트에 대한 IAM 정책 구성 섹션을 참조하십시오.

  12. Block Public Access settings for this Object Lambda Access Point(이 객체 Lambda 액세스 포인트에 대한 퍼블릭 액세스 차단 설정)에서, 적용할 퍼블릭 액세스 차단 설정을 선택합니다. 새 객체 Lambda 액세스 지점에는 기본적으로 모든 퍼블릭 액세스 차단 설정이 활성화되어 있으며 기본 설정을 그대로 유지하는 것이 좋습니다. Amazon S3에서는 현재 객체 Lambda 액세스 지점이 생성된 후 객체 Lambda 액세스 지점의 퍼블릭 액세스 차단 설정을 변경하도록 지원하지 않습니다.

    Amazon S3 퍼블릭 액세스 차단 사용에 대한 자세한 내용은 액세스 포인트에 대한 퍼블릭 액세스 관리 섹션을 참조하십시오.

  13. Create Object Lambda Access Point(객체 Lambda 액세스 지점 생성)를 선택합니다.

AWS CloudFormation 템플릿을 사용하여 객체 Lambda 액세스 포인트 생성
참고

다음 명령을 사용하려면 user input placeholders를 실제 정보로 대체하세요.

  1. S3 객체 Lambda 기본 구성에서 AWS Lambda 함수 배포 패키지 s3objectlambda_deployment_package.zip을 다운로드합니다.

  2. 다음 put-object 명령을 실행하여 Amazon S3 버킷에 패키지를 업로드합니다.

    aws s3api put-object --bucket Amazon S3 bucket name --key s3objectlambda_deployment_package.zip --body release/s3objectlambda_deployment_package.zip
  3. S3 객체 Lambda 기본 구성에서 AWS CloudFormation 템플릿 s3objectlambda_defaultconfig.yaml을 다운로드합니다.

  4. 다음 deploy 명령을 실행하여 템플릿을 AWS 계정에 배포합니다.

    aws cloudformation deploy --template-file s3objectlambda_defaultconfig.yaml \ --stack-name AWS CloudFormation stack name \ --parameter-overrides ObjectLambdaAccessPointName=Object Lambda Access Point name \ SupportingAccessPointName=Amazon S3 access point S3BucketName=Amazon S3 bucket \ LambdaFunctionS3BucketName=Amazon S3 bucket containing your Lambda package \ LambdaFunctionS3Key=Lambda object key LambdaFunctionS3ObjectVersion=Lambda object version \ LambdaFunctionRuntime=Lambda function runtime --capabilities capability_IAM

GET, HEADLIST API 작업에 대해 Lambda를 호출하도록 이 AWS CloudFormation 템플릿을 구성할 수 있습니다. 템플릿의 기본 구성 수정에 대한 자세한 내용은 CloudFormation 템플릿을 사용하여 S3 객체 Lambda 설정 자동화 섹션을 참조하십시오.

AWS CLI를 사용하여 객체 Lambda 액세스 포인트 생성
참고

다음 명령을 사용하려면 user input placeholders를 실제 정보로 대체하십시오.

다음 예시에서는 계정 111122223333amzn-s3-demo-bucket1 버킷에 대해 이름이 my-object-lambda-ap인 객체 Lambda 액세스 포인트를 생성합니다. 이 예제에서는 이름이 example-ap인 표준 액세스 포인트 정책이 이미 생성되어 있다고 가정합니다. 표준 액세스 포인트 생성에 대한 자세한 내용은 액세스 포인트 생성 섹션을 참조하십시오.

이 예제에서는 AWS의 미리 구축된 함수 decompress를 사용합니다. 미리 빌드된 함수에 대한 자세한 내용은 AWS 구축 Lambda 함수 사용 섹션을 참조하십시오.

  1. 버킷을 만듭니다. 이 예제에서는 amzn-s3-demo-bucket1을 사용합니다. 버킷 생성에 대한 자세한 내용은 버킷 생성 섹션을 참조하십시오.

  2. 표준 액세스 포인트를 생성하여 버킷에 연결합니다. 이 예제에서는 example-ap을 사용합니다. 표준 액세스 지점 생성에 대한 자세한 내용은 액세스 포인트 생성 섹션을 참조하십시오.

  3. 다음 중 하나를 수행합니다.

  4. 이름이 my-olap-configuration.json인 JSON 구성 파일을 생성합니다. 이 구성에서는 이전 단계에서 생성한 Lambda 함수의 지원 액세스 지점과 Amazon 리소스 이름(ARN) 또는 사용 중인 사전 구축된 함수의 ARN을 제공합니다.

    { "SupportingAccessPoint" : "arn:aws:s3:us-east-1:111122223333:accesspoint/example-ap", "TransformationConfigurations": [{ "Actions" : ["GetObject", "HeadObject", "ListObjects", "ListObjectsV2"], "ContentTransformation" : { "AwsLambda": { "FunctionPayload" : "{\"compressionType\":\"gzip\"}", "FunctionArn" : "arn:aws:lambda:us-east-1:111122223333:function/compress" } } }] }
  5. create-access-point-for-object-lambda 명령을 실행하여 객체 Lambda 액세스 포인트를 생성합니다.

    aws s3control create-access-point-for-object-lambda --account-id 111122223333 --name my-object-lambda-ap --configuration file://my-olap-configuration.json
  6. (선택 사항) 이름이 my-olap-policy.json인 JSON 정책 파일을 생성합니다.

    객체 Lambda 액세스 지점 리소스 정책을 추가하면 리소스, 사용자 또는 기타 조건별로 액세스 지점 사용을 제어할 수 있습니다. 이 리소스 정책은 계정 444455556666에 대한 GetObject 권한을 객체 Lambda 액세스 포인트에 부여합니다.

    { "Version": "2008-10-17", "Statement": [ { "Sid": "Grant account 444455556666 GetObject access", "Effect": "Allow", "Action": "s3-object-lambda:GetObject", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Resource": "your-object-lambda-access-point-arn" } ] }
  7. (선택 사항) put-access-point-policy-for-object-lambda 명령을 실행하여 리소스 정책을 설정합니다.

    aws s3control put-access-point-policy-for-object-lambda --account-id 111122223333 --name my-object-lambda-ap --policy file://my-olap-policy.json
  8. (선택 사항) 페이로드를 지정합니다.

    페이로드는 AWS Lambda 함수에 입력으로 제공할 수 있는 선택적 JSON입니다. 동일한 Lambda 함수를 호출하는 여러 객체 Lambda 액세스 포인트에 대해 서로 다른 파라미터를 사용하여 페이로드를 구성할 수 있으므로 Lambda 함수의 유연성을 높일 수 있습니다.

    다음 객체 Lambda 액세스 포인트 구성은 파라미터 2개가 있는 페이로드를 보여줍니다.

    { "SupportingAccessPoint": "AccessPointArn", "CloudWatchMetricsEnabled": false, "TransformationConfigurations": [{ "Actions": ["GetObject", "HeadObject", "ListObjects", "ListObjectsV2"], "ContentTransformation": { "AwsLambda": { "FunctionArn": "FunctionArn", "FunctionPayload": "{\"res-x\": \"100\",\"res-y\": \"100\"}" } } }] }

    다음 객체 Lambda 액세스 포인트 구성은 파라미터 1개가 있고 GetObject-Range, GetObject-PartNumber, HeadObject-RangeHeadObject-PartNumber가 활성화된 페이로드를 보여줍니다.

    { "SupportingAccessPoint":"AccessPointArn", "CloudWatchMetricsEnabled": false, "AllowedFeatures": ["GetObject-Range", "GetObject-PartNumber", "HeadObject-Range", "HeadObject-PartNumber"], "TransformationConfigurations": [{ "Action": ["GetObject", "HeadObject", "ListObjects", "ListObjectsV2"], "ContentTransformation": { "AwsLambda": { "FunctionArn":"FunctionArn", "FunctionPayload": "{\"compression-amount\": \"5\"}" } } }] }
    중요

    객체 Lambda 액세스 포인트를 사용할 때 페이로드에는 기밀 정보를 포함하지 않아야 합니다.

Amazon S3에서 제공하는 기본 구성을 사용하여 객체 Lambda 액세스 포인트를 생성할 수 있습니다. GitHub 리포지토리에서 AWS CloudFormation 템플릿 및 Lambda 함수 소스 코드를 다운로드하고 이러한 리소스를 배포하여 기능적 객체 Lambda 액세스 포인트를 설정할 수 있습니다.

AWS CloudFormation 템플릿의 기본 구성 수정에 대한 내용은 CloudFormation 템플릿을 사용하여 S3 객체 Lambda 설정 자동화 섹션을 참조하십시오.

템플릿 없이 AWS CloudFormation을 사용하여 객체 Lambda 액세스 포인트를 구성하는 방법에 대한 자세한 내용은 AWS CloudFormation 사용 설명서의 AWS::S3ObjectLambda::AccessPoint를 참조하십시오.

Lambda 함수 배포 패키지 업로드
  1. S3 객체 Lambda 기본 구성에서 AWS Lambda 함수 배포 패키지 s3objectlambda_deployment_package.zip을 다운로드합니다.

  2. Amazon S3 버킷에 패키지를 업로드합니다.

AWS CloudFormation 콘솔을 사용하여 객체 Lambda 액세스 포인트 생성
  1. S3 객체 Lambda 기본 구성에서 AWS CloudFormation 템플릿 s3objectlambda_defaultconfig.yaml을 다운로드합니다.

  2. AWS 관리 콘솔에 로그인하고 https://console.aws.amazon.com/cloudformation에서 AWS CloudFormation 콘솔을 엽니다.

  3. 다음 중 하나를 수행하십시오.

    • AWS CloudFormation을 한 번도 사용해 본 적이 없다면 AWS CloudFormation 홈페이지에서 Create stack(스택 생성)을 선택합니다.

    • AWS CloudFormation을 이전에 사용한 적이 있다면 왼쪽 탐색 창에서 Stacks(스택)를 선택합니다. Create stack(스택 생성)을 선택한 다음 With new resources (standard)새 리소스 사용(표준)를 선택합니다.

  4. 사전 조건 - 템플릿 준비(Prerequisite - Prepare template)에서 템플릿 준비 완료를 선택합니다.

  5. Specify template(템플릿 지정)에서 Upload a template file(템플릿 파일 업로드)를 선택하고 s3objectlambda_defaultconfig.yaml을 업로드합니다.

  6. Next(다음)를 선택합니다.

  7. 스택 세부 정보 지정(Specify stack details) 페이지에서 스택 이름을 입력합니다.

  8. Parameters(파라미터) 섹션에서 스택 템플릿에 정의된 다음 파라미터를 지정합니다.

    1. CreateNewSupportingAccessPoint의 경우 다음 중 하나를 수행합니다.

      • 템플릿을 업로드한 S3 버킷에 대한 지원 액세스 지점이 이미 있는 경우 false(거짓)를 선택합니다.

      • 이 버킷에 대한 새 액세스 지점을 생성하려면 true(참)를 선택합니다.

    2. EnableCloudWatchMonitoring의 경우 Amazon CloudWatch 요청 지표 및 경보를 활성화할지 여부에 따라 true(참) 또는 false(거짓)를 선택합니다.

    3. (선택 사항) LambdaFunctionPayload에서 Lambda 함수에 입력으로 제공할 JSON 텍스트를 추가합니다. 동일한 Lambda 함수를 호출하는 여러 객체 Lambda 액세스 포인트에 대해 서로 다른 파라미터를 사용하여 페이로드를 구성할 수 있으므로 Lambda 함수의 유연성을 높일 수 있습니다.

      중요

      객체 Lambda 액세스 포인트를 사용할 때 페이로드에는 기밀 정보를 포함하지 않아야 합니다.

    4. LambdaFunctionRuntime에 Lambda 함수의 원하는 런타임을 입력합니다. 사용 가능한 선택 항목은 nodejs14.x, python3.9, java11입니다.

    5. LambdaFunctionS3BucketName에 배포 패키지를 업로드한 Amazon S3 버킷 이름을 입력합니다.

    6. LambdaFunctionS3Key에 배포 패키지를 업로드한 Amazon S3 객체 키를 입력합니다.

    7. LambdaFunctionS3ObjectVersion에 배포 패키지를 업로드한 Amazon S3 객체 버전을 입력합니다.

    8. ObjectLambdaAccessPointName에 객체 Lambda 액세스 포인트의 이름을 입력합니다.

    9. S3BucketName에 객체 Lambda 액세스 포인트와 연결될 Amazon S3 버킷 이름을 입력합니다.

    10. SupportingAccessPointName에 지원 액세스 지점의 이름을 입력합니다.

      참고

      이것이 이전 단계에서 선택한 Amazon S3 버킷과 연결된 액세스 지점입니다. Amazon S3 버킷과 연결된 액세스 지점이 없는 경우 CreateNewSupportingAccessPoint에서 true(참)를 선택하여 액세스 지점을 생성하도록 템플릿을 구성할 수 있습니다.

  9. Next(다음)를 선택합니다.

  10. Configure stack options(스택 옵션 구성) 페이지에서 Next(다음)를 선택합니다.

    이 페이지의 선택적 설정에 대한 자세한 내용은 AWS CloudFormation 사용 설명서AWS CloudFormation 스택 옵션 설정을 참조하십시오.

  11. 검토(Review) 페이지에서 스택 생성(Create stack)을 선택합니다.

AWS CDK을 사용하여 객체 Lambda 액세스 포인트를 구성하는 방법에 대한 자세한 내용은 AWS Cloud Development Kit (AWS CDK) API 참조AWS::S3ObjectLambda 구성 라이브러리를 참조하십시오.