AWS Lambda
개발자 가이드

Using AWS Lambda with Amazon S3

Amazon S3는 이벤트를 AWS Lambda에 게시하고(예: 객체가 버킷에 생성될 때) 이벤트 데이터를 파라미터로 전달하여 Lambda 함수를 호출할 수 있습니다. 이 통합을 사용하면 Amazon S3 이벤트를 처리하는 Lambda 함수를 작성할 수 있습니다. Amazon S3에서, Amazon S3가 게시할 이벤트 유형 및 호출할 Lambda 함수를 식별하는 버킷 알림 구성을 추가합니다.

중요

Lambda 함수가 함수를 트리거하는 동일한 버킷을 사용하는 경우 함수가 루프에서 실행되게 만들 수 있습니다. 예를 들어 객체가 업로드될 때마다 버킷이 함수를 트리거하고 그 함수가 객체를 버킷에 업로드하는 경우, 함수는 간접적으로 자신을 트리거합니다 이렇게 되지 않도록 하려면 두 개의 버킷을 사용하거나, 수신 객체에 사용되는 접두사에만 적용되도록 트리거를 구성합니다.

예 Amazon S3메시지 이벤트

{ "Records":[ { "eventVersion":"2.0", "eventSource":"aws:s3", "awsRegion":"us-west-2", "eventTime":"1970-01-01T00:00:00.000Z", "eventName":"ObjectCreated:Put", "userIdentity":{ "principalId":"AIDAJDPLRKLG7UEXAMPLE" }, "requestParameters":{ "sourceIPAddress":"127.0.0.1" }, "responseElements":{ "x-amz-request-id":"C3D13FE58DE4C810", "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD" }, "s3":{ "s3SchemaVersion":"1.0", "configurationId":"testConfigRule", "bucket":{ "name":"sourcebucket", "ownerIdentity":{ "principalId":"A3NL1KOZZKExample" }, "arn":"arn:aws:s3:::sourcebucket" }, "object":{ "key":"HappyFace.jpg", "size":1024, "eTag":"d41d8cd98f00b204e9800998ecf8427e", "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko" } } } ] }

Amazon S3 및 AWS Lambda 통합이 작동하는 방법에 대해 다음 사항을 참고합니다.

  • 비 스트림 기반(비동기식) 모델 – Amazon S3가 버킷을 모니터링하고 이벤트 데이터를 파라미터로 전달하여 Lambda 함수를 호출하는 모델입니다(AWS Lambda 이벤트 소스 매핑 참조). 푸시 모델에서는 버킷 알림 구성을 사용하여 내에서 이벤트 소스 매핑을 유지합니다. 구성에서 Amazon S3가 모니터링할 이벤트 유형과 Amazon S3가 호출할 AWS Lambda 함수를 지정합니다. 자세한 내용은 Amazon Simple Storage Service 개발자 가이드Amazon S3 이벤트 알림 구성을 참조하십시오.

  • 비동기식 호출 – AWS Lambda는 Event 호출 유형(비동기식 호출)을 사용하여 Lambda 함수를 호출합니다. 호출 유형에 대한 자세한 내용은 호출 유형 단원을 참조하십시오.

  • 이벤트 구조 – Lambda 함수가 수신하는 이벤트는 단일 객체에 대한 이벤트이며 버킷 이름 및 객체 키 이름과 같은 정보를 제공합니다.

종합적인 경험을 설정하는 데 사용하는 권한 정책은 두 가지 유형이 있습니다.

  • Lambda 함수에 대한 권한 – Lambda 함수를 호출하는 것과 관계없이 AWS Lambda는 Lambda 함수를 만들 때 지정하는 IAM 역할(실행 역할)을 가정하여 함수를 실행합니다. 이 역할과 연결된 권한 정책을 사용하여 함수에 필요한 권한을 부여합니다. 예를 들어, Lambda 함수가 객체를 읽어야 하는 경우, 권한 정책에서 관련 Amazon S3 작업에 대한 권한을 부여합니다. 자세한 내용은 AWS Lambda 실행 역할 단원을 참조하십시오.

  • Amazon S3가 Lambda 함수를 호출할 수 있는 권한 – Amazon S3는 사용자의 허가 없이 Lambda 함수를 호출할 수 없습니다. 사용자는 함수와 연결된 권한 정책을 통해 이 권한을 부여합니다.

다음 다이어그램은 해당 흐름을 보여 줍니다.

  1. 사용자가 S3 버킷(객체 생성 이벤트)에 객체를 업로드합니다.

  2. Amazon S3가 객체 생성 이벤트를 감지합니다.

  3. Amazon S3는 버킷 알림 구성에 지정된 Lambda 함수를 호출합니다.

  4. AWS Lambda는 Lambda 함수를 생성할 때 지정한 실행 역할을 가정하여 Lambda 함수를 실행합니다.

  5. Lambda 함수가 실행됩니다.