Amazon OpenSearch Ingestion のロールとユーザーの設定 - Amazon OpenSearch サービス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon OpenSearch Ingestion のロールとユーザーの設定

Amazon OpenSearch Ingestion では、ソースアプリケーションからパイプラインへの書き込みと、パイプラインからシンクへの書き込みを行えるように、さまざまなアクセス許可モデルと IAM ロールを使用しています。データの取り込みを開始する前に、特定のアクセス許可を持つ IAM ロールをユースケースに基づいて 1 つ以上作成する必要があります。

パイプラインを正常に設定するには、少なくとも次のロールが必要です。

名前 説明
管理ロール

パイプラインを管理するプリンシパル (一般的には「パイプライン管理者」) には、osis:CreatePipelineosis:UpdatePipeline などのアクセス許可を含む管理アクセスが必要です。これらのアクセス許可により、ユーザーはパイプラインを管理できますが、必ずしもパイプラインにデータを書き込むことができるわけではありません。

パイプラインロール

パイプラインの YAML 設定内で指定するパイプラインロールは、パイプラインからドメインまたはコレクションシンクに書き込んだり、プル型のソースから読み込んだりするために必要なアクセス許可を付与します。詳細については、以下の各トピックを参照してください。

取り込みロール

取り込みロールには、パイプラインリソースの osis:Ingest 許可が含まれています。これにより、プッシュ型のソースはパイプラインにデータを取り込むことができます。

次の図は、Amazon S3 や Fluent Bit などのデータソースから別のアカウントのパイプラインに書き込むときの一般的なパイプライン設定を示しています。この場合、パイプラインにアクセスするには、クライアントが取り込みロールを引き受けている必要があります。詳細については、「クロスアカウント取り込み」を参照してください。

Cross-account data ingestion pipeline showing client application, roles, and OpenSearch sink.

簡単な設定ガイドについては、「チュートリアル: Amazon OpenSearch Ingestion を使用してドメインにデータを取り込む」を参照してください。

管理ロール

パイプラインの作成と変更に必要な基本的な osis:* 許可に加えて、パイプラインロールリソース用の iam:PassRole 許可も必要です。ロールを受け入れる AWS のサービス は、必ずこの許可を使用します。OpenSearch Ingestion は、シンクにデータを書き込む必要があるたびに、このロールを引き受けます。これにより、承認済みのユーザーのみが、アクセス許可を付与するロールを使用して OpenSearch Ingestion を設定できるようになります。詳細については、「AWS のサービス のサービスにロールを渡すアクセス権限をユーザーに付与する」を参照してください。

AWS Management Consoleを使用している場合 (ブループリントの使用とパイプラインのチェック)、パイプラインを作成および更新するには次のアクセス許可が必要です。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Resource":"*", "Action":[ "osis:CreatePipeline", "osis:GetPipelineBlueprint", "osis:ListPipelineBlueprints", "osis:GetPipeline", "osis:ListPipelines", "osis:GetPipelineChangeProgress", "osis:ValidatePipeline", "osis:UpdatePipeline" ] }, { "Resource":[ "arn:aws:iam::your-account-id:role/pipeline-role" ], "Effect":"Allow", "Action":[ "iam:PassRole" ] } ] }

AWS CLIを使用している場合 (ブループリントの事前検証とブループリントの使用以外)、パイプラインを作成および更新するには次のアクセス許可が必要です。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Resource":"*", "Action":[ "osis:CreatePipeline", "osis:UpdatePipeline" ] }, { "Resource":[ "arn:aws:iam::your-account-id:role/pipeline-role" ], "Effect":"Allow", "Action":[ "iam:PassRole" ] } ] }

パイプラインロール

パイプラインからシンクに書き込むには、特定のアクセス許可が必要です。これらのアクセス許可は、シンクが OpenSearch Service ドメインか OpenSearch Serverless コレクションかによって異なります。

さらに、パイプラインには、ソースアプリケーションからプルするための許可 (ソースがプルベースのプラグインの場合)、および S3 デッドレターキュー (設定されている場合) に書き込むための許可が必要になる場合があります。

ドメインシンクへの書き込み

OpenSearch Ingestion パイプラインには、シンクとして設定されている OpenSearch Service ドメインに書き込むためのアクセス許可が必要です。これらのアクセス許可には、ドメインを記述して、そこに HTTP リクエストを送信できることが含まれます。

