CloudWatch Logs から別のアカウントの VPC ベースの Amazon OpenSearch Service クラスターにデータをストリーミングするにはどうすればよいですか?
最終更新日: 2022 年 6 月 23 日
別のアカウントの仮想プライベートクラウド (VPC) を使用して、Amazon CloudWatch Logs から Amazon OpenSearch Service クラスターにデータをストリーミングしようとしています。ただし、「有効な Amazon OpenSearch Service のエンドポイントを入力してください」というエラーメッセージが表示されます。このエラーの解決方法を教えてください。
簡単な説明
CloudWatch Logs から別のアカウントの OpenSearch Service クラスターにデータをストリーミングするには、次の手順を実行します。
1. アカウント A で CloudWatch Logs をセットアップします。
2. アカウント A で AWS Lambda を設定します。
3. アカウント間の Amazon Virtual Private Cloud (Amazon VPC) ピアリングを設定します。
解決方法
アカウント A で CloudWatch Logs をセットアップする
1. アカウント A で CloudWatch Logs コンソールを開き、ロググループを選択します。
2. [アクション] をクリックします。
3. [Create OpenSearch subscription] (OpenSearch サブスクリプションを作成) フィルターを選択します。
4. [アカウントの選択] オプションで、[このアカウント] を選択します。
5. [OpenSearch Service cluster] (OpenSearch Service クラスター)ドロップダウンリストでは、アカウント A の既存のクラスターを選択します。
6. 選択した OpenSearch Service クラスターを呼び出すための許可を持つ [Lambda IAM Execution Role] (Lambda IAM 実行ロール) を選択します。
7. AWSLambdaVPCAccessExecutionRole ポリシーをロールにアタッチします。
8. [ログ形式とフィルターの設定] で、ログ形式とサブスクリプションフィルターパターンを選択します。
9. [次へ] を選択します。
10. サブスクリプションフィルター名を入力し、[Start Streaming] (ストリーミングを開始) を選択します。ストリーミングの詳細については、CloudWatch Logs データを Amazon OpenSearch Service にストリーミングするを参照してください。
アカウント A で Lambda を設定する
1. アカウント A で、Lambda コンソールを開きます。
2. Lambda 関数を選択します。
3. 関数コードで、アカウント B の OpenSearch Service クラスターのエンドポイント変数を更新します。この更新により、Lambda 関数はアカウント B の OpenSearch Service ドメインにデータを送信できるようになります。
4. [設定] を選択します。
5. [VPC] を選択します。
6. [VPC] で、[編集] を選択します。
7. VPC、サブネット、セキュリティグループを選択します。
注: この選択により、Lambda 関数が VPC 内で実行され、VPC ルーティングを使用して OpenSearch Service ドメインにデータを送り返します。Amazon Virtual Private Cloud (Amazon VPC) の設定の詳細については、VPC 内のリソースにアクセスするための Lambda 関数の設定を参照してください。
8. [保存] をクリックします。
アカウント間の VPC ピアリングを設定する
1. アカウント A とアカウント B で Amazon VPC コンソールを開きます。
注意: VPC に CIDR ブロックが重複していないことを確認してください。
2. 2 つのカスタム VPC (Lambda と OpenSearch Service) 間に VPC ピアリングのセッションを作成します。この VPC ピアリングのセッションでは、Lambda が OpenSearch Service ドメインにデータを送信できます。VPC ピアリング接続の詳細については、VPC ピアリング接続の作成と承認を参照してください。
3. 両方の VPC のルートテーブルを更新します。ルートテーブルの詳細については、「VPC ピアリング接続のルートテーブルを更新する」を参照してください。
4. アカウント A で、[セキュリティグループ] に移動します。
5. Lambda がセットアップされているサブネットに割り当てられたセキュリティグループを選択します。
注意: この例では、「セキュリティグループ」はサブネットネットワーク ACL を指します。
6. OpenSearch Service サブネットからのトラフィックを許可するインバウンドルールを追加します。
7. アカウント B で、OpenSearch Service がセットアップされているサブネットに割り当てられたセキュリティグループを選択します。
8. Lambda サブネットからのトラフィックを許可するインバウンドルールを追加します。
9. アカウント B で、OpenSearch Service コンソールを開きます。
10. [アクション] をクリックします。
11. [modify access policy] (アクセスポリシーの変更) を選択し、次のポリシーを追加します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<AWS Account A>:role/<Lambda Execution Role>"
},
"Action": "es:*",
"Resource": "arn:aws:es:us-east-1: ::<AWS
Account B>:domain/<OpenSearch Domain Name>/*"
}
]
}
このポリシーは、OpenSearch Service が Lambda 関数の実行ロールから呼び出しを行うことを許可します。
12. Lambda コンソールで [Error count and success rate] (エラー数および成功率) のメトリクスを確認します。このメトリクスは、ログが OpenSearch Service に正常に配信されたかどうかを確認します。
13. OpenSearch Service の [Indexing rate] (インデックス作成率) メトリクスをチェックして、データが送信されたかどうかを確認します。CloudWatch Logs が、Amazon VPC の両方のアカウントでストリーミングされるようになりました。