これは、Contentful の Patrick Oberherr および Netlight Consulting の Johannes Günther との共同執筆によるゲスト ブログ投稿です。
このブログ投稿では、以下に基づいてデータ パイプライン アーキテクチャのセキュリティを向上させる方法を示します。 Apache AirflowのAmazonマネージドワークフロー(Amazon MWAA) および Amazon エラスティック Kubernetes サービス (Amazon EKS) きめ細かい権限を設定し、 HashiCorp Terraform コードとしてのインフラストラクチャ向け。
AWS の多くのお客様は、Amazon EKS を使用してデータワークロードを実行しています。 Amazon EKS の利点には、ワークロードのニーズに応じたさまざまなコンピューティングとストレージのオプション、基盤となるインフラストラクチャの共有によるリソース使用率の向上、専用の拡張機能を提供する活発なオープンソース コミュニティが含まれます。 の EKSのデータ プロジェクトは、顧客がこの取り組みを開始できるように、一連のテンプレートやその他のリソースを提供します。 使用方法の説明が含まれています ジョブスケジューラとしての Amazon MWAA.
充実した は AWS の顧客であり、AWS Partner Network (APN) パートナーです。 Contentful は、Software-as-a-Service (SaaS) 製品である Contentful Composable Content Platform の舞台裏で、データからの洞察を使用して、ビジネス上の意思決定と顧客エクスペリエンスを向上させています。 コンテンツに富んだエンゲージメント ネットライト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 Systems Manager のパラメータ。 また、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 環境の設定労力を節約します。 このモジュールは、構成バケットも作成します。これを使用して、 アプリケーションの実行時の依存関係 (apache-airflow-cncf-kubernetes) の中に requirements.txt
ファイル。 このパッケージとプレインストールされたパッケージの組み合わせ apache-エアフロー-アマゾン、Amazon EKS との対話が可能になります。
MWAA モジュールをダウンロードします。
新しいリソースをデプロイします。
この操作が完了するまでに 20 ~ 30 分かかります。
Amazon EKS クラスターを作成する
ファイルを作成する eks.tf
以下の内容で
クラスター自体を作成するには、 Terraform 用の Amazon EKS ブループリント プロジェクト。 また、XNUMX つのノードをターゲット サイズとして管理対象ノード グループを定義します。 負荷が変動する場合は、次のようにクラスターをスケーリングすることに注意してください。 カーペンター 上記の管理対象ノード グループの代わりにアプローチを使用すると、クラスターをより柔軟に拡張できます。 主に構成が簡単であるという理由から、管理対象ノード グループを使用しました。
私たちはアイデンティティを定義します。 Amazon MWAA 実行ロール Kubernetes での使用を前提としています。 map_roles
変数。 設定後、 Terraform Kubernetes プロバイダーでは、Amazon MWAA 実行ロールにクラスター内のポッドを管理するためのアクセス許可を与えます。
Terraform 用 EKS ブループリント モジュールをダウンロードします。
新しいリソースをデプロイします。
この操作が完了するまでに約 12 分かかります。
サービスアカウントの IAM ロールを作成する
ファイルを作成する roles.tf
以下の内容で
このファイルは XNUMX つの Kubernetes サービス アカウントを定義します。 source-bucket-reader-sa
および destination-bucket-writer-sa
、およびサービス アカウント (IRSA) の IAM ロールを使用した AWS API に対するアクセス許可。 ここでも、Amazon EKS Blueprints for Terraform プロジェクトのモジュールを使用して、IRSA 設定を簡素化します。 どちらのロールも、次のように定義された、必要な最小限の権限のみを取得することに注意してください。 AWS IAM ポリシー.
新しいモジュールをダウンロードします。
新しいリソースをデプロイします。
DAG を作成する
ファイルを作成する dag.py
Airflow DAG を定義します。
DAG は、XNUMX つのタスクを含む XNUMX 時間ごとのスケジュールで実行されるように定義されています。 read_bucket
サービスアカウントを使用して source-bucket-reader-sa
および write_bucket
サービスアカウントを使用して destination-bucket-writer-sa
、次々と走ります。 どちらも次を使用して実行されます EksPodオペレーターを使用して、Amazon EKS 上でタスクをスケジュールする責任があります。 AWS CLI Docker イメージ コマンドを実行します。 最初のタスクは、ソース バケット内のファイルをリストし、そのリストを Airflow XCom に書き込みます。 XNUMX 番目のタスクは、XCom からリストを読み取り、宛先バケットに保存します。 注意してください。 service_account_name
パラメータは、各タスクに許可される内容を区別します。
ファイルを作成する dag.tf
DAG コードを Amazon MWAA 設定バケットにアップロードするには、次のようにします。
変更をデプロイします。
Amazon MWAA 環境は、S3 バケットからファイルを自動的にインポートします。
DAGを実行する
ブラウザで、次の場所に移動します。 Amazon MWAA コンソール そして環境を選択してください。 右上隅で、 オープンエアフローUI 。 次の内容が表示されるはずです。
DAG をトリガーするには、 列で、再生シンボルを選択し、 DAGをトリガーする。 DAG 名をクリックして、DAG の実行とその結果を調べます。
に移動します AmazonS3コンソール 「宛先」で始まるバケットを選択します。 ファイルが含まれている必要があります list.json
最近作成された write_bucket
タスク。 ファイルをダウンロードして、そのコンテンツ (単一のエントリを含む JSON リスト) を調べます。
クリーンアップ
このチュートリアルで作成したリソースには AWS のコストが発生します。 作成したリソースを削除するには、次のコマンドを実行します。
そして、Terraform CLI ダイアログで変更を承認します。
まとめ
このブログ投稿では、個々のタスクのアクセス許可を制限することで、Amazon MWAA および Amazon EKS で実行されているデータ パイプラインのセキュリティを向上させる方法を学びました。
さらに詳しく調べるには、このチュートリアルで作成した実際の例を使用して、トピックをさらに詳しく調べます。 service_account_name
Airflow タスクからのパラメータ? XNUMX つのタスクでサービス アカウント名を交換するとどうなりますか?
わかりやすくするために、このチュートリアルでは、Terraform ファイルと Python ファイルが XNUMX つのディレクトリ内にあるフラット ファイル構造を使用しました。 私たちは遵守しませんでした 標準モジュール構造 Terraform によって提案されており、一般的に推奨されています。 実際のプロジェクトでは、プロジェクトを複数の Terraform プロジェクトまたはモジュールに分割すると、インフラストラクチャの異なる部分を所有するチーム間の柔軟性、速度、および独立性が向上する可能性もあります。
最後に必ず勉強してください EKSのデータ ドキュメントには、Amazon EKS でデータ パイプラインを実行するためのその他の貴重なリソースが含まれています。 アマゾンMWAA および ApacheAirflow 独自のユースケースを実装するためのドキュメント。 具体的にはこれを見てください サンプル実装 Amazon MWAA および Amazon EKS 用の Terraform モジュールの一部。これには、Amazon EKS 設定、ノードの自動スケーリング、およびネットワーキングに対するより成熟したアプローチが含まれています。
ご質問がある場合は、新しいスレッドを開始してください AWS re:Post または手を差し伸べる AWSサポート.
著者について
ウルリッヒ・ヒンゼ AWS のソリューションアーキテクトです。 彼はソフトウェア会社と提携して、AWS 上でクラウドベースのソリューションを設計および実装しています。 AWS に入社する前は、AWS の顧客およびパートナーでソフトウェア エンジニアリング、コンサルティング、アーキテクチャの役割を 8 年以上担当していました。
パトリック・オーバーハー Contentful のスタッフ データ エンジニアであり、AWS で 4 年以上勤務し、データ分野で 10 年以上働いています。 Contentful では、AWS でホストされているデータスタックのインフラストラクチャと運用を担当しています。
ヨハネス・ギュンター Netlight のクラウドおよびデータ コンサルタントであり、AWS で 5 年以上働いています。 彼は、持続可能なクラウド プラットフォームを設計するさまざまな業界のクライアントを支援しており、AWS 認定を受けています。
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- PlatoData.Network 垂直生成 Ai。 自分自身に力を与えましょう。 こちらからアクセスしてください。
- プラトアイストリーム。 Web3 インテリジェンス。 知識増幅。 こちらからアクセスしてください。
- プラトンESG。 カーボン、 クリーンテック、 エネルギー、 環境、 太陽、 廃棄物管理。 こちらからアクセスしてください。
- プラトンヘルス。 バイオテクノロジーと臨床試験のインテリジェンス。 こちらからアクセスしてください。
- 情報源: https://aws.amazon.com/blogs/big-data/set-up-fine-grained-permissions-for-your-data-pipeline-using-mwaa-and-eks/
- :持っている
- :は
- :not
- $UP
- 1
- 10
- 100
- 12
- 16
- 2023
- 27
- 41
- 8
- 9
- a
- できる
- 私たちについて
- 上記の.
- 従った
- アカウント
- 認める
- 越えて
- 行動
- 非周期的
- 追加されました
- 付着します
- 利点
- 利点
- 後
- 再び
- に対して
- すべて
- 沿って
- また
- Amazon
- Amazon Webサービス
- an
- および
- 別の
- どれか
- アパッチ
- API
- 申し込み
- 申し込む
- アプローチ
- 承認する
- 建築
- です
- AS
- と仮定する
- At
- 承認
- オートマチック
- 自動的に
- 利用できます
- 離れて
- AWS
- AWS認定
- AWS のお客様
- ベース
- なぜなら
- 背後に
- 舞台裏で
- さ
- の間に
- ブログ
- 両言語で
- ブラウザ
- ビジネス
- 焙煎が極度に未発達や過発達のコーヒーにて、クロロゲン酸の味わいへの影響は強くなり、金属を思わせる味わいと乾いたマウスフィールを感じさせます。
- by
- 缶
- 例
- 認証
- 変更
- 変更
- 選択
- 選択する
- クリック
- クライアント
- クラウド
- クラスタ
- コード
- コラム
- 組み合わせ
- コミュニティ
- 企業
- コンプリート
- 複雑な
- 複雑さ
- コンポーネント
- 計算
- 秘密
- 領事
- コンサルタント
- コンサルティング
- 含む
- 含まれています
- コンテンツ
- コンテンツプラットフォーム
- コーナー
- 正しい
- コスト
- 作ります
- 作成した
- 作成します。
- 電流プローブ
- 顧客
- 顧客満足体験
- Customers
- DAG
- データ
- データエンジニア
- データ処理
- 日付時刻
- 決定しました
- 意思決定
- より深い
- 定義します
- 定義済みの
- 定義する
- 定義
- 依存関係
- 依存関係
- によっては
- 展開します
- 展開
- 展開する
- 展開
- 説明
- 設計
- デスティネーション
- 破壊された
- 対話
- DID
- 異なります
- 指示された
- ダイビング
- 異なる
- do
- デッカー
- ドキュメント
- ダウンロード
- 描画
- 各
- 緩和する
- echo
- 努力
- 空の
- 可能
- 従事して
- エンジニア
- エンジニアリング
- 確保する
- エントリ
- 環境
- 本質的な
- エーテル(ETH)
- 正確に
- 例
- 交換
- 実行します
- 実行された
- 実行
- 体験
- 探る
- エクステンション
- false
- フィールド
- File
- 名
- フラットな
- 柔軟性
- 柔軟に
- フォロー中
- から
- function
- さらに
- 集める
- 一般に
- 取得する
- GitHubの
- 与える
- グラフ
- グループ
- グループの
- ゲスト
- ゲストブログ
- ハンドル
- 起こります
- 持ってる
- he
- 助けます
- 助けました
- より高い
- host
- 主催
- 認定条件
- How To
- HTML
- HTTPS
- IAM
- アイデンティティ
- if
- 実装する
- 実装
- import
- 輸入
- 改善します
- in
- include
- 含ま
- 含めて
- 増える
- 独立性
- 個人
- 産業
- インフラ
- 内部
- 洞察
- を取得する必要がある者
- 整合性
- 相互作用
- インタフェース
- に
- 問題
- 発行
- IT
- ITS
- 自体
- ジョブ
- Jobs > Create New Job
- 参加
- 旅
- JPG
- JSON
- キー
- 種類
- 知っている
- 知識
- Kubernetes
- 後で
- 最新の
- 学んだ
- 最低
- ような
- リスト
- リスト
- リスト
- 負荷
- ローカル
- ログインして
- 見て
- 保守
- make
- 作る
- 管理します
- マネージド
- マネージャー
- 成熟した
- 五月..
- メッセージ
- 最小
- 分
- モジュール
- モジュール
- 他には?
- ずっと
- の試合に
- 名
- 名前付き
- 名
- ナビゲート
- 必要
- 必要
- ニーズ
- ネットワーク
- ネットワーキング
- 新作
- 注意
- 今
- オブジェクト
- オブジェクト
- of
- on
- ONE
- の
- オープンソース
- 操作
- 業務執行統括
- 演算子
- オプション
- or
- 組織
- その他
- 私たちの
- でる
- 出力
- 自分の
- パッケージ
- パラメーター
- パートナー
- パートナーネットワーク
- パートナー
- 部品
- パッチ
- path
- パトリック
- パーミッション
- パイプライン
- プラットフォーム
- プラットフォーム
- プラトン
- プラトンデータインテリジェンス
- プラトデータ
- プレイ
- ポッド
- 方針
- 肖像
- ポスト
- 主に
- プライベート
- 処理
- プロダクト
- プロフィール
- プロジェクト
- プロジェクト(実績作品)
- 提案された
- プロバイダー
- プロバイダ
- は、大阪で
- Python
- 質問
- RE
- リーチ
- 受け取ります
- 最近
- 推奨される
- 減らします
- 地域
- 削除します
- 要件
- リソースを追加する。
- リソースの活用
- リソース
- 責任
- 責任
- 結果
- 結果
- 堅牢な
- 職種
- 役割
- ルール
- ラン
- ランニング
- runs
- SaaSの
- 同じ
- Save
- 規模
- スケーリング
- シーン
- スケジュール
- 予定の
- スケジューリング
- スクラッチ
- 二番
- 安全に
- セキュリティ
- シリーズ
- サービス
- サービス
- セッションに
- 設定
- 株式
- シェアリング
- すべき
- 示す
- 作品
- 単純
- 簡素化する
- 単一環境
- サイズ
- 小さい
- ソフトウェア
- ソフトウェア工学
- ソリューション
- ソース
- ソース
- 特定の
- 特に
- スピード
- スタック
- スタッフ
- start
- 開始
- 起動
- 開始
- ステートメント
- まだ
- ストレージ利用料
- ストレージオプション
- 店舗
- 構造
- 勉強
- テーマ
- 成功
- 成功した
- 確か
- 持続可能な
- 切り替え
- シンボル
- システム
- 取る
- 撮影
- 取り
- ターゲット
- 仕事
- タスク
- チーム
- チーム
- 伝える
- テンプレート
- テラフォーム
- 클라우드 기반 AI/ML및 고성능 컴퓨팅을 통한 디지털 트윈의 기초 – Edward Hsu, Rescale CPO 많은 엔지니어링 중심 기업에게 클라우드는 R&D디지털 전환의 첫 단계일 뿐입니다. 클라우드 자원을 활용해 엔지니어링 팀의 제약을 해결하는 단계를 넘어, 시뮬레이션 운영을 통합하고 최적화하며, 궁극적으로는 모델 기반의 협업과 의사 결정을 지원하여 신제품을 결정할 때 데이터 기반 엔지니어링을 적용하고자 합니다. Rescale은 이러한 혁신을 돕기 위해 컴퓨팅 추천 엔진, 통합 데이터 패브릭, 메타데이터 관리 등을 개발하고 있습니다. 이번 자리를 빌려 비즈니스 경쟁력 제고를 위한 디지털 트윈 및 디지털 스레드 전략 개발 방법에 대한 인사이트를 나누고자 합니다.
- それ
- ソース
- アプリ環境に合わせて
- その後
- ボーマン
- 彼ら
- この
- 介して
- 〜へ
- トークン
- ツール
- 豊富なツール群
- top
- トピック
- 変換
- トリガー
- true
- 2
- type
- 根本的な
- アップデイト
- に
- つかいます
- 中古
- ユーザー
- ユーザーインターフェース
- 使用されます
- 貴重な
- 値
- 変数
- さまざまな
- バージョン
- 活気のある
- バーチャル
- 歩く
- ウォークスルー
- ました
- we
- ウェブ
- Webサービス
- WELL
- この試験は
- いつ
- which
- 全体
- その
- なぜ
- 広範囲
- 意志
- 働いていました
- ワークフロー
- ワークフロー
- ワーキング
- 年
- 貴社
- あなたの
- ゼファーネット