객체 Lambda 액세스 포인트에 대한 IAM 정책 구성 - Amazon Simple Storage Service

객체 Lambda 액세스 포인트에 대한 IAM 정책 구성

S3 액세스 포인트는 리소스, 사용자 또는 기타 조건별로 액세스 포인트 사용을 제어할 수 있는 AWS Identity and Access Management(IAM) 리소스 정책을 지원합니다. 단계별 예제는 자습서: S3 객체 Lambda를 사용하여 애플리케이션의 데이터 변환자습서: S3 객체 Lambda 및 Amazon Comprehend를 사용하여 PII 데이터 감지 및 수정 단원을 참조하십시오.

단일 AWS 계정의 경우 다음 4개 리소스에 객체 Lambda 액세스 포인트로 작업할 수 있는 권한이 부여되어야 합니다.

  • IAM 사용자 또는 역할

  • 버킷 및 연결된 표준 액세스 포인트

  • 객체 Lambda 액세스 포인트

  • AWS Lambda 함수

이 예제에서는 다음과 같은 리소스가 있다고 가정합니다.

  • Amazon S3 버킷에는 다음과 같은 Amazon S3 리소스 이름(ARN)이 포함되어 있습니다.

    arn:aws:s3:::DOC-EXAMPLE-BUCKET1

    아래의 S3 버킷 정책 예제는 버킷에 대한 액세스 제어를 버킷의 액세스 포인트에 위임합니다. 버킷 소유자의 계정이 소유한 모든 액세스 포인트에 대한 전체 액세스를 허용합니다. 따라서 이 버킷에 대한 모든 액세스는 해당 액세스 포인트에 연결된 정책에 의해 제어됩니다. 사용자는 S3 액세스 포인트를 통해서만 버킷에서 읽을 수 있으므로 액세스 포인트를 통해서만 작업을 호출할 수 있습니다. 자세한 정보는 액세스 포인트에 액세스 제어 위임을 참조하세요.

    예 액세스 포인트에 액세스 제어를 위임하는 버킷 정책

    { "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : { "AWS":"account-ARN"}, "Action" : "*", "Resource" : [ "DOC-EXAMPLE-BUCKET1", "DOC-EXAMPLE-BUCKET1/*"], "Condition": { "StringEquals" : { "s3:DataAccessPointAccount" : "Bucket owner's account ID" } } }] }
  • 다음 ARN이 있는 이 버킷의 Amazon S3 Standard 액세스 포인트

    arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point

  • 다음 ARN이 있는 객체 Lambda 액세스 포인트:

    arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/my-object-lambda-ap

  • 다음 ARN을 사용하는 AWS Lambda 함수

    arn:aws:lambda:us-east-1:111122223333:function/MyObjectLambdaFunction

참고

계정에서 Lambda 함수를 사용하는 경우 정책 설명에 함수 버전을 포함해야 합니다. 예: arn:aws:lambda:us-east-1:111122223333:function/MyObjectLambdaFunction:$LATEST

다음 IAM 정책은 사용자에게 Lambda 함수, 표준 액세스 포인트 및 S3 객체 Lambda 액세스 포인트에 대한 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLambdaInvocation", "Action": [ "lambda:InvokeFunction" ], "Effect": "Allow", "Resource": "arn:aws:lambda:us-east-1:111122223333:function/MyObjectLambdaFunction:$LATEST", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "s3-object-lambda.amazonaws.com" ] } } }, { "Sid": "AllowStandardAccessPointAccess", "Action": [ "s3: Get*", "s3: List*" ], "Effect": "Allow", "Resource": "arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point/*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": [ "s3-object-lambda.amazonaws.com" ] } } }, { "Sid": "AllowObjectLambdaAccess", "Action": [ "s3-object-lambda:Get*", "s3-object-lambda:List*" ], "Effect": "Allow", "Resource": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/my-object-lambda-ap" } ] }

Lambda 실행 역할

Lambda 함수는 객체 Lambda 액세스 포인트에 요청이 있을 때 S3 객체 Lambda에 데이터를 보낼 수 있는 권한이 필요합니다. 이는 Lambda 함수의 실행 역할에 대한 s3-object-lambda:WriteGetObjectResponse 권한을 활성화하여 제공됩니다. 새로운 실행 역할을 생성하거나 기존 역할을 업데이트할 수 있습니다.

IAM 콘솔에서 실행 역할을 생성하려면

  1. IAM 콘솔에서 역할(Roles) 페이지를 엽니다.

  2. 역할 생성을 선택합니다.

  3. Common use cases(일반 사용 사례)에서 Lambda를 선택합니다.

  4. Next: Permissions(다음: 권한)를 선택합니다.

  5. 권한 정책 연결(Attach permissions policies)에서 AWS 관리형 정책 AmazonS3ObjectLambdaExecutionRolePolicy을 선택합니다.

  6. 다음: 태그를 선택합니다.

  7. 다음: 검토를 선택합니다.

  8. [역할 이름(Role name)]에 s3-object-lambda-role을 입력합니다.

  9. 역할 생성을 선택합니다.

  10. 새로 생성된 s3-object-lambda-role을 Lambda 함수의 실행 역할로 적용합니다.

자세한 지침은 IAM 사용 설명서AWS 서비스에 대한 역할 생성(콘솔)을 참조하세요.

Lambda 함수의 실행 역할 업데이트

Lambda 함수에 사용되는 실행 역할에 다음 문을 추가합니다.

{ { "Sid": "AllowObjectLambdaAccess", "Action": ["s3-object-lambda:WriteGetObjectResponse"], "Effect": "Allow", "Resource": "*" }

실행 역할에 대한 자세한 내용은 AWS Lambda 개발자 가이드Lambda 실행 역할을 참조하세요.

객체 Lambda 액세스 포인트에 컨텍스트 키 사용

S3 객체 Lambda를 사용하면 GET 요청이 자동으로 Lambda 함수를 호출하고 다른 모든 요청은 S3로 전달됩니다. S3 객체 Lambda는 요청의 연결 서명과 관련된 s3-object-lambda:TlsVersion 또는 s3-object-lambda:AuthType과 같은 컨텍스트 키를 평가합니다. s3:prefix와 같은 다른 모든 컨텍스트 키는 S3에 의해 평가됩니다.