본문 바로가기
반응형

전체 글156

[golang] aws s3 deletemarker 삭제하기(s3 object 복구하기) 1. s3 delete marker란 s3에서는 bucket별로 버전관리 기능을 활성화하면 해당 bucket 내부의 object에 한해 버전관리를 할 수 있습니다. 버전관리를 하게되면 object별로 유니크한 versionId를 갖게되며 object에 변경이 생긴경우 기록되어 git처럼 과거 commit으로 돌아갈 수 있습니다. 그러나 무거운 파일의 과거 기록을 모두 보관하고 있게 되면 불필요한 aws 비용이 발생하게되니 주의해야 합니다. 버전관리를 하는 객체를 삭제하게되면 조금 특이한 현상이 발생합니다. 필요 없어진 object라 삭제더라도 버전관리 기능을 켜놓는다면 과거 내용을 모두 보관하게 됩니다. (api cli나 sdk를 사용할때 versionId를 이용해 삭제하게 되면 정상적으로 삭제가 되지만.. 2022. 4. 28.
[terraform] 테라폼 시작하기 (terraform tutorial, 테라폼 예제) aws를 잘 몰라도 테라폼을 할 수 있도록 간단한 예제 게시글을 작성합니다 vpc셋팅같이 aws 지식이 없을때 접근하기 힘든 리소스들 보다는 쉬운 s3버킷만 가지고 테라폼 사용법을 정리할 예정입니다. 이번 게시글에서는 테라폼을 aws와 연동하고 s3버킷을 생성하는 방법에 대해서 정리합니다. aws계정에 테라폼을 이용해 버킷을 생성하고 삭제하는 예제입니다. 테라폼을 사용하려면 테라폼과 aws cli를 설치해야 합니다. 패키지매니저의 도움을 받거나 공식홈페이지에 가서 설치합니다 예제 소스코드는 아래 깃헙 레포에서 확인할 수 있습니다.(main 브랜치) GitHub - jaeho310/terraform-study Contribute to jaeho310/terraform-study development by .. 2022. 4. 22.
[terraform] 테라폼이란 1. terraform이란 terraform이란 HashiCorp에서 만든 IAC를 지원하는 솔루션입니다. 2. terraform을 사용하는 이유 aws console에 들어가서 gui를 보며 클릭하여 인프라를 구축할 수도 있습니다. 그러나 aws console을 이용하면 히스토리 추적이 힘들고 유지보수하기 힘들다는 단점이 생깁니다. 테라폼을 사용하면 이러한 단점이 해소됩니다. 인프라를 코드로 작성하므로 재사용성이 좋으며 유지보수에 유리합니다. 3. 테라폼 구성요소 테라폼 구성요소는 테라폼코드를 작성할때 사용되며 .tf의 확장자의 파일에 작성하게 됩니다. provider - 인프라의 종류 resource - 인프라 자원 state - 자원의 상태(파일형태로 저장되는 테라폼의 결과물) module - 모듈.. 2022. 4. 21.
[aws] aws vpc 구축하기 이번 게시글에서는 aws vpc를 구축하는 방법에 대해 정리합니다. 1. AWS VPC란 VPC는 Virtual Private Cloud의 약자로 aws 클라우드 내 독립된 섹션을 나누는 서비스 입니다. 독립된 가상 클라우드 네트워크로 리소스를 격리시킬때 사용할 수 있습니다. VPC를 사용하여 ip대역, 인터페이스, 서브넷, 라우팅 테이블, 인터넷 게이트웨이, 보안 그룹, 네트워크 ACL 등을 제어할 수 있습니다. (1) 서브넷 서브넷은 마스킹을 통해 네트워크 범위를 나눈 망입니다. 일반적으로 IDC의 게이트웨이(라우터)의 주소는 호스트ID로 254번을 사용하지만 AWS VPC 가상 라우터의 호스트ID는 1번이라는 특징이 있습니다. 192.168.100.25 의 IP에 255.255.255.0의 서브넷 .. 2022. 4. 18.
[golang] aws-go-sdk-v2를 사용하여 s3 bucket lifecycle 적용하기(PutBucketLifecycleConfiguration 사용법) 이번 게시글에서는 aws-go-sdk-v2를 사용하여 bucket의 lifecyle 적용방법을 정리합니다. 일반적으로 aws 서비스의 변경은 테라폼같은 IAC도구를 사용하지만 테라폼으로 관리하지 않는 버킷들까지 모두 추적하거나, 추가적인 로직이 필요한경우 sdk를 이용하여 자체 개발할 필요가 있습니다. 1. s3 lifecycle이란 aws s3 lifecycle은 버킷 내 object의 수명주기를 관리하기 위한 기능으로 버킷별로 lifecycle을 생성해놓으면 해당 버킷내에 생성된 object의 storage type을 변경하거나 삭제하는 등의 작업을 할 수 있습니다.(30일 뒤에 특정 조건에 맞는 object를 삭제하거나, 일주일 뒤에 storage type을 glacier로 하는 등으로 활용할 수 .. 2022. 4. 15.
[golang] go언어 mockup을 통한 테스트 코드 작성법(go mock) 이번 게시글에서는 mockup을 통한 테스트 코드 작성법에 대해서 정리합니다. 1. 테스트종류 프로그래밍의 테스트방식은 상태기반 테스트와 행위기반 테스트로 나뉩니다. (1). 상태기반테스트 db등의 상태를 직접 변경하고 정상적으로 변경됐는지 조회하는 테스트 방식을 말하며 통합테스트라고 불립니다. (2). 행위기반 테스트 내 코드의 행위만 검증하는 테스트로 유닛테스트라고 불립니다. 내 코드의 행위만 검증해야하므로 외부에 의존한 모듈들은 mockup하여 테스트합니다. 실제 모듈을 만들어 사용하기에 시간, 비용 등의 Cost가 너무 높다면, 가짜객체를 만들어 가짜객체가 원하는행위를 하도록 정의한 후 타 컴포넌트에 의존하지 않는 순수한 나의 코드만 테스트할 수 있습니다. 가짜객체를 만드는 행위를 mockup이라.. 2022. 4. 11.
[golang] aws-sdk-go-v2 의 s3 copyobject 사용법(copyobject example) 이번 게시글에서는 aws-sdk-go-v2의 copyobject 사용법에 대해 정리합니다. object의 설정을 관리하고 싶을때 lifecycle을 이용할수도 있지만, 추가적인 로직이 필요한경우 직접 개발해야 합니다. 그런 경우 copyobject를 사용해야 합니다. 1. aws-sdk-go-v2 aws 클라이언트 라이브러리입니다. 아래의 명령어로 관련 라이브러리를 다운받아 사용할 수 있습니다. go get "github.com/aws/aws-sdk-go-v2/service/s3" go get "github.com/aws/aws-sdk-go-v2/service/types" 2. copyobject란 aws s3의 object를 복사하는 기능을 제공합니다. object를 복사하는 경우에도 사용할수 있지만 .. 2022. 4. 11.
[aws] golang으로 aws lambda(serverless) 구축하기 이번게시글에서는 aws serverless 구축방법에 대해 정리합니다. 1. serverless란 서버가 없는 형태의 서버를 말하지만 정말 서버가 없는건 아닙니다. 서버가 없다는 의미는 평소에 따로 관리해줘야 하는 서버가 없다는 뜻 입니다. 필요할때마다(api 호출이 일어날때마다) aws에서 서버를 빌려서 잠깐 사용하고 다시 반납하기에 서버리스라고 부릅니다. 비용은 메모리 사용량과 하나의 request를 처리하는데 소요된 시간을 곱해서 산정됩니다. 2. aws Lambda lambda란 aws에서 제공하는 serverless를 위한 서비스 입니다. aws console에 접속하여 lambda function을 생성할 수 있습니다. 이름을 설정해주고 런타임으로 go.1x로 설정해줍니다. 3. 트리거 구성 .. 2022. 4. 8.
[개발상식] ipconfig ifconfig 보는법(서브넷마스크, 브로드캐스팅, 게이트웨이, ip주소) 이번 게시글에서는 ipconfig, ifconfig 등의 명령어에서 나오는 ip주소 서브넷마스크, 게이트웨이 브로드캐스팅에 대해 정리합니다. 아래는 제 윈도우, 맥북, 스마트폰(와이파이)의 IP주소입니다. 1. ip주소란? ip주소는 인터넷에 있는 컴퓨터들의 고유한 주소로 컴퓨터를 식별하기 위해 사용합니다. (컴퓨터에 랜카드, 와이파이 동글 같은 인터페이스가 있어야 인터넷 통신을 할 수 있습니다) 아이피는 8bit씩 4자리, 총32bit로 이루어져 있습니다. ipconfig, ifconfig 등을 입력했을떄 172.xx.xxx.xxx, 192.168.xxx.xxx, 10.xxx.xxx.xxx(8자리의 2진수 4묶음을 10진수로 바꾸어 표기) 등이 IP주소입니다. ip는 0.0.0.0 ~ 255.255.2.. 2022. 3. 18.
반응형