Amazon S3에서 AWS Lambda 사용 - AWS Lambda

Amazon S3에서 AWS Lambda 사용

Lambda를 사용하여 Amazon Simple Storage Service의 이벤트 알림을 처리할 수 있습니다. Amazon S3는 객체가 생성되거나 삭제될 때 이벤트를 Lambda 함수에 전송할 수 있습니다. 버킷에 알림 설정을 구성하고 Amazon S3에 함수의 리소스 기반 권한 정책에 따라 함수를 호출할 수 있는 권한을 부여합니다.

주의

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

Amazon S3는 객체에 대한 세부 정보를 포함하는 이벤트와 비동기적으로 함수를 호출합니다. 다음 예제에서는 배포 패키지가 Amazon S3에 업로드될 때 Amazon S3에서 전송한 이벤트를 보여줍니다.

예 Amazon S3 알림 이벤트
{ "Records": [ { "eventVersion": "2.1", "eventSource": "aws:s3", "awsRegion": "us-east-2", "eventTime": "2019-09-03T19:37:27.192Z", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "AWS:AIDAINPONIXQXHT3IKHL2" }, "requestParameters": { "sourceIPAddress": "205.255.255.255" }, "responseElements": { "x-amz-request-id": "D82B88E5F771F645", "x-amz-id-2": "vlR7PnpV2Ce81l0PRw6jlUpck7Jo5ZsQjryTjKlc5aLWGVHPZLj5NeC6qMa0emYBDXOo6QBU0Wo=" }, "s3": { "s3SchemaVersion": "1.0", "configurationId": "828aa6fc-f7b5-4305-8584-487c791949c1", "bucket": { "name": "DOC-EXAMPLE-BUCKET", "ownerIdentity": { "principalId": "A3I5XTEXAMAI3E" }, "arn": "arn:aws:s3:::lambda-artifacts-deafc19498e3f2df" }, "object": { "key": "b21b84d653bb07b05b1e6b33684dc11b", "size": 1305107, "eTag": "b21b84d653bb07b05b1e6b33684dc11b", "sequencer": "0C0F6F405D6ED209E1" } } } ] }

함수를 호출하려면 Amazon S3는 함수의 리소스 기반 정책의 권한이 필요합니다. Lambda 콘솔에서 Amazon S3 트리거를 구성할 때, 콘솔은 버킷 이름과 계정 ID가 일치할 경우 Amazon S3에서 함수를 호출할 수 있도록 리소스 기반 정책을 수정합니다. Amazon S3에서 알림을 구성할 경우, Lambda API를 사용하여 정책을 업데이트합니다. 또한 Lambda API를 사용하여 다른 계정에 권한을 부여하거나 지정된 별칭으로 권한을 제한할 수도 있습니다.

함수에서 AWS SDK를 사용하여 Amazon S3 리소스를 관리하는 경우, 실행 역할에 Amazon S3 권한이 있어야 합니다.