-
여러 고객에게 정기적으로 메일 발송하기
회사에서 일하다 보면 비즈니스 부문에서 정기적으로 메일을 보내는 업무를 하는데캘린더에 특정시기에 알람을 설정해두고 그 시기가 되면 손으로 일일히 메일을 발송하는 것을 보게 됩니다.자동화시키면 신경쓰지 않아도 될텐데 그 작업을 자동화하지 않고 계속 수작업을 하는 데왜 그런지 물어보면 이런 작은 작업으로 개발팀이나 업무개선팀에 의뢰하기가 어렵다거나이정도 작업은 그냥 수작업으로 하는게 편하다던가, 그런거 할 줄 모른다가 대답의 주를 이룹니다.그래서 간단하게 특정 날짜에 리스트에 있는 고객들에게 자동으로 메일을 발송하는 방법을 알려드립니다.여러가지 방법이 있겠지만 간단하게 구현을 하기 위해서전제로서 현재 회사에서 구글 워크스페이스를 이용중인 분들을 위한 팁입니다.구글 앱 스크립트와 구글 Sheet를 이용하는 방..
2025.09.01 13:43 -
AWS에서 DDOS공격을 막기 위한 설정하기
AWS WAF, CloudFront, 그리고 Shield Standard 조합은 대규모 DDoS 공격과 과도한 다운로드 요청으로 인한 비용 급증을 효과적으로 방어하고 완화하는 강력한 전략입니다.각 서비스는 다음과 같은 역할을 수행합니다:AWS Shield Standard: 추가 비용 없이 L3/L4 DDoS 공격에 대한 기본적인 자동 보호를 제공합니다.Amazon CloudFront: 콘텐츠를 엣지 로케이션에 캐싱하여 원본 서버의 부하를 줄이고, DDoS 공격 트래픽을 엣지에서 흡수하며, WAF와 연동됩니다.AWS WAF: CloudFront에 연동되어 L7 DDoS 공격, 웹 취약점 공격, 그리고 과도한 요청(다운로드 요청 등)을 애플리케이션 계층에서 필터링하고 차단합니다.다음은 설정 순서와 각 단계별..
2025.06.27 12:35 -
테라폼에서 루프문 사용하기4
목차1. 테라폼에서 루프문 사용하기12. 테라폼에서 루프문 사용하기23. 테라폼에서 루프문 사용하기34. 테라폼에서 루프문 사용하기4for_each를 사용하는 장점1. 동적 리소스 관리for_each문은 컬렉션(map 또는 set)을 기반으로 리소스를 동적으로 생성, 관리 및 destroy를 가능하게 합니다. 이 동적 접근 방식을 통해 인프라는 Terraform 코드의 구성을 수동으로 업데이트하지 않고도 terraform.tfvars에 정의된 입력변수 데이터의 변경만으로도 자동으로 구성을 변경할 수 있습니다.예를 들어, 아래 예와 같이 프로젝트 이름 목록을 기반으로 동적 개수의 S3 버킷을 프로비저닝하기 위한 인프라 프로비저닝을 위한 IaC를 작성할 수 있습니다.variable.tf# variable.t..
2024.08.23 18:51 -
테라폼에서 루프문 사용하기3
목차1. 테라폼에서 루프문 사용하기12. 테라폼에서 루프문 사용하기23. 테라폼에서 루프문 사용하기34. 테라폼에서 루프문 사용하기4for_each의 실제 사용 사례1. 리소스 체이닝리소스 체이닝은 한 리소스의 구성이 다른 리소스의 출력에 따라 달라지는 리소스 간 종속성을 만드는 것을 포함합니다. 이는 특정 리소스를 순차적으로 프로비저닝해야 하는 인프라 설정에서 일반적입니다.리소스 체이닝을 더 잘 이해하기 위해 VPC를 설정하고 VPC 내에 서브넷을 배포하는 일반적인 시나리오를 살펴보겠습니다.variable.tf# variable.tfvariable "networks" { description = "Map of networks configurations" type = map(string({ ci..
2024.08.23 18:48 -
테라폼에서 루프문 사용하기2
목차1. 테라폼에서 루프문 사용하기12. 테라폼에서 루프문 사용하기23. 테라폼에서 루프문 사용하기34. 테라폼에서 루프문 사용하기4for_each는 어떻게 작동하나요?더 잘 이해하기 위해 for_each문의 실제 사용 사례를 살펴보겠습니다.EC2 인스턴스의 식별자인 각 키의 문자열 값과 인스턴스 유형 및 AMI ID를 포함하는 또 다른 맵인 인스턴스 구성 맵이 있다고 가정해 보겠습니다.variable.tf# variable.tfvariable "instances" { description = "Map of instance configurations" type = map(object({ ami = string instance_type = string })) defaul..
2024.08.23 18:43
-
여러 고객에게 정기적으로 메일 발송하기
회사에서 일하다 보면 비즈니스 부문에서 정기적으로 메일을 보내는 업무를 하는데캘린더에 특정시기에 알람을 설정해두고 그 시기가 되면 손으로 일일히 메일을 발송하는 것을 보게 됩니다.자동화시키면 신경쓰지 않아도 될텐데 그 작업을 자동화하지 않고 계속 수작업을 하는 데왜 그런지 물어보면 이런 작은 작업으로 개발팀이나 업무개선팀에 의뢰하기가 어렵다거나이정도 작업은 그냥 수작업으로 하는게 편하다던가, 그런거 할 줄 모른다가 대답의 주를 이룹니다.그래서 간단하게 특정 날짜에 리스트에 있는 고객들에게 자동으로 메일을 발송하는 방법을 알려드립니다.여러가지 방법이 있겠지만 간단하게 구현을 하기 위해서전제로서 현재 회사에서 구글 워크스페이스를 이용중인 분들을 위한 팁입니다.구글 앱 스크립트와 구글 Sheet를 이용하는 방..
-
AWS에서 DDOS공격을 막기 위한 설정하기
AWS WAF, CloudFront, 그리고 Shield Standard 조합은 대규모 DDoS 공격과 과도한 다운로드 요청으로 인한 비용 급증을 효과적으로 방어하고 완화하는 강력한 전략입니다.각 서비스는 다음과 같은 역할을 수행합니다:AWS Shield Standard: 추가 비용 없이 L3/L4 DDoS 공격에 대한 기본적인 자동 보호를 제공합니다.Amazon CloudFront: 콘텐츠를 엣지 로케이션에 캐싱하여 원본 서버의 부하를 줄이고, DDoS 공격 트래픽을 엣지에서 흡수하며, WAF와 연동됩니다.AWS WAF: CloudFront에 연동되어 L7 DDoS 공격, 웹 취약점 공격, 그리고 과도한 요청(다운로드 요청 등)을 애플리케이션 계층에서 필터링하고 차단합니다.다음은 설정 순서와 각 단계별..
-
테라폼에서 루프문 사용하기4
목차1. 테라폼에서 루프문 사용하기12. 테라폼에서 루프문 사용하기23. 테라폼에서 루프문 사용하기34. 테라폼에서 루프문 사용하기4for_each를 사용하는 장점1. 동적 리소스 관리for_each문은 컬렉션(map 또는 set)을 기반으로 리소스를 동적으로 생성, 관리 및 destroy를 가능하게 합니다. 이 동적 접근 방식을 통해 인프라는 Terraform 코드의 구성을 수동으로 업데이트하지 않고도 terraform.tfvars에 정의된 입력변수 데이터의 변경만으로도 자동으로 구성을 변경할 수 있습니다.예를 들어, 아래 예와 같이 프로젝트 이름 목록을 기반으로 동적 개수의 S3 버킷을 프로비저닝하기 위한 인프라 프로비저닝을 위한 IaC를 작성할 수 있습니다.variable.tf# variable.t..
-
테라폼에서 루프문 사용하기3
목차1. 테라폼에서 루프문 사용하기12. 테라폼에서 루프문 사용하기23. 테라폼에서 루프문 사용하기34. 테라폼에서 루프문 사용하기4for_each의 실제 사용 사례1. 리소스 체이닝리소스 체이닝은 한 리소스의 구성이 다른 리소스의 출력에 따라 달라지는 리소스 간 종속성을 만드는 것을 포함합니다. 이는 특정 리소스를 순차적으로 프로비저닝해야 하는 인프라 설정에서 일반적입니다.리소스 체이닝을 더 잘 이해하기 위해 VPC를 설정하고 VPC 내에 서브넷을 배포하는 일반적인 시나리오를 살펴보겠습니다.variable.tf# variable.tfvariable "networks" { description = "Map of networks configurations" type = map(string({ ci..
-
테라폼에서 루프문 사용하기2
목차1. 테라폼에서 루프문 사용하기12. 테라폼에서 루프문 사용하기23. 테라폼에서 루프문 사용하기34. 테라폼에서 루프문 사용하기4for_each는 어떻게 작동하나요?더 잘 이해하기 위해 for_each문의 실제 사용 사례를 살펴보겠습니다.EC2 인스턴스의 식별자인 각 키의 문자열 값과 인스턴스 유형 및 AMI ID를 포함하는 또 다른 맵인 인스턴스 구성 맵이 있다고 가정해 보겠습니다.variable.tf# variable.tfvariable "instances" { description = "Map of instance configurations" type = map(object({ ami = string instance_type = string })) defaul..
-
테라폼에서 루프문 사용하기1
목차1. 테라폼에서 루프문 사용하기12. 테라폼에서 루프문 사용하기23. 테라폼에서 루프문 사용하기34. 테라폼에서 루프문 사용하기4Terraform에서 Looping이 필요한 이유는 무엇인가요?Terraform CLI를 사용하여 인프라스트럭처 코드(IaC)를 관리할 때 , 비슷하지만 동일하지 않은 여러 리소스를 별도로 생성해야 하는 상황이 자주 발생합니다.여기에는 여러 가용성 영역에 걸쳐 여러 인스턴스를 배포하거나, 여러 DNS 레코드를 설정하거나, 수많은 사용자 계정을 관리하는 것까지 다양할 수 있습니다.각 리소스에 대한 구성을 수동으로 작성하는 것은 지루해지고 오류와 불일치의 가능성이 높아집니다.여기서 Terraform의 루핑이 작용합니다. 루핑 구조는 다음과 같습니다. for문, for_each문..
-
ec2인스턴스 기동/정지 스케쥴링
1. 정책(policy)생성람다가 ec2의 start/stop의 실행 가능한 권한을 정책(policy)에 부여lambda_start_stop_ec2_policy{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:Start*", "ec2:Stop*" ], "Resource": "*" } ]}2. Role 생성Lambda_EC2_StartStopRole란 이름의 Role를 생성해주고생성한 lambda_start_stop_ec2_policy 정책을..
-
쉘 스크립트에서 메뉴 만들기
심플 메뉴 만들기 이 예제에서는 select문을 사용해 간단한 메뉴를 표시하는 방법을 설명하겠습니다. 여기서 select명령은 목록에 있는 항목들을 넘버링을 하여 출력하게 됩니다. 다만 이 경우는 선택을 하고 로직을 종료하려면 사용자는 Ctrl + c 를 눌러 스크립트를 종료해야합니다. #!/bin/bash # Define the menu list here select brand in Samsung Sony iphone symphony Walton do echo "You have chosen $brand" done case문을 이용한 메뉴 이 예제에서는 case 문을 사용하여 bash 메뉴를 만드는 방법을 보여줍니다. 위에 예제에서와 마찬가지로 select명령은 목록에 있는 항목들을 넘버링을 하여 출력하..