別のアカウントの仮想プライベートクラウド (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.OpenSearch サブスクリプションの作成フィルターを選択します。
4.**[アカウントを選択]**オプションで、[このアカウント]を選択します。
5.OpenSearch Service クラスターのドロップダウンリストで、アカウント A の既存のクラスターを選択します。
6.選択したOpenSearch Service クラスターを呼び出す権限を持つ Lambda IAM 実行ロールを選択します。
7.AWSLambdaVPCAccessExecutionRole ポリシーをロールにアタッチします。
8.[ログ形式とフィルターの設定] で、[ログ形式] と [サブスクリプションフィルターパターン] を選択します。
9.[次へ] を選択します。
10.サブスクリプションフィルター名を入力し、[ストリーミングを開始] を選択します。ストリーミングの詳細については、「Amazon OpenSearch Service への CloudWatch Logs データのストリーミング」を参照してください。
アカウント 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.[アクセスポリシーの変更] を選択し、次のポリシーを追加します:
{
"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 コンソールでエラー数と成功率メトリックを確認します。このメトリックは、ログが OpenSearch Service に正常に配信されたかどうかを検証します。
13.OpenSearch Service のインデックスレートメトリックをチェックして、データが送信されたかどうかを確認します。CloudWatch Logs が Amazon VPC 内の両方のアカウントにストリーミングされるようになりました。