シンクへの書き込みに必要なアクセス許可をパイプラインに付与するには、まず必要なアクセス許可を持つ AWS Identity and Access Management (IAM) ロールを作成します。これらのアクセス許可は、パブリックパイプラインと VPC パイプラインのどちらも同じです。次に、ドメインがパイプラインからの書き込みリクエストを受け入れることができるように、ドメインアクセスポリシーでパイプラインロールを指定します。

最後に、パイプライン設定の sts_role_arn オプションの値にロール ARN を指定します。

version: "2" source: http: ... processor: ... sink: - opensearch: ... aws: sts_role_arn: arn:aws:iam::your-account-id:role/pipeline-role

これらの各ステップを完了する手順については、「パイプラインにドメインへのアクセスを許可する」を参照してください。

コレクションシンクへの書き込み

シンクとして設定されている OpenSearch Serverless コレクションに書き込みを行うには、OpenSearch Ingestion パイプラインにアクセス許可を付与する必要があります。これらのアクセス権限には、コレクションを記述しそこに HTTP リクエストを送信できることが含まれます。

まず、すべてのリソース (*) に対する aoss:BatchGetCollection アクセス権限を持つ、IAM ロールを作成します。次に、このロールをデータアクセスポリシーに追加し、インデックスの作成、インデックスの更新、インデックスの記述、コレクション内でのドキュメントの書き込みを行うためのアクセス権限をそれに付与します。最後に、パイプライン設定の sts_role_arn オプションの値にロール ARN を指定します。

これらの各ステップを完了する手順については、「パイプラインにコレクションへのアクセスを許可する」を参照してください。

デッドレターキューへの書き込み

デッドレターキュー (DLQ) に書き込むようにパイプラインを設定する場合は、DLQ 設定内に sts_role_arn オプションを含める必要があります。このロールに含まれる許可により、DLQ イベントの宛先として指定した S3 バケットにパイプラインがアクセスできるようになります。

すべてのパイプラインコンポーネントで同じ sts_role_arn を使用する必要があります。したがって、DLQ アクセスを提供するパイプラインロールに別の許可ポリシーをアタッチする必要があります。少なくとも、ロールにはバケットリソースに対する S3:PutObject アクションが許可されている必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "WriteToS3DLQ", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-dlq-bucket/*" } ] }

その後、パイプラインの DLQ 設定内でロールを指定できます。

... sink: opensearch: dlq: s3: bucket: "my-dlq-bucket" key_path_prefix: "dlq-files" region: "us-west-2" sts_role_arn: "arn:aws:iam::your-account-id:role/pipeline-role"

取り込みロール

OpenSearch Ingestion が現在サポートしているすべてのソースプラグイン (S3 を除く) は、プッシュ型のアーキテクチャを使用しています。つまり、パイプラインがソースからデータを取得するのではなく、ソースアプリケーションがデータをパイプラインにプッシュします。

そのため、OpenSearch Ingestion パイプラインにデータを取り込むために必要なアクセス許可を、ソースアプリケーションに付与する必要があります。少なくとも、リクエストに署名するロールには、パイプラインにデータを送信できるようにする osis:Ingest アクションの許可を付与する必要があります。パブリックパイプラインと VPC パイプラインのエンドポイントにも、同じアクセス許可が必要です。

次のサンプルポリシーでは、関連するプリンシパルが my-pipeline という名前の 1 つのパイプラインにデータを取り込むことを許可しています。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PermitsWriteAccessToPipeline", "Effect": "Allow", "Action": "osis:Ingest", "Resource": "arn:aws:osis:region:your-account-id:pipeline/pipeline-name" } ] }

詳細については、「Amazon OpenSearch Ingestion パイプラインを他のサービスやアプリケーションと統合する」を参照してください。

クロスアカウント取り込み

アプリケーションアカウントなど、異なる AWS アカウント からデータをパイプラインに取り込む必要がある場合があります。クロスアカウント取り込みを設定するには、パイプラインと同じアカウント内で取り込みロールを定義し、その取り込みロールとアプリケーションアカウント間に信頼関係を確立します。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::external-account-id:root" }, "Action": "sts:AssumeRole" }] }

次に、取り込みロールを引き受けるようにアプリケーションを設定します。アプリケーションアカウントは、パイプラインアカウントの取り込みロールに対する AssumeRole 許可を、アプリケーションロールに付与する必要があります。

詳細な手順と IAM ポリシーの例については、「クロスアカウント取り込みアクセスの提供」を参照してください。