AWS Aurora MySQL에서 Lambda 함수 호출하기
AWS Aurora MySQL에서 lambda_sync, lambda_async 함수를 사용하여 lambda 함수를 실행할 수 있습니다. stored procedure를 통해 lambda 함수를 호출하는 건 더 이상 지원하지 않으므로 설명하지 않습니다.
AWS Aurora MySQL에서 lambda_sync, lambda_async 함수를 사용하기 위해서는 IAM Role 설정 및 MySQL 권한 설정을 해야 합니다.
IAM Role
IAM Role 생성
아래의 내용을 trust-policy.json 파일로 저장하고, aws cli 명령어를 실행합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "rds.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
$ aws iam create-role --role-name lambda-test-role --assume-role-policy-document file://trust-policy.json
Lambda Invoke 권한 설정
아래의 내용 중 resource에 실행할 lambda function arn으로 수정하여 lambda-invoke.json 파일로 저장하고, aws cli 명령어를 실행합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "lambda:InvokeFunction",
"Resource": "${lambdaFunctionARN}"
}
]
}
$ aws iam put-role-policy --role-name lambda-test-role --policy-name lambda-invoke --policy-document file://lambda-invoke.json
AWS Aurora MySQL
Manage IAM roles
AWS RDS 콘솔을 사용하여 생성한 IAM Role을 추가해주세요. Add role 후에 조금만 기다리면 Pending 상태에서 Active 상태로 전환됩니다.
DB cluster parameter group
AWS Aurora MySQL에 설정한 DB cluster parameter group의 aws_default_lambda_role에 생성한 IAM Role ARN을 설정해주세요.
MySQL 권한 설정
MySQL 콘솔에 접속하여 lambda_sync, lambda_async 함수를 실행할 유저한테 권한을 설정합니다.
GRANT AWS_LAMBDA_ACCESS TO user@domain-or-ip-address
lambda 함수 실행
위의 IAM Role 및 MySQL 권한 설정을 모두 하셨으면, 아래의 명령어를 통해 lambda 함수를 호출할 수 있습니다. SELECT문을 사용하여 함수 호출하는 방식입니다. SELECT 문을 사용하여 lambda 함수를 직접 실행할 수도 있고, stored procedure 및 trigger를 활용하여 lambda 함수를 실행할 수 있습니다.
--lambda_sync example
SELECT lambda_sync(
lambda_function_ARN,
JSON_payload
);
SELECT lambda_sync(
'${lambdaFunctionARN}',
'{"operation": "ping"}'
);
--lambda_async example
SELECT lambda_async(
lambda_function_ARN,
JSON_payload
);
SELECT lambda_async(
'${lambdaFunctionARN}',
'{"operation": "ping"}'
);
참고
Invoking a Lambda function from an Amazon Aurora MySQL DB cluster - Amazon Aurora
Be careful when invoking an AWS Lambda function from triggers on tables that experience high write traffic. INSERT, UPDATE, and DELETE triggers are activated per row. A write-heavy workload on a table with INSERT, UPDATE, or DELETE triggers results in a la
docs.aws.amazon.com
'AWS' 카테고리의 다른 글
AWS ECR Multi-Architecture 이미지 관리하기 (0) | 2023.03.29 |
---|---|
AWS VPC Endpoint (AWS PrivateLink)의 이해와 활용 방법 (0) | 2023.03.23 |
AWS 비용 최적화 (0) | 2022.10.07 |
AWS SSM을 사용하여 Port Forwarding 하기 (0) | 2022.09.20 |
AWS SSM 사용하여 EC2 Instance 접속하기 (0) | 2022.09.20 |