이 게시물은 Contentful의 Patrick Oberherr와 Netlight Consulting의 Johannes Günther가 공동으로 작성한 게스트 블로그 게시물입니다.
이 블로그 게시물은 다음을 기반으로 데이터 파이프라인 아키텍처의 보안을 향상하는 방법을 보여줍니다. Apache Airflow용 Amazon 관리형 워크플로(Amazon MWAA) 및 Amazon Elastic Kubernetes 서비스(Amazon EKS) 세분화된 권한을 설정하여 HashiCorp 테라폼 코드형 인프라를 위한 것입니다.
많은 AWS 고객은 Amazon EKS를 사용하여 데이터 워크로드를 실행합니다. Amazon EKS의 장점에는 워크로드 요구 사항에 따른 다양한 컴퓨팅 및 스토리지 옵션, 기본 인프라 공유를 통한 더 높은 리소스 활용도, 특별히 구축된 확장 기능을 제공하는 활발한 오픈 소스 커뮤니티가 포함됩니다. 그만큼 EKS 데이터 프로젝트는 고객이 이 여정을 시작하는 데 도움이 되는 일련의 템플릿과 기타 리소스를 제공합니다. 사용 설명이 포함되어 있습니다. 작업 스케줄러로서의 Amazon MWAA.
만족스러운 AWS 고객이자 AWS 파트너 네트워크(APN) 파트너입니다. Contentful Composable Content Platform인 SaaS(Software-as-a-Service) 제품의 이면에서 Contentful은 데이터에서 얻은 통찰력을 사용하여 비즈니스 의사 결정 및 고객 경험을 개선합니다. 만족스러운 참여 넷라이트, APN 컨설팅 파트너는 이러한 통찰력을 수집하기 위한 데이터 플랫폼 설정을 지원합니다.
Contentful의 애플리케이션 워크로드 대부분은 Amazon EKS에서 실행되며 이 서비스와 Kubernetes에 대한 지식은 조직에 널리 퍼져 있습니다. 이것이 바로 Contentful의 데이터 엔지니어링 팀이 Amazon EKS에서도 데이터 파이프라인을 실행하기로 결정한 이유입니다. 직업을 위해 일정, 그들은 Amazon EKS 클러스터에서 자체 운영되는 Apache Airflow로 시작했고 나중에 엔지니어링 및 운영 오버헤드를 줄이기 위해 Amazon MWAA로 전환했습니다. 작업 실행 Amazon EKS에 남아 있었습니다.
Contentful은 이 인프라를 사용하여 여러 데이터 소스로부터의 수집과 다양한 변환 작업을 포함하여 복잡한 데이터 파이프라인을 실행합니다. DBT. 전체 파이프라인은 단일 Amazon MWAA 환경과 단일 Amazon EKS 클러스터를 공유합니다. 단일 환경에서 다양한 워크로드를 처리하려면 다음을 적용해야 합니다. 최소 권한 원칙, 개별 작업이나 구성 요소가 작동하는 데 필요한 특정 권한만 갖도록 보장합니다.
역할과 책임에 따라 권한을 세분화함으로써 Contentful의 데이터 엔지니어링 팀은 처리 중인 데이터의 무결성과 기밀성을 유지하는 데 필수적인 보다 강력하고 안전한 데이터 처리 환경을 구축할 수 있었습니다.
이 블로그 게시물에서는 코드형 인프라를 위해 Contentful이 선택한 도구인 Terraform을 사용하여 인프라를 처음부터 설정하고 샘플 애플리케이션을 배포하는 과정을 안내합니다.
사전 조건
이 블로그 게시물을 따르려면 다음 도구의 최신 버전이 설치되어 있어야 합니다.
살펴보기
이 블로그 게시물에서는 다음 인프라를 사용하여 샘플 애플리케이션을 생성합니다.
샘플 Airflow 워크플로는 소스 버킷의 객체를 나열하고 다음을 사용하여 이 목록을 임시로 저장합니다. 기류 XCom, 목록을 대상 버킷에 파일로 씁니다. 이 애플리케이션은 Amazon MWAA 환경에서 예약된 Amazon EKS 포드를 사용하여 실행됩니다. EKS 클러스터와 MWAA 환경을 가상 사설 클라우드(VPC) 다음을 사용하여 EKS 포드에 최소 권한 권한을 적용합니다. 서비스 계정에 대한 IAM 역할. Amazon MWAA의 구성 버킷에는 런타임 요구 사항은 물론 다음을 지정하는 애플리케이션 코드도 포함되어 있습니다. 공기 흐름 방향 비순환 그래프(DAG).
프로젝트 초기화 및 버킷 생성
파일 만들기 main.tf
빈 디렉토리에 다음 내용이 포함되어 있습니다.
이 파일은 Terraform AWS 공급자 이름이 다음과 같이 내보내지는 소스 및 대상 버킷도 포함됩니다. AWS 시스템 관리자 매개변수. 또한 Terraform에 다음과 같은 빈 객체를 업로드하도록 지시합니다. dummy.txt
이를 통해 나중에 버킷 콘텐츠를 나열할 때 결과를 수신하기 위해 생성할 Airflow 샘플 애플리케이션을 활성화할 수 있습니다.
다음 명령을 실행하여 Terraform 프로젝트를 초기화하고 모듈 종속성을 다운로드합니다.
인프라를 생성합니다:
Terraform은 환경 변경 사항을 확인하도록 요청한 다음 AWS에 리소스 배포를 시작합니다. 성공적으로 배포되면 다음 성공 메시지가 표시됩니다.
VPC 생성
새 파일 만들기 vpc.tf
같은 디렉토리에 main.tf
다음을 삽입하십시오.
이 파일은 나중에 Amazon EKS 클러스터와 Amazon MWAA 환경을 호스팅할 가상 네트워크인 VPC를 정의합니다. 우리는 현존하는 테라 폼 모듈 이를 위해 다음과 같은 기본 네트워크 리소스의 구성을 래핑합니다. 서브넷, 라우팅 테이블및 NAT 게이트웨이.
VPC 모듈을 다운로드합니다.
새 리소스를 배포합니다.
어떤 리소스가 생성되고 있는지 확인하세요. Terraform 파일에서 VPC 모듈을 사용하면 인프라를 정의할 때 기본 복잡성이 상당 부분 제거되지만 정확히 무엇이 배포되고 있는지 아는 것은 여전히 유용합니다.
이제 Terraform은 두 파일 모두에서 정의한 리소스를 처리합니다. main.tf
및 vpc.tf
, Terraform에는 다음이 모두 포함되어 있기 때문입니다. .tf
파일 현재 작업 디렉토리에 있습니다.
Amazon MWAA 환경 생성
새 파일 만들기 mwaa.tf
그리고 다음 내용을 삽입하세요.
이전과 마찬가지로 우리는 기존 모듈 Amazon MWAA 환경에 대한 구성 노력을 절약합니다. 모듈은 또한 구성 버킷을 생성하는데, 이를 지정하는 데 사용됩니다. 애플리케이션의 런타임 종속성 (아파치-공기 흐름-cncf-kubernetes)에의 requirements.txt
파일. 이 패키지는 사전 설치된 패키지와 함께 사용됩니다. 아파치-공기 흐름-아마존, Amazon EKS와의 상호 작용을 활성화합니다.
MWAA 모듈 다운로드:
새 리소스를 배포합니다.
이 작업을 완료하는 데 20~30분이 소요됩니다.
Amazon EKS 클러스터 생성
파일 만들기 eks.tf
다음 내용으로
클러스터 자체를 생성하려면 다음을 활용합니다. Terraform용 Amazon EKS 청사진 프로젝트. 또한 하나의 노드를 대상 크기로 하는 관리형 노드 그룹을 정의합니다. 부하가 변동하는 경우 다음을 사용하여 클러스터를 확장하세요. 카펜터 위에 표시된 관리형 노드 그룹 접근 방식 대신 클러스터를 보다 유연하게 확장할 수 있습니다. 우리는 주로 구성의 용이성 때문에 관리형 노드 그룹을 사용했습니다.
우리는 아이덴티티를 정의합니다. Amazon MWAA 실행 역할 Kubernetes에서 다음을 사용하여 가정합니다. map_roles
변하기 쉬운. 구성한 후 Terraform Kubernetes 제공업체, Amazon MWAA 실행 역할에 클러스터의 포드를 관리할 수 있는 권한을 부여합니다.
Terraform 모듈용 EKS Blueprint를 다운로드합니다.
새 리소스를 배포합니다.
이 작업을 완료하는 데 약 12분이 소요됩니다.
서비스 계정에 대한 IAM 역할 만들기
파일 만들기 roles.tf
다음 내용으로
이 파일은 두 개의 Kubernetes 서비스 계정을 정의합니다. source-bucket-reader-sa
및 destination-bucket-writer-sa
및 서비스 계정(IRSA)에 대한 IAM 역할을 사용하여 AWS API에 대한 권한을 제공합니다. 이번에도 Terraform 프로젝트용 Amazon EKS Blueprints의 모듈을 사용하여 IRSA 구성을 단순화했습니다. 두 역할 모두 다음을 사용하여 정의된 필요한 최소 권한만 얻습니다. AWS IAM 정책.
새 모듈을 다운로드합니다.
새 리소스를 배포합니다.
DAG 만들기
파일 만들기 dag.py
Airflow DAG 정의:
DAG는 두 가지 작업으로 시간별 일정에 따라 실행되도록 정의됩니다. read_bucket
서비스 계정으로 source-bucket-reader-sa
및 write_bucket
서비스 계정으로 destination-bucket-writer-sa
, 서로 뒤쫓는다. 둘 다 다음을 사용하여 실행됩니다. EksPod운영자, 다음을 사용하여 Amazon EKS에서 작업 예약을 담당합니다. AWS CLI 도커 이미지 명령을 실행합니다. 첫 번째 작업은 소스 버킷의 파일을 나열하고 해당 목록을 Airflow XCom에 기록합니다. 두 번째 작업은 XCom에서 목록을 읽고 이를 대상 버킷에 저장합니다. 참고 service_account_name
매개변수는 각 작업이 수행할 수 있는 작업을 구별합니다.
파일 만들기 dag.tf
DAG 코드를 Amazon MWAA 구성 버킷에 업로드하려면:
변경 사항을 배포합니다.
Amazon MWAA 환경은 S3 버킷에서 파일을 자동으로 가져옵니다.
DAG 실행
브라우저에서 아마존 MWAA 콘솔 환경을 선택하세요. 오른쪽 상단에서 Airflow UI 열기 . 다음이 표시되어야 합니다.
DAG를 트리거하려면 행위 열에서 재생 기호를 선택한 다음 트리거 DAG. DAG 실행 및 결과를 탐색하려면 DAG 이름을 클릭하세요.
로 이동 Amazon S3 콘솔 "destination"으로 시작하는 버킷을 선택합니다. 파일이 포함되어 있어야 합니다. list.json
최근에 의해 생성된 write_bucket
일. 단일 항목이 포함된 JSON 목록의 콘텐츠를 탐색하려면 파일을 다운로드하세요.
정리
이 연습에서 생성한 리소스에는 AWS 비용이 발생합니다. 생성된 리소스를 삭제하려면 다음 명령을 실행합니다.
그리고 Terraform CLI 대화 상자에서 변경 사항을 승인하세요.
결론
이 블로그 게시물에서는 각 개별 작업의 권한을 좁혀 Amazon MWAA 및 Amazon EKS에서 실행되는 데이터 파이프라인의 보안을 향상하는 방법을 배웠습니다.
더 자세히 알아보려면 이 연습에서 만든 작업 예제를 사용하여 다음 주제를 더 자세히 살펴보세요. service_account_name
Airflow 작업의 매개변수? 두 작업에서 서비스 계정 이름을 교환하면 어떻게 되나요?
단순화를 위해 이 연습에서는 단일 디렉터리 내에 Terraform 및 Python 파일이 포함된 플랫 파일 구조를 사용했습니다. 우리는 다음 사항을 준수하지 않았습니다. 표준 모듈 구조 일반적으로 권장되는 Terraform에서 제안한 것입니다. 실제 프로젝트에서 프로젝트를 여러 Terraform 프로젝트 또는 모듈로 분할하면 인프라의 서로 다른 부분을 소유한 팀 간의 유연성, 속도 및 독립성이 향상될 수도 있습니다.
마지막으로 꼭 공부하세요. EKS 데이터 Amazon EKS에서 데이터 파이프라인을 실행하는 데 필요한 기타 귀중한 리소스를 제공하는 설명서와 아마존 MWAA 및 아파치 에어 플로우 자신만의 사용 사례를 구현하기 위한 문서입니다. 구체적으로 이것 좀 보세요 샘플 구현 Amazon EKS 구성, 노드 자동 조정, 네트워킹에 대한 보다 성숙한 접근 방식이 포함된 Amazon MWAA 및 Amazon EKS용 Terraform 모듈입니다.
질문이 있으시면 다음에서 새 스레드를 시작해 보세요. AWS re:post 또는 연락 AWS 지원.
저자에 관하여
울리히 힌제 AWS의 솔루션스 아키텍트입니다. 그는 소프트웨어 회사와 협력하여 AWS에서 클라우드 기반 솔루션을 설계하고 구현합니다. AWS에 합류하기 전에 그는 8년 이상 AWS 고객 및 파트너를 위해 소프트웨어 엔지니어링, 컨설팅 및 아키텍처 역할을 담당했습니다.
패트릭 오버허르 그는 AWS에서 4년 이상 근무하고 데이터 분야에서 10년 이상 근무한 Contentful의 직원 데이터 엔지니어입니다. Contentful에서 그는 AWS에서 호스팅되는 데이터 스택의 인프라와 운영을 담당하고 있습니다.
요하네스 귄터 AWS에서 5년 이상 근무한 Netlight의 클라우드 및 데이터 컨설턴트입니다. 그는 지속 가능한 클라우드 플랫폼을 설계하는 다양한 업계의 고객을 도왔으며 AWS 인증을 받았습니다.
- SEO 기반 콘텐츠 및 PR 배포. 오늘 증폭하십시오.
- PlatoData.Network 수직 생성 Ai. 자신에게 권한을 부여하십시오. 여기에서 액세스하십시오.
- PlatoAiStream. 웹3 인텔리전스. 지식 증폭. 여기에서 액세스하십시오.
- 플라톤ESG. 탄소, 클린테크, 에너지, 환경, 태양광, 폐기물 관리. 여기에서 액세스하십시오.
- PlatoHealth. 생명 공학 및 임상 시험 인텔리전스. 여기에서 액세스하십시오.
- 출처: https://aws.amazon.com/blogs/big-data/set-up-fine-grained-permissions-for-your-data-pipeline-using-mwaa-and-eks/
- :있다
- :이다
- :아니
- $UP
- 1
- 10
- 100
- 12
- 16
- 2023
- 27
- 41
- 8
- 9
- a
- 할 수 있는
- 소개
- 위의
- 에 따르면
- 계정
- 계정
- 인정
- 가로질러
- 행위
- 비 환식
- 추가
- 가입 한
- 이점
- 장점
- 후
- 다시
- 반대
- All
- 따라
- 또한
- 아마존
- Amazon Web Services
- an
- 및
- 다른
- 어떤
- 아파치
- API를
- 어플리케이션
- 신청
- 접근
- 승인
- 아키텍처
- 있군요
- AS
- 가정하다
- At
- 권한 부여
- Automatic
- 자동적으로
- 가능
- 떨어져
- AWS
- AWS 인증
- AWS 고객
- 기반으로
- 때문에
- 전에
- 뒤에
- 무대 뒤에서
- 존재
- 사이에
- 블로그
- 두
- 브라우저
- 사업
- 비자 면제 프로그램에 해당하는 국가의 시민권을 가지고 있지만
- by
- CAN
- 가지 경우
- 인증
- 변경
- 변경
- 선택
- 왼쪽 메뉴에서
- 클릭
- 클라이언트
- 클라우드
- 클러스터
- 암호
- 단
- 결합
- 커뮤니티
- 기업
- 완전한
- 복잡한
- 복잡성
- 구성 요소들
- 계산
- 기밀 유지
- 구성
- 콘솔에서
- 컨설턴트
- 컨설팅
- 포함하는
- 이 포함되어 있습니다
- 함유량
- 콘텐츠 플랫폼
- 모서리
- 수정
- 비용
- 만들
- 만든
- 생성
- Current
- 고객
- 고객 경험
- 고객
- DAG
- 데이터
- 데이터 엔지니어
- 데이터 플랫폼
- 데이터 처리
- 날짜 시간
- 결정된
- 의사 결정
- 깊이
- 밝히다
- 한정된
- 정의
- 정의
- 의존성
- 의존
- 의존
- 배포
- 배포
- 배치
- 전개
- 설명
- 설계
- 목적지
- 파괴
- 다이얼로그
- DID
- 다른
- 감독 된
- 잠수
- 몇몇의
- do
- 도커
- 선적 서류 비치
- 다운로드
- 그림
- 마다
- 완화
- 에코
- 노력
- 빈
- 수
- 종사하는
- 기사
- 엔지니어링
- 보장
- 항목
- 환경
- 필수
- 에테르 (ETH)
- 정확하게
- 예
- 교환
- 실행
- 처형 된
- 실행
- 경험
- 탐험
- 확장
- 그릇된
- 들
- 입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에
- 파일
- 먼저,
- 플랫
- 유연성
- 유연하게
- 따라
- 수행원
- 럭셔리
- 에
- 기능
- 추가
- 수집
- 일반적으로
- 얻을
- GitHub의
- 주기
- 그래프
- 그룹
- 여러 떼
- 손님
- 게스트 블로그
- 처리
- 발생
- 있다
- he
- 도움
- 도움
- 더 높은
- 주인
- 호스팅
- 방법
- How To
- HTML
- HTTPS
- IAM
- 통합 인증
- if
- 구현
- 구현
- import
- 수입
- 개선
- in
- 포함
- 포함
- 포함
- 증가
- 독립
- 개인
- 산업
- 인프라
- 내부
- 통찰력
- 를 받아야 하는 미국 여행자
- 보전
- 상호 작용
- 인터페이스
- 으로
- 발행물
- 발행
- IT
- 그
- 그 자체
- 일
- 작업
- 가입
- 여행
- JPG
- JSON
- 키
- 종류
- 알아
- 지식
- Kubernetes
- 후에
- 최근
- 배운
- 가장 작은
- 처럼
- 명부
- 리스팅
- 기울기
- 하중
- 지방의
- 로그인
- 보기
- 유지
- 확인
- 제작
- 관리
- 관리
- 매니저
- 성숙한
- XNUMX월..
- 메시지
- 메타 데이터
- 최저한의
- 분
- 모듈
- 모듈
- 배우기
- 많은
- 여러
- name
- 이름
- 이름
- 이동
- 필요한
- 필요
- 요구
- 네트워크
- 네트워킹
- 신제품
- 노드
- 주의
- 지금
- 대상
- 사물
- of
- on
- ONE
- 만
- 오픈 소스
- 조작
- 행정부
- 운영자
- 옵션
- or
- 조직
- 기타
- 우리의
- 아웃
- 출력
- 자신의
- 꾸러미
- 매개 변수
- 파트너
- 파트너 네트워크
- 파트너
- 부품
- 패치
- 통로
- 패트릭
- 권한
- 관로
- 플랫폼
- 플랫폼
- 플라톤
- 플라톤 데이터 인텔리전스
- 플라토데이터
- 연극
- 포드
- 정책
- 초상화
- 게시하다
- 주로
- 사설
- 처리
- 프로덕트
- 프로필
- 프로젝트
- 프로젝트
- 제안 된
- 공급자
- 제공
- 제공
- Python
- 문의
- RE
- 도달
- 받다
- 최근에
- 추천
- 감소
- 지방
- 제거
- 요구조건 니즈
- 의지
- 자원 활용
- 제품 자료
- 책임
- 책임
- 결과
- 결과
- 강력한
- 직위별
- 역할
- 통치
- 달리기
- 달리는
- 실행
- SaaS는
- 같은
- 찜하기
- 규모
- 스케일링
- 장면
- 예정
- 예약
- 일정
- 할퀴다
- 둘째
- 안전해야합니다.
- 보안
- 참조
- 연속
- 서비스
- 서비스
- 세트
- 설정
- 공유
- 공유
- 영상을
- 표시
- 쇼
- 간단
- 단순화
- 단일
- 단일 환경
- 크기
- 작은
- 소프트웨어
- 소프트웨어 공학
- 솔루션
- 출처
- 지우면 좋을거같음 . SM
- 구체적인
- 구체적으로
- 속도
- 스택
- 직원
- 스타트
- 시작
- 시작 중
- 시작
- 성명서
- 아직도
- 저장
- 저장 옵션
- 상점
- 구조
- 교육과정
- 제목
- 성공
- 성공한
- 확인
- 지속가능한
- 전환
- 상징
- 시스템은
- 받아
- 촬영
- 소요
- 목표
- 태스크
- 작업
- 팀
- 팀
- 말하다
- 템플릿
- 테라 폼
- 본문
- 그
- XNUMXD덴탈의
- 소스
- 그들의
- 그때
- Bowman의
- 그들
- 이
- 을 통하여
- 에
- 토큰
- 수단
- 검색을
- 상단
- 화제
- 변환
- 트리거
- 참된
- 두
- 유형
- 밑에 있는
- 업데이트
- ...에
- 사용
- 익숙한
- 사용자
- 시간을 아껴주는 인터페이스
- 사용
- 사용
- 가치 있는
- 가치
- 변수
- 여러
- 버전
- 활기찬
- 온라인
- 걷다
- 연습
- 였다
- we
- 웹
- 웹 서비스
- 잘
- 뭐
- 언제
- 어느
- 모든
- 누구의
- why
- 펼친
- 의지
- 과
- 일
- 워크플로우
- 워크 플로우
- 일하는
- 년
- 당신
- 너의
- 제퍼 넷