다른 AWS 계정에 있는 Lambda 함수를 호출하도록 Amazon S3 이벤트 알림을 설정하려면 어떻게 해야 하나요?

3분 분량
0

내 Amazon Simple Storage Service(S3) 버킷으로 다른 AWS 계정에 있는 AWS Lambda 함수를 호출하고 싶습니다.

간략한 설명

Amazon S3 버킷이 다른 AWS 계정에서 Lambda 함수를 호출하도록 하려면 다음을 수행합니다.

1.    Lambda 함수의 리소스 기반 권한 정책을 업데이트하여 Amazon S3에 호출 권한을 부여합니다.

2.    Lambda 함수를 호출하는 Amazon S3 이벤트 알림을 생성합니다.

중요: Lambda 함수는 S3 버킷과 동일한 AWS 리전에 있어야 합니다. 함수 마이그레이션에 대한 자세한 내용은 Lambda 콘솔을 사용하여 Lambda 함수를 다른 AWS 계정 또는 리전으로 마이그레이션하려면 어떻게 해야 하나요?를 참조하세요.

해결 방법

참고: 이 절차를 완료하려면 다음 정보가 있어야 합니다.

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

Amazon S3에 호출 권한을 부여하도록 Lambda 함수의 리소스 기반 권한 정책을 업데이트합니다.

AWS Management Console

1.    Lambda 함수가 있는 AWS 계정을 사용하여 Lambda 콘솔에서 함수 페이지를 엽니다.

2.    Amazon S3에서 호출할 Lambda 함수의 이름을 선택합니다.

3.    구성 탭에서 권한을 선택합니다.

4.    리소스 기반 정책 창에서 권한 추가를 선택합니다.

5.    정책 문 창에서 AWS 서비스를 선택합니다. 서비스 드롭다운 목록이 나타납니다.

6.    서비스 드롭다운 목록에서 S3를 선택합니다. 더 많은 텍스트 필드가 나타납니다.

7.    Source account(소스 계정)의 경우 S3 버킷을 호스팅하는 계정의 AWS 계정 ID를 입력합니다.

8.    Source ARN(소스 ARN)에 S3 버킷의 ARN을 입력합니다. 다음 형식을 사용합니다.

참고: bucket_name은 S3 버킷 이름으로 바꿉니다.

arn:aws:s3:::bucket_name

9.    작업에 대해 드롭다운 목록에서 lambda:InvokeFunction을 선택합니다.

10.    명령문 ID에 고유한 명령문 ID를 입력하여 정책 내에서 생성 중인 명령문을 구별합니다.

11.    Save(저장)를 선택합니다.

자세한 내용은 AWS Lambda에서 리소스 기반 정책 사용을 참조하세요.

AWS CLI

다음과 비슷한 add-permission API를 사용하여 Amazon S3에 호출 권한을 부여하도록 Lambda 함수의 리소스 기반 권한 정책을 업데이트합니다.

aws lambda add-permission \
--function-name LambdaFunction_name \
--action lambda:InvokeFunction \
--principal s3.amazonaws.com \
--source-arn arn:aws:s3:::bucket_name \
--statement-id "unique_statement_ID"

참고: LambdaFunction_name, bucket_nameunique_statement_ID를 사용자 변수로 바꿉니다.

Lambda 함수를 호출하는 Amazon S3 이벤트 알림 생성

AWS Management Console

Amazon S3 콘솔을 사용하여 이벤트 알림 사용 설정 및 구성의 지침을 따릅니다.

AWS CLI

다음과 비슷한 put-bucket-notification-configuration API를 사용하여 Lambda 함수를 호출하는 Amazon S3 이벤트 알림을 생성합니다.

참고: bucket_name은 S3 버킷 이름으로 바꿉니다.

aws s3api put-bucket-notification-configuration \
--bucket bucket_name \
--notification-configuration file://notification.json

다음과 비슷한 notification.json 파일을 생성하고 저장합니다.

참고: LambdaFunction_ARN을 Lambda 함수 ARN으로 바꿉니다. 접두사와 접미사를 필터 규칙에 대한 사용자 변수로 바꿉니다.

{
"LambdaFunctionConfigurations": [
    {
      "Id": "my-lambda-function-s3-event-configuration",
      "LambdaFunctionArn": "LambdaFunction_ARN",
      "Events": [ "s3:ObjectCreated:*" ],
      "Filter": {
        "Key": {
          "FilterRules": [
            {
              "Name": "prefix"|"suffix",
              "Value": "string"
            }
          ]
        }
      }
    }
  ]
}

Lambda 함수 테스트

Lambda 콘솔을 사용하여 Lambda 함수를 테스트하는 지침을 따릅니다.

이벤트 알림에 의해 함수가 호출되지 않는 경우 Amazon S3 이벤트 알림이 내 Lambda 함수를 호출하지 않는 이유는 무엇입니까?의 지침을 따릅니다.


관련 정보

내 Amazon S3 버킷에 대한 액세스 권한을 Lambda 실행 역할에 허용하려면 어떻게 해야 합니까?

AWS 공식
AWS 공식업데이트됨 일 년 전