대기열의 메시지를 처리하도록 람다 설정

6545 단어 awsterraformdevops
지난 포스팅에서 how to create an SNS topic to publish the bounce notification to an SQS queue 을 봤습니다. 이 게시물에서는 대기열에서 사용할 수 있는 메시지를 처리하기 위해 람다를 설정합니다.

1단계: AWS 람다 생성



Resource: aws_lambda_function 을 사용하여 람다 함수를 생성합니다.

resource "aws_lambda_function" "SESBouncesLambda" {
  filename = "./zips/lambda.zip"
  function_name = "SESBouncesLambda"
  role = aws_iam_role.ses_bounces_lambda_role.arn
  handler = "Lambda::Lambda.Function::FunctionHandler"
  source_code_hash = filebase64sha256("./zips/lambda.zip")
  runtime = "dotnetcore3.1"
}

  • 배포 패키지의 파일 이름(경로 포함)을 설정합니다. 임시 zip 파일을 만듭니다. 실제 람다에 대해서는 다음 포스트에서 살펴보겠습니다.
  • 람다의 고유 이름을 설정합니다.
  • 권한을 부여할 수 있도록 Lambda 함수에 대한 IAM 역할을 설정합니다. 이에 대해서는 아래에서 살펴보겠습니다.
  • 진입점을 설정합니다. 이는 콘솔 앱의 주요 기능과 유사합니다.
  • 함수가 변경될 때 업데이트를 트리거할 수 있도록 소스 코드 해시를 설정합니다.
  • 런타임을 .Net Core 3.1로 설정하여 AWS가 람다 함수가 .Net Core 3.1을 사용하여 빌드되었음을 알 수 있도록 합니다.

  • 2단계: Lambda에 대한 IAM 역할 생성



    Data Source: aws_iam_policy_document을 사용하여 람다 서비스가 임시 자격 증명을 얻기 위해 IAM 역할을 맡도록 허용합니다.

    Resource: aws_iam_role을 사용하여 람다에 대한 IAM 역할을 설정합니다.

    data "aws_iam_policy_document" "ses_bounces_lambda_role_iam_policy" {
      statement {
        actions = ["sts:AssumeRole"]
        principals {
          type = "Service"
          identifiers = ["lambda.amazonaws.com"]
        }
      }
    }
    
    resource "aws_iam_role" "ses_bounces_lambda_role" {
      name = "SESBouncesLambdaRole"
      assume_role_policy = data.aws_iam_policy_document.ses_bounces_lambda_role_iam_policy.json
    }
    

  • AWS 서비스가 IAM 역할을 맡도록 허용하는 AssumeRole 사용
  • 람다만 IAM 역할을 맡을 수 있도록 정책을 제한합니다.
  • 정책을 역할에 연결합니다.

  • 3단계: SQS 대기열에서 메시지를 읽을 수 있는 람다 액세스 권한 부여



    Resource: aws_iam_role_policy_attachment을 사용하여 람다가 SQS 대기열에서 메시지를 읽을 수 있도록 IAM 정책을 연결합니다.

    resource "aws_iam_role_policy_attachment" "lambda_sqs_role_policy" {
      role = aws_iam_role.ses_bounces_lambda_role.name
      policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaSQSQueueExecutionRole"
    }
    

  • 이 정책이 연결되어야 하는 역할을 설정합니다
  • .
  • 함수가 Amazon SQS에서 항목을 읽고 CloudWatch Logs에 로그를 쓰는 데 필요한 권한이 있는 AWS 관리형 정책 AWSLambdaSQSQueueExecutionRole을 추가합니다.

  • 4단계: 람다에 대기열 액세스 권한 부여



    Resource: aws_lambda_event_source_mapping을 사용하여 람다가 SQS 대기열에서 이벤트를 가져올 수 있도록 합니다.

    resource "aws_lambda_event_source_mapping" "event_source_mapping" {
      event_source_arn = aws_sqs_queue.ses_bounces_queue.arn
      function_name = aws_lambda_function.SESBouncesLambda.arn
    }
    

  • 대기열을 ses_bounces_queue로 설정합니다.
  • 람다를 SESBouncesLambda로 설정합니다.

  • 다음 단계



    code here 을 볼 수 있습니다.

    지금까지 반송 알림을 SQS 대기열에 게시하도록 AWS를 구성했습니다. 다음 포스트에서는 사용자 정의 메시지를 Slack 채널에 보내는 람다 함수를 작성하는 방법을 알아보겠습니다.

    좋은 웹페이지 즐겨찾기