クロスアカウントの Kinesis ストリームから Lambda 関数を呼び出すにはどうすればよいですか?

所要時間1分
0

別の AWS アカウントにある Amazon Kinesis ストリームを使用して AWS Lambda 関数を呼び出したいと考えています。

解決策

Amazon Kinesis Data Streams は、リソースベースのポリシーをサポートしています。これにより、あるアカウントのストリームに取り込まれたデータを、別のアカウントの AWS Lambda 関数で処理できます。

以下の手順に従って Lambda 関数を作成し、Kinesis Data Streams にアクセスするように設定します。

Lambda 実行ロールを作成する

  1. IAM コンソールにアクセスし、[ロール] タブを選択します。
  2. [ロールを作成] を選択します。
  3. AWS サービスの場合は、[信頼されたエンティティタイプ] を選択します。[サービス][Lambda] を選択します。
  4. [アクセス許可ポリシー] テーブルで、マネージド IAM ポリシー AWSLambdaKinesisExecutionRole を選択します。
  5. ロールの名前を指定し、[ロールを作成] を選択します。

: マネージド IAM ポリシー AWSLambdaKinesisExecutionRole には、必要な Kinesis Data Streams および Lambda 呼び出しの権限があります。また、アクセスできる可能性のあるすべての Kinesis Data Streams リソースへのアクセスも許可されます。

Lambda 関数を作成する

Amazon Kinesis Data Streams でレコードを処理できる AWS Lambda 関数を作成 します。

[実行ロール] で、作成したロールを選択します。

: このポリシーには、Kinesis Data Streams および Lambda 呼び出しの必要な権限があります。また、アクセスできる可能性のあるすべての Kinesis Data Streams リソースへのアクセスも許可されます。
実行ロールを Kinesis Data Streams リソース所有者に追加して、リソースポリシーを設定します。

Kinesis Data Streams を設定する

  1. Amazon Kinesis Data Stream コンソールにアクセスし、データストリームを選択します。
  2. [データストリーム共有] タブを選択します。
  3. [ポリシーを作成] ボタンをクリックして、ビジュアルポリシーエディターを起動します。
  4. [拡張ファンアウト] タブでコンシューマーを選択し、登録されたコンシューマーをデータストリーム内で共有します。
  5. [ポリシーを作成] を選択します。JSON ポリシーを直接記述することもできます。
  6. [プリンシパル] に、作成したクロスアカウントの Lambda 実行ロールを入力します。必ず kinesis:DescribeStream というアクションを含めてください。
    Kinesis Data Streams のリソースポリシーの例について詳しくは、「Kinesis Data Streams のリソースベースのポリシーの例」を参照してください。
  7. [ポリシーを作成] を選択します。または、PutResourcePolicy を使用してポリシーをリソースにアタッチすることもできます。

AWS マネージドキーでサーバー側の暗号化を使用し、リソースポリシーを介してアクセスを共有する場合は、カスタマーマネージドキー (AWS KMS キー) を使用する必要があります。詳細については、「What is server-side Encryption for Kinesis Data Streams?」を参照してください。また、共有プリンシパルエンティティが KMS クロスアカウントアクセスを通じて KMS キーにアクセスできるようにする必要があります。詳細については、「Allowing users in other accounts to use a KMS key」を参照してください。

AWS公式
AWS公式更新しました 2ヶ月前