전체 글 46

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

AWS DirectConnect와 Transit G/W 연결해서 내부 통신 IaC

AWS Direct Connect와 Transit Gateway를 연결하여 On-Premise 장비에서 AWS 내의 Lambda를 호출할 수 있도록 하는 구조를 Terraform 코드1) IP 주소로 Lambda 호출2) DNS 이름으로 Lambda 호출 설계 개요Direct Connect: AWS와 On-Premise 간에 전용 네트워크 연결을 설정Transit Gateway: Direct Connect와 VPC 간의 라우팅을 관리Lambda: 호출 대상이 되는 Lambda 함수는 VPC 내에 배포되며, VPC를 통해 On-Premise에서 접근 가능Private Subnet: Lambda는 Private Subnet에 배치되어 외부 인터넷 없이 내부 네트워크에서 접근DNS 설정 (옵션): Lambda..

AWS 2024.10.22

AWS S3와 CloudFront 연동 IaC

S3 버킷: 파일을 저장할 곳CloudFront 배포: S3 파일을 전 세계적으로 배포할 Content Delivery Network(CDN)S3 버킷 정책: CloudFront가 S3 버킷에 접근할 수 있도록 허용# AWS Provider 설정provider "aws" { region = "ap-northeast-2" # 사용할 리전 (CloudFront는 글로벌이므로 S3 리전만 지정)}# 1. S3 버킷 생성resource "aws_s3_bucket" "my_bucket" { bucket = "my-unique-bucket-name" # S3 버킷 이름. 고유해야 함. # 버킷에 대해 기본적인 설정 (예: 웹 호스팅, 버전 관리 등) acl = "private" # CloudF..

AWS 2024.10.22

AWS EFS 리소스

EFS파일 시스템액세스 포인트 1. EFS 파일 시스템 (EFS File System)리소스 이름: aws_efs_file_system필수 입력 파라미터:creation_token: 파일 시스템을 생성할 때 고유하게 식별하는 토큰.tags: 태그 지정은 필수는 아니지만, 리소스를 잘 관리하기 위해 추천됩니다.옵션 입력 파라미터:encrypted: 파일 시스템의 데이터가 암호화될지 여부. 기본값은 false.performance_mode: 성능 모드를 설정합니다. 기본값은 generalPurpose이고, maxIO로 설정할 수 있습니다.throughput_mode: 파일 시스템의 처리량을 관리하는 방식. 기본값은 bursting, 다른 옵션은 provisioned.provisioned_throughput_..

AWS 2024.10.22

AWS IaC 배포 방법들

AWS에서 인프라를 코드(Infrastructure as Code, IaC)로 배포하는 방법에는 여러 가지가 있지만, 가장 좋은 방법은 구체적인 요구 사항과 프로젝트 환경에 따라 다름. 대표적인 IaC 도구들1. AWS CloudFormationAWS에서 제공하는 기본 IaC 도구로, 템플릿 파일을 사용하여 AWS 리소스를 정의하고 자동으로 배포장점: AWS에 최적화되어 있고, AWS 서비스들과 깊이 통합단점: YAML/JSON 문법이 복잡할 수 있으며, 사용자 정의가 제한될 수 있음2. TerraformHashiCorp에서 개발한 오픈 소스 IaC 도구로, AWS뿐만 아니라 다양한 클라우드 플랫폼에서 사용장점: 여러 클라우드를 지원하며, 모듈화 및 코드 재사용이 뛰어남. 상태 관리가 뛰어나며, 팀 협업..

AWS 2024.10.22

S3에서 IaC로 폴더 만들기

Terraform 구성 파일1. main.tf# AWS 제공자 설정provider "aws" { region = "ap-northeast-2" # 사용할 AWS 리전}# S3 버킷 생성resource "aws_s3_bucket" "my_bucket" { bucket = "my-unique-bucket-name" # S3 버킷의 이름 (유일해야 함) acl = "private" # 버킷 접근 제어 목록 (ACL) # 버킷에 태그 추가 tags = { Name = "MyS3Bucket" Environment = "Dev" }}# 첫 번째 단계 폴더 생성resource "aws_s3_bucket_object" "first_folder"..

AWS 2024.10.22