[ AWS-Terraform ] 테라폼을 이용한 아키텍처 구축

2024. 7. 18. 17:30·🌥️Cloud Study🌥️/AWS

1. 테라폼 이론 및 환경설정

2. 테라폼 기본 사용법

3. 테라폼 모듈 작성 및 활용하기

4. variable, local, output 등

5. 상태 저장소, 상태 관리 개념

6. 리소스 강제 교체 및 프로비저너

 


1. Terraform, AWS CLI 설치

Terraform 설치

 

 

Install | Terraform | HashiCorp Developer

Explore Terraform product documentation, tutorials, and examples.

developer.hashicorp.com

 

Terraform 공식 사이트에서 AMD64 다운로드

압축해제 후 시스템 속성-환경 변수-시스템 변수의 Path에 Terraform 폴더 추가

 

powershell에서 `terraform`입력 시 위와 같이 나오면 설치 성공

 

vscode에서 테라폼 코드를 쉽게 작성할 수 있도록 extentions를 추가한다

 

AWS CLI 설치

 

 

Install or update to the latest version of the AWS CLI - AWS Command Line Interface

When updating from a previous version, the unzip command prompts to overwrite existing files. To skip these prompts, such as with script automation, use the -u update flag for unzip. This flag automatically updates existing files and creates new ones as ne

docs.aws.amazon.com

 

AWS와의 연동을 위해 AWS CLI를 설치해주자. 

 

AWS CLI install and update instructions 부분을 참고하면 된다.

https://awscli.amazonaws.com/AWSCLIV2.msi 링크를 클릭해서 다운로드 한 후, 아래의 코드들을 순차적으로 실행해준다.

 

# Windows용 AWS CLI MSI 설치 프로그램 다운 후 실행
msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi

# 버전 확인
aws --version

설치 완료

 

 

AWS CLI와 계정 연동

액세스 키 만들기

 AWS 콘솔에서 IAM 대시보드-액세스 관리의 사용자 탭으로 이동하여 유저를 생성해주자.

(계정 산하의 이름을 부여하는 것이기 때문에 중복되어도 상관 없다)

권한은 일단 Administrator Access를 부여해줬다.

 

사용자 생성이 완료되었으면 계정명을 클릭한 뒤 보안 자격 증명-액세스 키 만들기를 클릭한다.

사용 사례로는 Command Line Interface(CLI)를 선택해주고 설명 태그는 자유롭게 지정해주자.

 

액세스 키를 꼭! 백업해둬야 한다 . . . 다 밀고 다시 해야 할 수 도 있음 ㅜ.ㅜ

잃어버릴까 두려운 사람은 `.csv 파일 다운로드`를 클릭해서 로컬디바이스나 티스토리 비공개글 같은걸로 보관해두자.

 

아까 Administrater Access 권한을 부여해줬으니까 호오옥시 모르니 MFA device도 할당해주자

 

추가적으로 인증 안 한 유저의 요청을 거부하도록 설정해주자.

사용자-계정명 선택-권한-인라인 정책 생성을 클릭, 정책 편집기는 JSON을 선택하자.

 

정책 이름은 임의로 DenyIfNoMFA 로 설정함

기본 권한 구문을 수정해주자. Effect는 원래 Allow인데 Deny로 변경해주자.

Deny로 설정하면 조건이 충족될 경우 모든 액세스를 거부한다.
Action에서는 모든 AWS 서비스 및 액션에 대한 액세스를 의미한다.

Resource는 모든 AWS 리소스를 의미한다.

 

요약하자면 MFA가 활성화되지 않은 사용자의 모든 AWS 서비스와 리소스에 대한 액세스를 거부하고, 
MFA가 활성화 된 사용자에게는 아무런 영향을 미치지 않는다.

 

AWS CLI를 이용하여 접속하기

먼저 `aws configure`를 입력해서 Access Key와 Secret Access Key를 입력해주자. 

 

`aws sts get-session-token --serial-number (식별자) --token-code (MFA 번호)`

보안 자격 증명 탭으로 이동한 뒤 식별자를 복사하고, 위의 코드를 입력해주면 Credential 정보가 출력된다.

