AWS135 [Terraform/AWS] EC2를 Directory Service에 Seamlessly하게 join시키기 콘솔에서 진행 시엔 적절한 EC2 Role과 Directory Service를 지정해주면 된다. 그러나 API로는 EC2 생성 시 Directory Service를 연결해주는 옵션이 없고, SSM Document를 사용해야 한다. locals { domain = "honglab.com" ec2role_policies = [ "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore", "arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess", ] } ## Directory Service resource "aws_directory_service_directory" "this" { name = local.domain ## 필.. 2023. 1. 16. [Terraform/AWS] VPC Peering Module을 만들 때 고려할 점 테라폼은 aws의 api를 사용해서 aws의 리소스를 제어한다.aws의 콘솔은 aws에서 api를 ui로 보기좋게(?) 제공하는 서비스이기 때문에, api를 직접 쓰는 것과는 다른 점들이 존재한다.(콘솔에선 못하지만 api로는 가능한 작업이 있는 점 등등..) 따라서 aws의 콘솔 작업과 aws api 작업 은 차이점이 분명히 존재하며,멱등성을 제공하는 IaC도구인 terraform의 경우 별도로 고려해야 할 점들이 불가피하게 생긴다. 그 중에서도 최근에 날 괴롭혔던게(?) VPC Peering이었는데,너무 쉬운 서비스라고 평소에 생각해왔기 때문에 의외로 애를 더 먹어버렸다. 바로 가보자! # 확장성(multi provider)을 고려한 Peering Module지금까지 TGW를 메인으로 써왔기 때문에,.. 2022. 10. 30. [AWS] Session Manager 중앙 집중식 로깅 구현 : SSM Session Manager Cross Account S3 Logging Session Manager Logging은 세션 접속한 동안의 명령까지도 모두 로깅으로 남는다. Multi Account AWS 환경에서 각 계정의 Session Manager Logging을 로깅 계정의 S3로 쌓도록 설정해보자. Encrypt 설정은 하지 않는다. 하게 되면 S3 Bucket 정책 등이 달라져야 할 것이다. # Architecture # 1. SSM Logging 설정 Console에서 하는 법 Systems Manager > Session Manager > Preferences 에서 설정 가능 (CLI, IaC등 API로는 불가) Bucket 이름과 Prefix를 지정해준다 API(CLI or IaC)로 하는 법 SSM-SessionManagerRunShell 문서를 직접 수정 C.. 2022. 8. 28. [Terraform/EKS/k8s] import 시 Kubernetes: Unauthorized 상황 Terraform의 한 모듈 내에서 EKS Cluster와 k8s 리소스들을 같이 프로비저닝 중 k8s 리소스 블럭들을 추가하였고, 기존 cluster 내부 리소스들을 import 해야하는 상황 ## k8s provider 설정 data "aws_eks_cluster_auth" "cluster" { name = aws_eks_cluster.this.id } provider "kubernetes" { host = aws_eks_cluster.this.endpoint token = data.aws_eks_cluster_auth.cluster.token cluster_ca_certificate = base64decode(aws_eks_cluster.this.certificate_authority[0].d.. 2022. 6. 28. [AWS] ElastiCache RI API로 구매하기 (AWSCLI, Python boto3) AWS Console에서 ElastiCache RI 구입 시엔 아래와 같이 Engine, Node type, Term, Offering Type만 지정해주면 된다 (node ID : 그냥 이름 정할거면 정하라는 것) 그러나 CLI나 SDK로 다량구매를 하고싶어 찾아보니,,,, https://docs.aws.amazon.com/ko_kr/AmazonElastiCache/latest/red-ug/reserved-nodes-purchasing.html 예약 노드 구입 - Amazon ElastiCache for Redis 예, 구매를 선택하면 선택한 예약 노드에 요금이 부과됩니다. 요금이 부과되지 않도록 하려면 [Cancel]을 선택합니다. docs.aws.amazon.com engine이나 node type.. 2022. 5. 29. [AWS 리소스 초기화] aws-nuke in MAC aws-nuke 란? AWS 내의 리소스들을 한꺼번에 날릴 수 있는 오픈소스 https://github.com/rebuy-de/aws-nuke GitHub - rebuy-de/aws-nuke: Nuke a whole AWS account and delete all its resources. Nuke a whole AWS account and delete all its resources. - GitHub - rebuy-de/aws-nuke: Nuke a whole AWS account and delete all its resources. github.com MAC에서 사용하기 여러 방법이 있지만,,,더 편하게 사용하기 위해 MacPorts를 받았다 https://www.macports.org/install.. 2022. 5. 19. [DataDog] Ingested/Indexed Log + Archiving 정리 우선 Agent단에서 로그를 발생시키면, 무조건 Ingested (인입) 비용이 발생한다 Ingested Log는 Live Tail에 뜨고, 아카이빙이 가능하며, 1GB당 $0.1 이다 그러나 Ingested만 돼서는 Search에서 Filter를 걸어 확인하거나 Dashboard 구성 시 활용할 수 없다 -> Index된 로그들만이 Search(즉 Filtering) 및 Dashboard 활용이 가능해진다 -> Indexed Log는 retention period 기간별로 가격이 다르며, 7일짜리는 로그 1M개당 $1.91이다 자세한 가격 확인 : https://www.datadoghq.com/pricing/?product=log-management#log-management Index는 Logs > .. 2022. 5. 14. [boto3/paginator] EC2 Name Tag를 포함한 엑셀 뽑기 boto3 client는 한번에 뽑을 수 있는 양이 정해져 있기 때문에, 모든 값을 한꺼번에 뽑으려면 nextToken 인수를 이용해 반복을 돌려야 한다. -> paginator를 사용하면 자동으로 반복이 돌려지며, 한 page씩 묶음으로 출력된다 따라서 paginator를 사용할 땐 page를 반복시키는 반복문이 필요하다 import boto3 from openpyxl import Workbook from datetime import datetime data_list = [] # profile name 지정 session = boto3.Session(profile_name='') client = session.client('ec2') paginator = client.get_paginator('desc.. 2022. 5. 13. [Terraform] 다른 backend의 state가 업데이트가 안돼요..?! (terraform_remote_state 불러오는 방식) terraform backend 설정에 관한 글 : [Terraform] 실행 환경 분리와 Backend 설정 (AWS/Terraform Cloud) terraform import에 관한 글 : [Terraform] Terraform import와 terraforming (AWS) 태초에....A 환경과 B 환경이 있었습니다 A와 B는 S3를 backend로 사용하고 있고...서로의 output을 받아오기 위해 data로 remote_state 블럭을 설정해 두었습니다 A 환경에서 실제 리소스들을 잔뜩 import를 해야 하는데, B 환경에서의 output을 사용할 일이 생겨서 아래와 같은 코드들을 추가했습니다 ## a/main.tf locals { test = data.terraform_remote_s.. 2022. 4. 30. [AWS S3] API Call로 S3 Access Logging 설정 시 유의할 점 (boto3) 상황 : 계정 내의 모든 버킷들에 access log 설정을 해두려고 한다 -> python boto3로 진행 1. 먼저 access log를 받을 버킷을 만든다 => access log는 cross region이 지원되지 않는다 https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html 따라서 계정 내 버킷의 리전 종류가 여러개라면, 각 리전별로 액세스로그용 버킷을 만들어야 한다 2. ACL 설정 ACL 의 S3 로그 전달 그룹에 대해 객체 쓰기/버킷 ACL 읽기 권한을 부여해야 한다 만약 ACL 수정이 불가하다면 위의 객체 소유권을 수정해줘야 한다 3. boto3 활용 1) 계정 내의 모든 버킷 리스트 담아오기 : client.list.. 2022. 2. 23. [RSS] RSS란? AWS 최신 소식 Slack으로 받아보기 https://aws.amazon.com/ko/new/ AWS의 새로운 소식 – 클라우드 혁신 및 뉴스 AWS는 사용자가 최신 기술을 활용하여 더 빠르게 시험하고 혁신할 수 있도록 지속적으로 새로운 기능을 추가하고 있습니다. 새로운 소식 게시물은 당사가 그러한 업무를 수행하는 방법을 보여주 aws.amazon.com RSS 피드를 통해 구독 이라는 버튼이 있다. 이를 눌러보면 위와 같은 xml 형태의 창이 뜬다 📌 RSS란? Rich Site Summary or Really Simple Syndication (정말 간단한 배급) 뉴스나 블로그 사이트에서 주로 사용하는 콘텐츠 표현 방식이며, 해당 사이트에서 새로운 기사 또는 포스팅을 직접 배달해주는 개념이다 즉, 해당 사이트에서 제공하는 RSS를 구독(리.. 2022. 2. 17. [M1 MAC Terraform] The plugin.(*GRPCProvider).ValidateProviderConfig request was cancelled. 에러가 나지 않던 Terraform Code에서 갑자기 plan/apply 시 아래와 같은 에러가 떴다 해결 : https://github.com/hashicorp/terraform-provider-aws/issues/20274 plugin.(*GRPCProvider).ValidateResourceConfig request was cancelled. · Issue #20274 · hashicorp/terraform-provider-aws Community Note Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request Ple.. 2022. 1. 24. [AWS] Private하게 DataSync 사용하기 AWS DataSync란? https://aws.amazon.com/ko/datasync/ 온라인 데이터 전송 및 마이그레이션—AWS DataSync—Amazon Web Services AWS DataSync는 온프레미스와 AWS 스토리지 서비스 사이에서 데이터 이동을 자동화 및 가속화하는 안전한 온라인 서비스입니다. DataSync는 NFS(Network File System) 공유, SMB(Server Message Block) 공유, Hadoop 분 aws.amazon.com NFS/SMB 등의 파일 시스템 + AWS S3/EFS/FSx 들 간의 데이터 마이그레이션 서비스이다 https://docs.aws.amazon.com/ko_kr/datasync/latest/userguide/datasync-.. 2021. 12. 11. [Terraform] CSV -> AWS Security Group : fileset 함수 활용 위와 같이 보안그룹별 csv 파일들을 만들어 두었을 때, 자동으로 sg_csv 폴더 내의 파일들을 한꺼번에 읽어오게 하고 싶었다 알아보니 테라폼엔 fileset이란 함수가 있었다 https://www.terraform.io/docs/language/functions/fileset.html fileset - Functions - Configuration Language - Terraform by HashiCorp The fileset function enumerates a set of regular file names given a pattern. www.terraform.io locals { sg_csvs = fileset("./sg_csv/", "*") sg = toset([for f in local... 2021. 12. 11. [AWS Windows] Windows EC2 비밀번호 복구 (EC2Config & EC2Rescue) 문제 상황 Windows EC2는 key pair를 해독한 비밀번호로 접속할 수 있다. 이런 윈도우 서버들에 Sysprep 설정을 하지 않은 채로 AMI를 뜬 후 복구를 하게 된다면, 암호를 사용할 수 없게 된다 따라서 윈도우 EC2는 AMI를 뜨기 전에 Sysprep을 설정해 비밀번호를 초기화 시켜놔야 한다 -> 참조 : [AWS Windows] Windows EC2 AMI 뜨기 전 Sysprep 설정 (비밀번호 초기화) 그러나 Sysprep 없이 이미 AMI를 떴더라도 복구 방법은 다 있다 해결 방법 암호를 복구해야 하는 AMI가 윈도우 2016 이전인 경우 : https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/WindowsGuide/ResettingAdminPas.. 2021. 11. 20. 이전 1 2 3 4 5 6 ··· 9 다음