Terraform Lambda 생성

임종혁·2024년 10월 28일

1. js 압축파일로

  data "archive_file" "lambda" {
  type        = "zip"
  source_file = "lambda.js"
  output_path = "lambda_function_payload.zip"
}

2. 특정 리소스 접근 가능하도록 Iam 역할 설정

resource "aws_iam_role" "iam_for_lambda" {
  name               = "iam_for_lambda"
  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action    = "sts:AssumeRole"
        Principal = {
          Service = "lambda.amazonaws.com"
        }
        Effect    = "Allow"
        Sid       = ""
      },
    ]
  })
}
  • Action = "sts:AssumeRole"

    • 이 역할을 가정할 수 있는 작업을 지정합니다. sts:AssumeRole은 주체(Principal)가 이 IAM 역할을 사용할 수 있도록 허용하는 AWS Security Token Service(STS) 작업입니다. 즉, Lambda가 이 역할을 사용할 수 있게 허락하는 것입니다.
  • Principal = { Service = "lambda.amazonaws.com" }

    • 이 역할을 가정할 수 있는 주체를 지정합니다. 여기서 Service = "lambda.amazonaws.com"는 AWS Lambda 서비스가 이 역할을 가정할 수 있음을 나타냅니다. 즉, 이 역할은 Lambda 함수가 사용할 수 있도록 설정됩니다.

즉 Lambda가 다른 aws 리소스를 접근하기 위한 설정

3. AWS IAM 역할에 기본 실행 정책

resource "aws_iam_role_policy_attachment" "lambda_basic_execution" {
  policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
  role       = aws_iam_role.iam_for_lambda.name
}

policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
IAM 역할 정책 첨부 리소스를 생성

role = aws_iam_role.iam_for_lambda.name
위에 설정한 규칙 적용

4. Lambda 함수 설정

resource "aws_lambda_function" "test_lambda" {
  filename      = data.archive_file.lambda.output_path
  function_name = "lambda_function_name"
  role          = aws_iam_role.iam_for_lambda.arn
  handler       = "lambda.test" 
  source_code_hash = data.archive_file.lambda.output_base64sha256
  runtime       = "nodejs18.x"

  environment {
    variables = {
      foo = "bar"
    }
  }
}
  1. 압축 파일 가져오기
  2. 함수 이름 지정
  3. 위 지정 규칙 지정
  4. hadler - 진입점 지정
  5. Lambda 함수의 소스 코드가 변경되었는지를 확인하기 위한 해시값입니다.
  6. runtime 지정

0개의 댓글