AWS のマルチアカウント アーキテクチャは、ワークロードを分離し、きめ細かいコスト割り当てを可能にし、異なる環境間でのコラボレーションを促進することにより、セキュリティ、コンプライアンス、リソース管理を強化するために不可欠です。また、リスクが軽減され、拡張性が向上し、高度なネットワーク構成が可能になります。
ストリーミング アーキテクチャでは、ビジネスと IT の要件に応じて、イベント プロデューサー、ストリーム ストレージ、およびイベント コンシューマーを 1 つのアカウントに含めることも、異なるアカウントに分散することもできます。たとえば、会社では、さまざまなアカウントにわたる複数の異なるプロデューサーからのクリックストリーム データやログ データを一元管理したいと考えている場合があります。マーケティング、製品エンジニアリング、または分析のデータ利用者は、アカウント間で同じストリーミング データにアクセスする必要があり、そのためにはマルチアカウント ストリーミング アーキテクチャを提供する機能が必要です。
マルチアカウント ストリーミング アーキテクチャを構築するには、次を使用できます。 Amazon Kinesisデータストリーム ストリームストレージとして、そして AWSラムダ イベントコンシューマとして。 Amazon Kinesis Data Streams により、大規模なストリーミング データのリアルタイム処理が可能になります。 Lambda と統合すると、サーバーレスのデータ処理が可能になり、インフラストラクチャを管理せずにリアルタイムでデータ ストリームを分析して対応できるようになります。この統合は、リアルタイム分析、ログ処理、モノのインターネット (IoT) データ取り込みなどを含むさまざまなユースケースをサポートしており、ストリーミング データからタイムリーな洞察を必要とする企業にとって価値があります。この投稿では、あるアカウントのストリームに取り込まれたデータを、別のアカウントの Lambda 関数を使用して処理する方法を示します。
最近リリースされた Kinesis Data Streams のサポート リソースベースのポリシー 別のアカウントから Lambda を呼び出すことができます。リソースベースのポリシーを使用すると、AWS アカウントを指定できます。 AWS IDおよびアクセス管理 (IAM) ユーザー、または IAM ロール、およびアクセスを許可する正確な Kinesis Data Streams アクション。アクセスが許可されたら、別のアカウントで Lambda 関数を設定して、自分のアカウントに属するデータ ストリームの処理を開始できます。これにより、両方のアカウントで Lambda 関数を使用してストリーミング データをコピーする必要がなくなるため、コストが削減され、データ処理パイプラインが簡素化されます。データ ストリームまたは登録済み消費者へのアクセスを共有しても、アカウントに追加料金はかかりません。 Kinesis Data Streams リソースのクロスアカウント使用は、引き続きリソース所有者に請求されます。
この投稿では、Kinesis Data Streams を使用します。 強化されたファンアウト 機能を利用して、消費者にアプリケーションに合わせた専用の読み取りスループットを提供します。デフォルトでは、Kinesis Data Streams はコンシューマ間でシャードあたり 2 MB/秒の共有読み取りスループットを提供しますが、ファンアウトが強化されているため、各コンシューマはシャードあたり 2 MB/秒の専用スループットを享受できます。この柔軟性により、Kinesis Data Streams を特定の要件にシームレスに適応させることができ、ニーズに応じて専用スループットまたは共有スループットの拡張ファンアウトを選択できます。
ソリューションの概要
このソリューションでは、Kinesis Data Streams をアカウント 1 にデプロイし、Lambda をアカウント 2 のコンシューマーとしてデプロイして、データストリームからデータを受信します。次の図は、高レベルのアーキテクチャを示しています。
セットアップには次の重要な要素が必要です。
- アカウント 1 の Kinesis データ ストリームとアカウント 2 の Lambda 関数
- アカウント 1 の Kinesis Data Streams リソースポリシー。クロスアカウント Lambda 実行ロールが Kinesis データストリーム上で操作を実行できるようにします。
- アカウント 2 の Lambda 実行ロールとアカウント 1 の拡張ファンアウトコンシューマーリソースポリシーにより、クロスアカウント Lambda 実行ロールが Kinesis データストリームで操作を実行できるようになります。
セットアップには 3 つを使用します AWS CloudFormation 主要なリソースを作成するためのテンプレート:
- CloudFormation テンプレート 1 は、アカウント 1 に次の主要なリソースを作成します。
- Kinesis データストリーム
- Kinesis データストリームの拡張ファンアウトコンシューマー
- CloudFormation テンプレート 2 は、アカウント 2 に次の主要なリソースを作成します。
- コンシューマーラムダ関数
- コンシューマ Lambda 関数実行ロール
- CloudFormation テンプレート 3 は、アカウント 2 に次のリソースを作成します。
- コンシューマ Lambda 関数のイベント ソース マッピング
このソリューションは単一リージョンのデプロイをサポートしており、CloudFormation テンプレートは異なる AWS アカウント間で同じリージョンにデプロイする必要があります。このソリューションでは、Kinesis Data Streams の拡張ファンアウトを使用します。これは、複数のコンシューマーにわたって大きなスループットを必要とするアーキテクチャをデプロイするためのベストプラクティスです。このソリューションを展開するには、次のセクションの手順を完了してください。
前提条件
2 つの AWS アカウントと、CloudFormation テンプレートを実行してソリューション アーキテクチャで説明されているサービスを作成するために必要な権限が必要です。また、 AWSコマンドラインインターフェイス (AWS CLI) がインストールされている、バージョン 2.15 以降。
CloudFormation テンプレート 1 を起動する
最初の CloudFormation テンプレートを起動するには、次の手順を実行します。
- にサインインする AWSマネジメントコンソール アカウント 1 として、適切な AWS リージョンを選択します。
- ダウンロードして起動 CloudFormation テンプレート 1 Kinesis データストリームをデプロイする場所。
- LambdaConsumerAccountId、Lambda コンシューマー アカウント ID を入力し、[送信] をクリックします。 CloudFormation テンプレートのデプロイが完了するまでに数分かかります。
- スタックが完了したら、AWS CloudFormation コンソールでスタックに移動します。 出力 タブをクリックして、次のパラメータの値をコピーします。
KinesisStreamArn
KinesisStreamEFOConsumerArn
KMSKeyArn
これらの値は後の手順で必要になります。
CloudFormation テンプレート 2 を起動する
2 番目の CloudFormation テンプレートを起動するには、次の手順を実行します。
- アカウント 2 としてコンソールにサインインし、適切なリージョンを選択します。
- ダウンロードして起動 CloudFormation テンプレート 2 Lambda コンシューマーをホストする場所。
- 前のステップで取得した次の入力パラメータを指定します。
KinesisStreamArn
KinesisStreamEFOConsumerArn
KMSKeyArn
CloudFormation テンプレートは、次の主要なリソースを作成します。
- ラムダコンシューマ
- Lambda 実行ロール
Lambda 関数の実行ロールは、AWS のサービスとリソースにアクセスするためのアクセス許可を関数に付与する IAM ロールです。ここでは、必要な Kinesis Data Streams および Lambda 呼び出し権限を持つ Lambda 実行ロールを作成します。
CloudFormation テンプレートのデプロイが完了するまでに数分かかります。
- スタックが完了したら、AWS CloudFormation コンソールでスタックに移動します。 出力 タブをクリックして、次のパラメータの値をコピーします。
KinesisStreamCreateResourcePolicyCommand
KinesisStreamEFOConsumerCreateResourcePolicyCommand
- 次の AWS CLI コマンドをアカウント 1 で実行します。 AWS クラウドシェル。 CloudShell には最新バージョンの AWS CLI が含まれており、あらゆる種類の障害を回避できるため、CloudShell を使用することをお勧めします。
- KinesisStreamCreateResourcePolicyCommand – これにより、アカウント 1 に Kinesis Data Stream のリソースポリシーが作成されます。以下はリソース ポリシーのサンプルです。
- KinesisStreamEFOConsumerCreateResourcePolicyCommand – これにより、アカウント 1 の Kinesis データストリームの拡張ファンアウトコンシューマーのリソースポリシーが作成されます。 以下はサンプルリソースポリシーです。
このポリシーには、Kinesis Data Streams コンソールの次の場所からアクセスすることもできます。 強化されたファンアウト, 消費者名, 消費者共有リソースベースのポリシー.
CloudFormation テンプレート 3 を起動する
アカウント 1 で Kinesis データストリームとその拡張ファンアウトコンシューマ用のリソースポリシーを作成したので、アカウント 2 でコンシューマ Lambda 関数の Lambda イベントソースマッピングを作成できます。 次の手順を実行します。
- アカウント 2 としてコンソールにサインインし、適切なリージョンを選択します。
- ダウンロードして起動 CloudFormation テンプレート 3 CloudFormation テンプレート 2 を使用して作成したスタックを更新します。
CloudFormation テンプレートは、Lambda イベント ソース マッピングを作成します。
ソリューションを検証する
この時点で、展開は完了です。 Kinesis データストリームはメッセージを消費するために使用でき、Lambda 関数は宛先アカウントでこれらのメッセージを受信します。アカウント 1 のデータ ストリームにサンプル メッセージを送信するには、CloudShell を使用して次の AWS CLI コマンドを実行します。
アカウント 2 の Lambda 関数はメッセージを受信でき、次を使用して同じことを確認できるはずです。 アマゾンクラウドウォッチ ログ:
- CloudWatch コンソールで、 ロググループ ナビゲーションペインに表示されます。
- ロググループを見つけます /aws/lambda/kds-cross-account-stream-efo-consumer.
- 選択する ロググループの検索 関連するログ メッセージを表示します。以下はメッセージの例です。
クリーンアップ
追加コストを避けるために、この投稿の一部として作成したすべてのリソースをクリーンアップすることを常にお勧めします。
リソースをクリーンアップするには、アカウント 1 と 2 からそれぞれの CloudFormation スタックを削除し、プロデューサーが Kinesis データ ストリームにイベントをプッシュするのを停止します。これにより、不必要な料金が請求されることがなくなります。
まとめ
この投稿では、AWS リソースベースのポリシーを使用して、クロスアカウント Lambda と Kinesis Data Streams の統合を設定する方法を説明しました。これにより、ある AWS アカウント内のストリームに取り込まれたデータを、別のアカウントにある Lambda 関数を通じて処理できるようになります。中央アカウントで Kinesis データストリームを使用し、複数のコンシューマーがそこからデータを読み取る顧客をサポートするために、Kinesis Data Streams の拡張ファンアウト機能を使用しました。
開始するには、Kinesis Data Streams コンソールを開くか、新しい API を使用します。 PutResourceポリシー リソース ポリシーをデータ ストリームまたはコンシューマにアタッチします。
著者について
プラティック・パテル シニア テクニカル アカウント マネージャーであり、ストリーミング分析のスペシャリストです。 彼は AWS の顧客と協力し、ベストプラクティスを使用したソリューションの計画と構築を支援し、顧客の AWS 環境を積極的に健全な運用状態に保つための継続的なサポートと技術ガイダンスを提供しています。
愛 英国の Amazon AWS のシニア ソリューション アーキテクトです。彼は電力、公益事業、製造、自動車の顧客全体で戦略的実装に取り組んでおり、最適なビジネス成果を推進するために AWS ストリーミングと高度なデータ分析ソリューションの使用を専門としています。
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- PlatoData.Network 垂直生成 Ai。 自分自身に力を与えましょう。 こちらからアクセスしてください。
- プラトアイストリーム。 Web3 インテリジェンス。 知識増幅。 こちらからアクセスしてください。
- プラトンESG。 カーボン、 クリーンテック、 エネルギー、 環境、 太陽、 廃棄物管理。 こちらからアクセスしてください。
- プラトンヘルス。 バイオテクノロジーと臨床試験のインテリジェンス。 こちらからアクセスしてください。
- 情報源: https://aws.amazon.com/blogs/big-data/invoke-aws-lambda-functions-from-cross-account-amazon-kinesis-data-streams/