전체 글 41

AWS VPC, 2개 AZ, Subnet, Internet G/W, Application LB, Route53, DirectConnect, Transit G/W 연결 IaC 테스트 방법

아래는 두 개의 가용 영역(AZ)에 AWS VPC를 설정하고, 각각에 대해 퍼블릭 서브넷과 프라이빗 서브넷을 만들어 인터넷 게이트웨이, 애플리케이션 로드 밸런서(Application Load Balancer, ALB), Route 53을 설정하는 IaC 예시입니다. 외부에서 접근하는 방법도 설명하겠습니다.VPC 및 서브넷 생성 (Terraform 예시)provider "aws" { region = "ap-northeast-2"}# VPC 생성resource "aws_vpc" "main_vpc" { cidr_block = "10.0.0.0/16" enable_dns_support = true enable_dns_hostnames = true}# Internet Gateway 생성resource "a..

AWS 2024.10.23

AWS KMS(Key Management Service) IaC 사용법과 예시

AWS Key Management Service (KMS)는 데이터를 암호화하고 키 관리를 자동화하는 보안 서비스이다. 다양한 AWS 서비스에서 암호화 키를 사용하여 데이터를 보호할 수 있다. 아래는 KMS를 사용하여 여러 AWS 서비스와 통합하는 방법과 IaC(Infrastructure as Code)를 사용하여 KMS와 관련된 리소스를 설정하는 예시들을 소개한다.KMS의 주요 사용 사례S3 버킷: 데이터를 암호화하기 위해 S3 버킷과 통합 가능EBS 볼륨: EC2 인스턴스의 EBS 볼륨을 암호화RDS: RDS에서 저장된 데이터 암호화Lambda 함수: 환경 변수 또는 애플리케이션에서 사용하는 데이터를 암호화.EFS: 파일 시스템 데이터를 암호화Secrets Manager: 암호나 민감한 데이터를 보호..

AWS 2024.10.23

AWS Roles(역할) aws_iam_role의 assume_role_policy 사용법

위에서 jsonencode 블록 내의 파라미터는 IAM 역할(roles)을 생성할 때 Lambda 함수가 이 역할을 "가정(Assume)"할 수 있도록 설정하는 Assume Role Policy 이다. 이 정책은 AWS 리소스가 역할을 가정(assume)할 수 있는 권한을 정의하는 역할을 한다.resource "aws_iam_role" "lambda_exec_role" { name = "lambda_exec_role" assume_role_policy = jsonencode({ Version = "2012-10-17", Statement = [{ Effect = "Allow", Principal = { Service = "lambda.amazonaws.com"..

AWS 2024.10.23

AWS IAM 관리형 정책 (Managed Policies)

AWS에서는 다양한 관리형 정책(Managed Policies)을 제공하여 IAM 사용자, 그룹, 역할에 손쉽게 권한을 부여할 수 있다. AWS 관리형 정책은 서비스와 관련된 여러 작업을 수행할 수 있는 권한을 미리 정의한 것이다. 여기에는 특정 서비스에 대해 읽기, 쓰기, 관리 등의 권한이 포함되어 있다. 아래는 AWS에서 자주 사용되는 관리형 정책들과 그 설명이다1. AmazonS3FullAccessARN: arn:aws:iam::aws:policy/AmazonS3FullAccess설명: 이 정책은 사용자 또는 리소스에 S3 서비스 전체에 대한 읽기/쓰기 권한을 부여한다. 즉, S3 버킷을 생성하고 삭제할 수 있으며, 모든 객체에 대한 읽기 및 쓰기 작업을 수행할 수 있다.2. AmazonS3Read..

AWS 2024.10.23

AWS IAM(Identity and Access Management) 사용법

AWS IAM(Identity and Access Management)은 AWS 리소스에 대한 액세스 제어를 관리하는 서비스이다. AWS의 다양한 리소스와 서비스를 사용할 때 IAM을 사용하여 접근 권한을 설정하고 관리한다. 각 리소스는 IAM 권한을 통해 AWS 리소스에 액세스할 수 있고, 사용자, 애플리케이션, 서비스가 안전하게 AWS 리소스에 접근할 수 있도록 역할을 정의한다.IAM이 필요한 경우IAM은 AWS 리소스에 대한 접근 권한이 필요할 때 사용됩니다. 일반적으로 다음과 같은 경우 IAM 설정이 필요하다.AWS 콘솔에 사용자로 로그인하여 리소스를 관리하려는 경우애플리케이션이 특정 AWS 리소스(S3, DynamoDB, Lambda 등)에 접근해야 할 경우AWS 서비스(예: Lambda, EC..

AWS 2024.10.23

AWS Lambda IaC 적용 방법

Lambda 리소스 구성 요소 및 사용 여부Lambda 함수 구성에서 다양한 리소스가 있다.애플리케이션 (Application): Lambda 함수는 기본적으로 AWS Lambda에 대한 함수 단위로 관리되지만, 여러 함수나 관련 리소스를 한데 모으는 개념으로 애플리케이션을 구성할 수 있다.필수 여부: 선택 사항 (기본적으로 Lambda 함수 단위로도 충분히 운영 가능)리소스명: AWS SAM(Application)을 사용하면 aws_serverless_application으로 정의함수 (Function): Lambda의 핵심 리소스로, 코드가 실행되는 역할필수 여부: 필수리소스명: aws_lambda_function필수 파라미터:function_name: 함수의 이름role: Lambda가 실행될 때 ..

AWS 2024.10.23

AWS security_groups 멀티 지정

security_groups = [aws_security_group.ec2_sg.id] 표현에서 security_groups는 하나 이상의 보안 그룹을 적용하기 위해 리스트(배열) 형식으로 값을 입력. 이 리스트 안에 여러 보안 그룹의 ID를 넣을 수 있고, 각 보안 그룹은 AWS에서 정의된 aws_security_group 리소스를 참조하게 됨  security_groups = [aws_security_group.ec2_sg.id]에서 security_groups는 여러 개의 보안 그룹을 적용할 수 있도록 리스트로 값을 받는다. aws_security_group.ec2_sg.id는 하나의 보안 그룹을 참조하는 것으로, 여기서 해당 보안 그룹의 ID를 가져온다.리스트에 여러 개의 보안 그룹 추가: 보안 ..

AWS 2024.10.23

AWS Aurora Serverless DB 생성, Lambda로 이벤트 전송 IaC

Terraform을 사용하여 Aurora Serverless DB, 테이블, 그리고 Lambda 함수를 설정하고, Aurora의 데이터 입력 이벤트가 Lambda를 호출하도록 트리거를 설정provider "aws" { region = "ap-northeast-2"}# Aurora Serverless Cluster 생성resource "aws_rds_cluster" "aurora" { cluster_identifier = "aurora-serverless-cluster" engine = "aurora-mysql" engine_version = "5.7.mysql_aurora.2.07.1" database_name = "myd..

AWS 2024.10.23

AWS EC2, Lambda, EFS 생성 및 EFS 접근 IaC

Terraform을 사용한 EFS 사용 설정provider "aws" { region = "ap-northeast-2"}# EFS 파일 시스템 생성resource "aws_efs_file_system" "efs" { encrypted = true # 파일 시스템 암호화 옵션 lifecycle_policy { transition_to_ia = "AFTER_30_DAYS" # 인액티브 파일들을 Infrequent Access로 이동 } tags = { Name = "MyEFS" }}# EFS 마운트 타겟 생성 (EC2에서 접근할 수 있도록)resource "aws_efs_mount_target" "efs_mount" { count = length(var.subnet..

AWS 2024.10.23