(사실 MFA가 뭐의 약자인지는 잘 모르겟다.. 걍 OTF 개념으로 알고 있음)

 

## Credential 정보 출력
aws sts get-session-token --serial-number (식별자) --token-code (OTP번호)
{
    "Credentials": {
        "AccessKeyId": "액세스 키 값",
        "SecretAccessKey": "시크릿값",
        "SessionToken": "세션토큰값",
        "Expiration": "2024-07-04T03:07:09+00:00"
    }
}

## 환경변수 형식으로 넣기 - Windwos OS
$env:AWS_ACCESS_KEY_ID="키값"
$env:AWS_SECRET_ACCESS_KEY="시크릿값"
$env:AWS_SESSION_TOKEN="토큰값"

## Linux or Mac
export AWS_ACCESS_KEY_ID="your_access_key_id"
export AWS_SECRET_ACCESS_KEY="your_secret_access_key"
export AWS_SESSION_TOKEN="your_session_token"

aws s3 ls

Credential 정보를 환경변수 형식으로 넣고 명령어를 수행하면 성공적으로 terraform을 사용할 수 있다.

 

+ Shell을 껐다 켜면 토큰 발급부터 환경변수 입력(본 글의 'AWS CLI를 이용하여 접속하기' 부분)을 다시 해줘야 한다.


 

'🌥️Cloud Study🌥️ > AWS' 카테고리의 다른 글

[ AWS ] 파이프라인을 이용한 무중단 배포  (0) 2024.07.23
[ AWS ] 아틸러리를 이용한 부하 테스트 및 부하 분산 확인(I/O bound)  (1) 2024.07.23
[ AWS Terraform ] Terraform 코드 실행 후 할 일  (0) 2024.07.22
[ AWS ] 배포 파이프라인 만들기  (0) 2024.07.17
[ AWS ] 보안그룹-인바운드 규칙 편집, 개별 인스턴스 설정  (0) 2024.07.16
'🌥️Cloud Study🌥️/AWS' 카테고리의 다른 글
  • [ AWS ] 아틸러리를 이용한 부하 테스트 및 부하 분산 확인(I/O bound)
  • [ AWS Terraform ] Terraform 코드 실행 후 할 일
  • [ AWS ] 배포 파이프라인 만들기
  • [ AWS ] 보안그룹-인바운드 규칙 편집, 개별 인스턴스 설정
L_Chae
L_Chae
🎮😻🤓🖥✨
  • L_Chae
    Cherish
    L_Chae
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 🌥️Cloud Study🌥️
        • AWS
        • NHN
        • KT
        • Microsoft (Azure 900)
        • TroubleShooting
        • IaC
        • Etc
      • STUDY
        • English
        • Japanese
        • 개인정보보호 관련
      • 초등학교 AI 교육 진행
        • 2024학년도 1학년-2학년
        • 2025학년도 4학년
      • 2024 KDT 📕
        • Lecture
        • Study 📗
        • Study-JAVA
        • Project
        • etc
      • INTERLUDE ✦
        • 2022 SYSTEM STUDY
        • 2022 Winter Study
        • 2023 AutoMobility STUDY
        • 2023 Summer Study (CPPG)
        • 2023 Reversing STUDY
        • etc
      • Private🔒
        • MacBook 💻
        • Screenshot 🩷
        • Photo 🖼️
        • FFXIV - Backup 🎮
        • Tistory
      • PBL 📗
        • 논문 스터디
        • Backup
      • Project 🖤
        • 2022-2) 개인정보보호 소학회
        • 2022-2) winter GURU2 - iOS
        • 2023-1) PBL 3
        • 2023-2) PBL 4
        • 2024-1) SW-AI교육 실습 일지
      • CTF 🚩
        • 2022
        • 2023
      • News scrap 📰
        • 2022
        • 2023
      • 2022 공부 로그 🐯
      • 2023 공부 로그🐰
  • 블로그 메뉴

    • 글쓰기
    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    jlpt n1 도전기
    ansible
    content collection
    N1
    멱등성
    JLPT N1
    ansible galaxy
    JLPT
    deprecation warning
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
L_Chae
[ AWS-Terraform ] 테라폼을 이용한 아키텍처 구축
상단으로

티스토리툴바