Amazon Data Firehose によるアクセスの制御 - Amazon Data Firehose
アプリケーションに Amazon Data Firehose リソースへのアクセスを許可するAmazon Data Firehose にプライベート Amazon MSK クラスターへのアクセスを許可するAmazon Data Firehose に IAM ロールの引き受けを許可するAmazon Data Firehose にデータ形式変換 AWS Glue 用の へのアクセス権を付与するAmazon Data Firehose に Amazon S3 送信先へのアクセス権を付与するAmazon Redshift 送信先へのアクセス権を Amazon Data Firehose に付与する Amazon Data Firehose にパブリック OpenSearch サービスの送信先へのアクセス権を付与するAmazon Data Firehose に VPC のサービス OpenSearch 送信先へのアクセスを許可するAmazon Data Firehose にパブリック OpenSearchサーバーレス送信先へのアクセスを許可するAmazon Data Firehose に VPC OpenSearch内のサーバーレス送信先へのアクセスを許可するAmazon Data Firehose に Splunk 送信先へのアクセス権を付与するVPC の Splunk へのアクセスSnowflake または HTTP エンドポイントへのアクセスAmazon Data Firehose に Snowflake の送信先へのアクセス権を付与するVPC の Snowflake へのアクセスAmazon Data Firehose に HTTP エンドポイントの送信先へのアクセス権を付与するAmazon MSK からのクロスアカウント配信Amazon S3 の送信先へのクロスアカウント間の配信サービス宛先への OpenSearchクロスアカウント配信タグを使用したアクセスの制御

Amazon Data Firehose は、以前は Amazon Kinesis Data Firehose と呼ばれていました。

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

Amazon Data Firehose によるアクセスの制御

以下のセクションでは、Amazon Data Firehose リソースへのアクセスとリソースからのアクセスを制御する方法について説明します。対象となる情報には、Firehose ストリームにデータを送信できるようにアプリケーションにアクセスを許可する方法が含まれます。また、Amazon Simple Storage Service (Amazon S3) バケット、Amazon Redshift クラスター、または Amazon OpenSearch Service クラスターへのアクセス権を Amazon Data Firehose に付与する方法と、Datadog、Dynatrace、 LogicMonitorMongoDB、New Relic、Splunk、または Sumo Logic を送信先として使用する場合に必要となるアクセス許可についても説明します。最後に、このトピックのガイダンスでは、別の AWS アカウントに属する送信先にデータを配信できるように Amazon Data Firehose を設定する方法について説明します。これらすべての形式のアクセスを管理するテクノロジーは AWS Identity and Access Management (IAM) です。IAM の詳細については、「IAM とは?」を参照してください。

内容

アプリケーションに Amazon Data Firehose リソースへのアクセスを許可する

Firehose ストリームへのアクセス権をアプリケーションに付与するには、この例のようなポリシーを使用します。Action セクションを変更するか、"firehose:*" を使用してすべてのオペレーションへのアクセス権を付与することで、アクセス権を付与する個別の API オペレーションを調整できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:DeleteDeliveryStream", "firehose:PutRecord", "firehose:PutRecordBatch", "firehose:UpdateDestination" ], "Resource": [ "arn:aws:firehose:region:account-id:deliverystream/delivery-stream-name" ] } ] }

Amazon Data Firehose にプライベート Amazon MSK クラスターへのアクセスを許可する

Firehose ストリームのソースがプライベート Amazon MSK クラスターである場合は、この例のようなポリシーを使用します。

{ "Version": "2012-10-17", "Statement": [ { "Principal": { "Service": [ "firehose.amazonaws.com" ] }, "Effect": "Allow", "Action": [ "kafka:CreateVpcConnection" ], "Resource": "cluster-arn" } ] }

Amazon Data Firehose に IAM ロールの引き受けを許可する

このセクションでは、Amazon Data Firehose にデータの取り込み、処理、送信元から送信先への配信を行うアクセス許可とポリシーについて説明します。

注記

コンソールを使用して Firehose ストリームを作成し、新しいロールを作成するオプションを選択すると、 は必要な信頼ポリシーをロールにア AWS タッチします。Amazon Data Firehose で既存の IAM ロールを使用する場合、またはロールを自分で作成する場合は、Amazon Data Firehose がロールを引き受けることができるように、次の信頼ポリシーをそのロールにアタッチします。account-id をアカウント AWS ID に置き換えるには、ポリシーを編集します。ロールの信頼関係を変更する方法については、「ロールの修正」を参照してください。

Amazon Data Firehose は、Firehose ストリームがデータを処理および配信するために必要なすべてのアクセス許可に IAM ロールを使用します。Amazon Data Firehose がそのロールを引き受けられるように、次の信頼ポリシーがそのロールにアタッチされていることを確認します。

{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "firehose.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "account-id" } } }] }

このポリシーは、 sts:ExternalId条件コンテキストキーを使用して、 AWS アカウントから発信された Amazon Data Firehose アクティビティのみがこの IAM ロールを引き受けられるようにします。詳細については、「IAM ユーザーガイド」の「混乱する代理問題」を参照してください。

Firehose ストリームのソースとして Amazon MSK を選択した場合は、指定された Amazon MSK クラスターからソースデータを取り込むためのアクセス許可を Amazon Data Firehose に付与する別の IAM ロールを指定する必要があります。Amazon Data Firehose がそのロールを引き受けられるように、次の信頼ポリシーがそのロールにアタッチされていることを確認します。

{ "Version": "2012-10-17", "Statement": [ { "Principal": { "Service": [ "firehose.amazonaws.com" ] }, "Effect": "Allow", "Action": "sts:AssumeRole" } ] }

指定された Amazon MSK クラスターからソースデータを取り込むためのアクセス許可を Amazon Data Firehose に付与するこのロールが、次のアクセス許可を付与していることを確認します。

{ "Version": "2012-10-17", "Statement": [{ "Effect":"Allow", "Action": [ "kafka:GetBootstrapBrokers", "kafka:DescribeCluster", "kafka:DescribeClusterV2", "kafka-cluster:Connect" ], "Resource": "CLUSTER-ARN" }, { "Effect":"Allow", "Action": [ "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration", "kafka-cluster:ReadData" ], "Resource": "TOPIC-ARN" }] }

Amazon Data Firehose にデータ形式変換 AWS Glue 用の へのアクセス権を付与する

Firehose ストリームがデータ形式の変換を実行する場合、Amazon Data Firehose は に保存されているテーブル定義を参照します AWS Glue。Amazon Data Firehose に必要な へのアクセスを許可するには AWS Glue、ポリシーに次のステートメントを追加します。テーブルの ARN を検索する方法については、「 AWS Glue リソース ARNs」を参照してください。

[{ "Effect": "Allow", "Action": [ "glue:GetTable", "glue:GetTableVersion", "glue:GetTableVersions" ], "Resource": "table-arn" }, { "Sid": "GetSchemaVersion", "Effect": "Allow", "Action": [ "glue:GetSchemaVersion" ], "Resource": ["*"] }]

スキーマレジストリからスキーマを取得するための推奨ポリシーには、リソース制限はありません。詳細については、「 AWS Glue デベロッパーガイド」の「デシリアライザの IAM の例」を参照してください。

注記

現在、 AWS Glue はイスラエル (テルアビブ)、アジアパシフィック (ジャカルタ)、中東 (アラブ首長国連邦) の各リージョンではサポートされていません。アジアパシフィック (ジャカルタ) リージョンまたは中東 (アラブ首長国連邦) リージョンで Amazon Data Firehose を使用している場合 AWS Glue は、 が現在サポートされているリージョンのいずれか AWS Glue で、Amazon Data Firehose に へのアクセスを許可してください。Data Firehose と の間のクロスリージョン相互運用性 AWS Glue がサポートされています。 AWS Glue がサポートされているリージョンの詳細については、https://docs.aws.amazon.com/general/latest/gr/glue.html を参照してください。

Amazon Data Firehose に Amazon S3 送信先へのアクセス権を付与する

Amazon S3 の送信先を使用している場合、Amazon Data Firehose は S3 バケットにデータを配信し、オプションでデータ暗号化に所有している AWS KMS キーを使用できます。エラーログ記録が有効になっている場合、Amazon Data Firehose は CloudWatch ロググループとストリームにもデータ配信エラーを送信します。Firehose ストリームを作成するときは、IAM ロールが必要です。Amazon Data Firehose は IAM ロールを引き受け、指定されたバケット、キー、 CloudWatch ロググループ、ストリームへのアクセスを取得します。

次のアクセスポリシーを使用して、Amazon Data Firehose が S3 バケットと AWS KMS キーにアクセスできるようにします。S3 バケットを所有していない場合、Amazon S3 アクションのリストに s3:PutObjectAcl を追加します。これにより、Amazon Data Firehose によって配信されるオブジェクトへのフルアクセスがバケット所有者に付与されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] } ] }

上記のポリシーには、Amazon Kinesis Data Streams へのアクセスを許可するステートメントも含まれています。データソースとして Kinesis Data Streams を使用しない場合は、そのステートメントを削除できます。Amazon MSK をソースとして使用する場合は、そのステートメントを以下に置き換えることができます。

{ "Sid":"", "Effect":"Allow", "Action":[ "kafka:GetBootstrapBrokers", "kafka:DescribeCluster", "kafka:DescribeClusterV2", "kafka-cluster:Connect" ], "Resource":"arn:aws:kafka:{{mskClusterRegion}}:{{mskClusterAccount}}:cluster/{{mskClusterName}}/{{clusterUUID}}" }, { "Sid":"", "Effect":"Allow", "Action":[ "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration", "kafka-cluster:ReadData" ], "Resource":"arn:aws:kafka:{{mskClusterRegion}}:{{mskClusterAccount}}:topic/{{mskClusterName}}/{{clusterUUID}}/{{mskTopicName}}" }, { "Sid":"", "Effect":"Allow", "Action":[ "kafka-cluster:DescribeGroup" ], "Resource":"arn:aws:kafka:{{mskClusterRegion}}:{{mskClusterAccount}}:group/{{mskClusterName}}/{{clusterUUID}}/*" }

他の AWS のサービスがリソース AWS にアクセスできるようにする方法の詳細については、IAM ユーザーガイドの「 AWS のサービスにアクセス許可を委任するロールの作成」を参照してください。

別のアカウントの Amazon S3 送信先へのアクセス権を Amazon Data Firehose に付与する方法については、「」を参照してくださいAmazon S3 の送信先へのクロスアカウント間の配信

Amazon Redshift 送信先へのアクセス権を Amazon Data Firehose に付与する

Amazon Redshift 送信先を使用するときに Amazon Data Firehose へのアクセスを許可する場合は、以下を参照してください。

IAM ロールとアクセスポリシー

Amazon Redshift 送信先を使用している場合、Amazon Data Firehose は中間の場所として S3 バケットにデータを配信します。必要に応じて、所有している AWS KMS キーをデータ暗号化に使用できます。次に、Amazon Data Firehose は S3 バケットから Amazon Redshift でプロビジョニングされたクラスターまたは Amazon Redshift Serverless ワークグループにデータをロードします。エラーログ記録が有効になっている場合、Amazon Data Firehose は CloudWatch ロググループとストリームにもデータ配信エラーを送信します。Amazon Data Firehose は、指定された Amazon Redshift ユーザー名とパスワードを使用してプロビジョニングされたクラスターまたは Amazon Redshift Serverless ワークグループにアクセスし、IAM ロールを使用して指定されたバケット、キー、 CloudWatch ロググループ、ストリームにアクセスします。Firehose ストリームを作成するときは、IAM ロールが必要です。

次のアクセスポリシーを使用して、Amazon Data Firehose が S3 バケットと AWS KMS キーにアクセスできるようにします。S3 バケットを所有していない場合は、Amazon S3 アクションのリストs3:PutObjectAclに を追加します。これにより、バケット所有者は Amazon Data Firehose によって配信されるオブジェクトにフルアクセスできるようになります。このポリシーには、Amazon Kinesis Data Streams へのアクセスを許可するステートメントも含まれています。データソースとして Kinesis Data Streams を使用しない場合は、そのステートメントを削除できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] } ] }

他の AWS のサービスがリソース AWS にアクセスできるようにする方法の詳細については、IAM ユーザーガイドの「 AWS のサービスにアクセス許可を委任するロールの作成」を参照してください。

Amazon Redshift プロビジョンドクラスターまたは Amazon Redshift Serverless サーバーレスワークグループへの VPC アクセス

Amazon Redshift プロビジョンドクラスターまたは Amazon Redshift Serverless ワークグループが仮想プライベートクラウド (VPC) にある場合、それらはパブリック IP アドレスでパブリックにアクセスできる必要があります。また、Amazon Data Firehose の IP アドレスのブロックを解除して、Amazon Redshift でプロビジョニングされたクラスターまたは Amazon Redshift Serverless ワークグループへのアクセス権を Amazon Data Firehose に付与します。Amazon Data Firehose は現在、利用可能なリージョンごとに 1 つの CIDR ブロックを使用しています。

  • 米国東部 (オハイオ) 用の 13.58.135.96/27

  • 米国東部 (バージニア北部) 用の 52.70.63.192/27

  • 米国西部 (北カリフォルニア) 用の 13.57.135.192/27

  • 米国西部 (オレゴン) 用の 52.89.255.224/27

  • 18.253.138.96/27 AWS GovCloud (米国東部) 用の

  • 52.61.204.160/27 AWS GovCloud (米国西部) 用の

  • カナダ (中部) 用の 35.183.92.128/27

  • 40.176.98.192/27 カナダ西部 (カルガリー) 用の

  • アジアパシフィック (香港) 用の 18.162.221.32/27

  • アジアパシフィック (ムンバイ) 用の 13.232.67.32/27

  • アジアパシフィック (ハイデラバード) 用の 18.60.192.128/27

  • アジアパシフィック (ソウル) 用の 13.209.1.64/27

  • アジアパシフィック (シンガポール) 用の 13.228.64.192/27

  • アジアパシフィック (シドニー) 用の 13.210.67.224/27

  • アジアパシフィック (ジャカルタ) 用の 108.136.221.64/27

  • アジアパシフィック (東京) 用の 13.113.196.224/27

  • アジアパシフィック (大阪) 用の 13.208.177.192/27

  • 中国 (北京) 用の 52.81.151.32/27

  • 中国 (寧夏) 用の 161.189.23.64/27

  • 欧州 (チューリッヒ) 用の 16.62.183.32/27

  • 欧州 (フランクフルト) 用の 35.158.127.160/27

  • 欧州 (アイルランド) 用の 52.19.239.192/27

  • 欧州 (ロンドン) 用の 18.130.1.96/27

  • 欧州 (パリ) 用の 35.180.1.96/27

  • 欧州 (ストックホルム) 用の 13.53.63.224/27

  • 中東 (バーレーン) 用の 15.185.91.0/27

  • 南米 (サンパウロ) 用の 18.228.1.128/27

  • 欧州 (ミラノ) 用の 15.161.135.128/27

  • アフリカ (ケープタウン) 用の 13.244.121.224/27

  • 中東 (UAE) 用の 3.28.159.32/27

  • イスラエル (テルアビブ) 用の 51.16.102.0/27

  • アジアパシフィック (メルボルン) 用の 16.50.161.128/27

IP アドレスのブロック解除方法の詳細については、Amazon Redshift 入門ガイドの「クラスターへのアクセスの許可」を参照してください。

Amazon Data Firehose にパブリック OpenSearch サービスの送信先へのアクセス権を付与する

OpenSearch サービスの送信先を使用している場合、Amazon Data Firehose はデータを OpenSearch サービスクラスターに配信し、障害が発生したドキュメントまたはすべてのドキュメントを同時に S3 バケットにバックアップします。エラーログ記録が有効になっている場合、Amazon Data Firehose はロググループとストリームにもデータ配信エラー CloudWatchを送信します。Amazon Data Firehose は IAM ロールを使用して、指定された OpenSearchサービスドメイン、S3 バケット、 AWS KMS キー、 CloudWatch ロググループ、ストリームにアクセスします。Firehose ストリームを作成するときは、IAM ロールが必要です。

次のアクセスポリシーを使用して、Amazon Data Firehose が S3 バケット、 OpenSearchサービスドメイン、および AWS KMS キーにアクセスできるようにします。S3 バケットを所有していない場合は、Amazon S3 アクションのリストs3:PutObjectAclに を追加します。これにより、バケット所有者は Amazon Data Firehose によって配信されるオブジェクトにフルアクセスできるようになります。このポリシーには、Amazon Kinesis Data Streams へのアクセスを許可するステートメントも含まれています。データソースとして Kinesis Data Streams を使用しない場合は、そのステートメントを削除できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "es:DescribeDomain", "es:DescribeDomains", "es:DescribeDomainConfig", "es:ESHttpPost", "es:ESHttpPut" ], "Resource": [ "arn:aws:es:region:account-id:domain/domain-name", "arn:aws:es:region:account-id:domain/domain-name/*" ] }, { "Effect": "Allow", "Action": [ "es:ESHttpGet" ], "Resource": [ "arn:aws:es:region:account-id:domain/domain-name/_all/_settings", "arn:aws:es:region:account-id:domain/domain-name/_cluster/stats", "arn:aws:es:region:account-id:domain/domain-name/index-name*/_mapping/type-name", "arn:aws:es:region:account-id:domain/domain-name/_nodes", "arn:aws:es:region:account-id:domain/domain-name/_nodes/stats", "arn:aws:es:region:account-id:domain/domain-name/_nodes/*/stats", "arn:aws:es:region:account-id:domain/domain-name/_stats", "arn:aws:es:region:account-id:domain/domain-name/index-name*/_stats", "arn:aws:es:region:account-id:domain/domain-name/" ] }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] } ] }

他の AWS のサービスがリソース AWS にアクセスできるようにする方法の詳細については、IAM ユーザーガイドの「 AWS のサービスにアクセス許可を委任するロールの作成」を参照してください。

Amazon Data Firehose に別のアカウントの OpenSearch サービスクラスターへのアクセスを許可する方法については、「」を参照してくださいサービス宛先への OpenSearchクロスアカウント配信

Amazon Data Firehose に VPC のサービス OpenSearch 送信先へのアクセスを許可する

OpenSearch サービスドメインが VPC 内にある場合は、前のセクションで説明したアクセス許可を Amazon Data Firehose に付与してください。さらに、 OpenSearch サービスドメインの VPC にアクセスできるようにするには、Amazon Data Firehose に次のアクセス許可を付与する必要があります。

  • ec2:DescribeVpcs

  • ec2:DescribeVpcAttribute

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

  • ec2:DeleteNetworkInterface

重要

Firehose ストリームを作成した後は、これらのアクセス許可を取り消しないでください。これらのアクセス許可を取り消すと、 OpenSearch サービスが ENIsストリームのパフォーマンスが低下したり、サービスドメインへのデータの配信が停止します。

重要

プライベート VPC の送信先にデータを配信するためのサブネットを指定する場合は、選択したサブネットに十分な数の空き IP アドレスがあることを確認してください。指定されたサブネットに使用可能な空き IP アドレスがない場合、Firehose はプライベート VPC 内のデータ配信用の ENIs を作成または追加できず、配信は低下または失敗します。

Firehose ストリームを作成または更新するときは、Firehose が OpenSearch サービスドメインにデータを送信するときに使用するセキュリティグループを指定します。 OpenSearch サービスドメインが使用するのと同じセキュリティグループを使用することも、別のセキュリティグループを使用することもできます。別のセキュリティグループを指定する場合は、サービスドメインのセキュリティグループへの OpenSearchアウトバウンド HTTPS トラフィックが許可されていることを確認します。また、Firehose ストリームの設定時に指定したセキュリティグループからの HTTPS トラフィックが OpenSearch サービスドメインのセキュリティグループで許可されていることを確認してください。Firehose ストリームと OpenSearch サービスドメインの両方に同じセキュリティグループを使用する場合は、セキュリティグループのインバウンドルールで HTTPS トラフィックが許可されていることを確認してください。セキュリティグループのルールの詳細については、Amazon VPCドキュメントの「セキュリティグループのルール」を参照してください。

Amazon Data Firehose にパブリック OpenSearchサーバーレス送信先へのアクセスを許可する

OpenSearch Serverless 送信先を使用している場合、Amazon Data Firehose はデータを OpenSearch Serverless コレクションに配信し、失敗したドキュメントまたはすべてのドキュメントを同時に S3 バケットにバックアップします。エラーログ記録が有効になっている場合、Amazon Data Firehose は CloudWatch ロググループとストリームにもデータ配信エラーを送信します。Amazon Data Firehose は IAM ロールを使用して、指定された OpenSearch Serverless コレクション、S3 バケット、 AWS KMS キー、 CloudWatch ロググループ、ストリームにアクセスします。Firehose ストリームを作成するときは、IAM ロールが必要です。

次のアクセスポリシーを使用して、Amazon Data Firehose が S3 バケット、 OpenSearchサーバーレスドメイン、および AWS KMS キーにアクセスできるようにします。S3 バケットを所有していない場合は、Amazon S3 アクションのリストs3:PutObjectAclに を追加します。これにより、バケット所有者は Amazon Data Firehose によって配信されるオブジェクトにフルアクセスできるようになります。このポリシーには、Amazon Kinesis Data Streams へのアクセスを許可するステートメントも含まれています。データソースとして Kinesis Data Streams を使用しない場合は、そのステートメントを削除できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] }, { "Effect": "Allow", "Action": "aoss:APIAccessAll", "Resource": "arn:aws:aoss:region:account-id:collection/collection-id" } ] }

上記のポリシーに加えて、Amazon Data Firehose を設定して、データアクセスポリシーに次の最小限のアクセス許可を割り当てる必要があります。

[ { "Rules":[ { "ResourceType":"index", "Resource":[ "index/target-collection/target-index" ], "Permission":[ "aoss:WriteDocument", "aoss:UpdateIndex", "aoss:CreateIndex" ] } ], "Principal":[ "arn:aws:sts::account-id:assumed-role/firehose-delivery-role-name/*" ] } ]

他の AWS のサービスがリソース AWS にアクセスできるようにする方法の詳細については、IAM ユーザーガイドの「 AWS のサービスにアクセス許可を委任するロールの作成」を参照してください。

Amazon Data Firehose に VPC OpenSearch内のサーバーレス送信先へのアクセスを許可する

OpenSearch Serverless コレクションが VPC にある場合は、前のセクションで説明したアクセス許可を Amazon Data Firehose に付与してください。さらに、 OpenSearch Serverless コレクションの VPC にアクセスできるようにするには、Amazon Data Firehose に次のアクセス許可を付与する必要があります。

  • ec2:DescribeVpcs

  • ec2:DescribeVpcAttribute

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

  • ec2:DeleteNetworkInterface

重要

Firehose ストリームを作成した後は、これらのアクセス許可を取り消しないでください。これらのアクセス許可を取り消すと、 OpenSearch サービスが ENIsストリームのパフォーマンスが低下したり、サービスドメインへのデータの配信が停止します。

重要

プライベート VPC の送信先にデータを配信するためのサブネットを指定する場合は、選択したサブネットに十分な数の空き IP アドレスがあることを確認してください。指定されたサブネットに使用可能な空き IP アドレスがない場合、Firehose はプライベート VPC 内のデータ配信用の ENIs を作成または追加できず、配信は低下または失敗します。

Firehose ストリームを作成または更新するときは、Firehose が OpenSearch Serverless コレクションにデータを送信するときに使用するセキュリティグループを指定します。 OpenSearch Serverless コレクションが使用するのと同じセキュリティグループを使用するか、別のセキュリティグループを使用できます。別のセキュリティグループを指定する場合は、 OpenSearch サーバーレスコレクションのセキュリティグループへのアウトバウンド HTTPS トラフィックが許可されていることを確認してください。また、 OpenSearchServerless コレクションのセキュリティグループが、Firehose ストリームの設定時に指定したセキュリティグループからの HTTPS トラフィックを許可していることを確認します。Firehose ストリームと OpenSearch Serverless コレクションの両方に同じセキュリティグループを使用する場合は、セキュリティグループのインバウンドルールで HTTPS トラフィックが許可されていることを確認してください。セキュリティグループのルールの詳細については、Amazon VPCドキュメントの「セキュリティグループのルール」を参照してください。

Amazon Data Firehose に Splunk 送信先へのアクセス権を付与する

Splunk 送信先を使用している場合、Amazon Data Firehose は Splunk HTTP Event Collector (HEC) エンドポイントにデータを配信します。また、そのデータを指定した Amazon S3 バケットにバックアップし、オプションで Amazon S3 サーバー側の暗号化に所有している AWS KMS キーを使用することもできます。エラーログ記録が有効になっている場合、Firehose はログストリームに CloudWatchデータ配信エラーを送信します。データ変換 AWS Lambda に を使用することもできます。

AWS ロードバランサーを使用する場合は、それが Classic Load Balancer または Application Load Balancer であることを確認します。また、Classic Load Balancer で Cookie の有効期限が無効になっている期間ベースのスティッキーセッションを有効にし、有効期限は Application Load Balancer の最大 (7 日間) に設定されます。これを行う方法については、「Classic Load Balancer または Application Load Balancer の所要時間ベースのセッション維持」を参照してください。

Firehose ストリームを作成するときは、IAM ロールが必要です。Firehose は IAM ロールを引き受け、指定されたバケット、キー、 CloudWatch ロググループ、ストリームへのアクセスを取得します。

次のアクセスポリシーを使用して、Amazon Data Firehose が S3 バケットにアクセスできるようにします。S3 バケットを所有していない場合は、Amazon S3 アクションのリストs3:PutObjectAclに を追加します。これにより、Amazon Data Firehose によって配信されるオブジェクトへのフルアクセスがバケット所有者に付与されます。このポリシーは、エラーログ CloudWatch 記録用の およびデータ変換 AWS Lambda 用の へのアクセス権を Amazon Data Firehose に付与します。このポリシーには、Amazon Kinesis Data Streams へのアクセスを許可するステートメントも含まれています。データソースとして Kinesis Data Streams を使用しない場合は、そのステートメントを削除できます。Amazon Data Firehose は IAM を使用して Splunk にアクセスしません。Splunk へのアクセスには、HEC トークンが使用されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:*" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] } ] }

他の AWS のサービスがリソース AWS にアクセスできるようにする方法の詳細については、IAM ユーザーガイドの「 AWS のサービスにアクセス許可を委任するロールの作成」を参照してください。

VPC の Splunk へのアクセス

Splunk プラットフォームが VPC にある場合、パブリック IP アドレスでパブリックにアクセス可能である必要があります。また、Amazon Data Firehose IP アドレスのブロックを解除して、Splunk プラットフォームへのアクセスを Amazon Data Firehose に許可します。Amazon Data Firehose は現在、次の CIDR ブロックを使用しています。

  • 米国東部 (オハイオ) 用の 18.216.68.160/27, 18.216.170.64/27, 18.216.170.96/27

  • 米国東部 (バージニア北部) 用の 34.238.188.128/26, 34.238.188.192/26, 34.238.195.0/26

  • 米国西部 (北カリフォルニア) 用の 13.57.180.0/26

  • 米国西部 (オレゴン) 用の 34.216.24.32/27, 34.216.24.192/27, 34.216.24.224/27

  • 18.253.138.192/26 AWS GovCloud (米国東部) 用の

  • 52.61.204.192/26 AWS GovCloud (米国西部) 用の

  • アジアパシフィック (香港) 用の 18.162.221.64/26

  • アジアパシフィック (ムンバイ) 用の 13.232.67.64/26

  • アジアパシフィック (ソウル) 用の 13.209.71.0/26

  • アジアパシフィック (シンガポール) 用の 13.229.187.128/26

  • アジアパシフィック (シドニー) 用の 13.211.12.0/26

  • アジアパシフィック (東京) 用の 13.230.21.0/27, 13.230.21.32/27

  • イスラエル (テルアビブ) 用の 51.16.102.64/26

  • カナダ (中部) 用の 35.183.92.64/26

  • 40.176.98.128/26 カナダ西部 (カルガリー) 用の

  • 欧州 (フランクフルト) 用の 18.194.95.192/27, 18.194.95.224/27, 18.195.48.0/27

  • 欧州 (アイルランド) 用の 34.241.197.32/27, 34.241.197.64/27, 34.241.197.96/27

  • 欧州 (ロンドン) 用の 18.130.91.0/26

  • 欧州 (パリ) 用の 35.180.112.0/26

  • 欧州 (ストックホルム) 用の 13.53.191.0/26

  • 中東 (バーレーン) 用の 15.185.91.64/26

  • 南米 (サンパウロ) 用の 18.228.1.192/26

  • 欧州 (ミラノ) 用の 15.161.135.192/26

  • アフリカ (ケープタウン) 用の 13.244.165.128/26

  • アジアパシフィック (大阪) 用の 13.208.217.0/26

  • 中国 (北京) 用の 52.81.151.64/26

  • 中国 (寧夏) 用の 161.189.23.128/26

  • アジアパシフィック (ジャカルタ) 用の 108.136.221.128/26

  • 中東 (UAE) 用の 3.28.159.64/26

  • イスラエル (テルアビブ) 用の 51.16.102.64/26

  • 欧州 (チューリッヒ) 用の 16.62.183.64/26

  • アジアパシフィック (ハイデラバード) 用の 18.60.192.192/26

  • アジアパシフィック (メルボルン) 用の 16.50.161.192/26

Snowflake または HTTP エンドポイントへのアクセス

送信先が HTTP エンドポイントまたは Snowflake パブリッククラスターの場合、Amazon Data Firehose に固有の AWS IP アドレス範囲のサブセットはありません。

Firehose をパブリック Snowflake クラスターの許可リストまたはパブリック HTTP または HTTPS エンドポイントに追加するには、現在の AWS IP アドレス範囲をすべて進入ルールに追加します。

注記

通知は、関連するトピックと同じ AWS リージョンの IP アドレスから常に送信されるわけではありません。すべてのリージョンの AWS IP アドレス範囲を含める必要があります。

Amazon Data Firehose に Snowflake の送信先へのアクセス権を付与する

Snowflake を送信先として使用すると、Firehose は Snowflake アカウント URL を使用して Snowflake アカウントにデータを配信します。また、指定した Amazon Simple Storage Service バケットにエラーデータをバックアップします。オプションで、Amazon S3 サーバー側の暗号化用に所有している AWS Key Management Service キーを使用することもできます。エラーログ記録が有効になっている場合、Firehose はデータ配信エラーを CloudWatch Logs ストリームに送信します。

Firehose ストリームを作成する前に、IAM ロールが必要です。Firehose は、IAM ロールを引き受け、指定されたバケット、キー、および CloudWatch ロググループとストリームへのアクセスを取得します。次のアクセスポリシーを使用して、Firehose が S3 バケットにアクセスできるようにします。S3 バケットを所有していない場合は、Amazon Simple Storage Service アクションのリストs3:PutObjectAclに を追加します。これにより、バケット所有者に Firehose によって配信されるオブジェクトへのフルアクセスが付与されます。このポリシーは、エラーログ CloudWatch 記録のための へのアクセスを Firehose に付与します。このポリシーには、Amazon Kinesis Data Streams へのアクセスを許可するステートメントも含まれています。データソースとして Kinesis Data Streams を使用しない場合は、そのステートメントを削除できます。Firehose は IAM を使用して Snowflake にアクセスしません。Snowflake へのアクセスには、プライベートクラスターの場合は Snowflake アカウントの URL と PrivateLink Vpce ID を使用します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:*" ] } ] }

他の AWS のサービスが AWS リソースにアクセスできるようにする方法の詳細については、IAM ユーザーガイドの「 AWS のサービスにアクセス許可を委任するロールの作成」を参照してください。

VPC の Snowflake へのアクセス

Snowflake クラスターでプライベートリンクが有効になっている場合、Firehose は VPC エンドポイントを使用して、パブリックインターネットを経由せずにプライベートクラスターにデータを配信します。そのためには、Snowflake ネットワークルールを作成して、クラスターが属AwsVpceIds AWS リージョン する次の からの進入を許可します。詳細については、「Snowflake ユーザーガイド」の「ネットワークルールの作成」を参照してください。

クラスターがあるリージョンに基づいて使用する VPC エンドポイント ID
AWS リージョン VPCE IDs
米国東部(オハイオ)

vpce-0d96cafcd96a50aeb

vpce-0cec34343d48f537b

米国東部 (バージニア北部)

vpce-0b4d7e8478e141ba8

vpce-0b75cd681fb507352

vpce-01c03e63820ec00d8

vpce-0c2cfc51dc2882422

vpce-06ca862f019e4e056

vpce-020cda0cfa63f8d1c

vpce-0b80504a1a783cd70

vpce-0289b9ff0b5259a96

vpce-0d7add8628bd69a12

vpce-02bfb5966cc59b2af

vpce-09e707674af878bf2

vpce-049b52e96cc1a2165

vpce-0bb6c7b7a8a86cdbb

vpce-03b22d599f51e80f3

vpce-01d60dc60fc106fe1

vpce-0186d20a4b24ecbef

vpce-0533906401a36e416

vpce-05111fb13d396710e

vpce-0694613f4fbd6f514

vpce-09b21cb25fe4cc4f4

vpce-06029c3550e4d2399

vpce-00961862a21b033da

vpce-01620b9ae33273587

vpce-078cf4ec226880ac9

vpce-0d711bf076ce56381

vpce-066b7e13cbfca6f6e

vpce-0674541252d9ccc26

vpce-03540b88dedb4b000

vpce-0b1828e79ad394b95

vpce-0dc0e6f001fb1a60d

vpce-0d8f82e71a244098a

vpce-00e374d9e3f1af5ce

vpce-0c1e3d6631ddb442f

米国西部(オレゴン)

vpce-0f60f72da4cd1e4e7

vpce-0c60d21eb8b1669fd

vpce-01c4e3e29afdafbef

vpce-0cc6bf2a88da139de

vpce-0797e08e169e50662

vpce-033cbe480381b5c0e

vpce-00debbdd8f9eb10a5

vpce-08ec2f386c809e889

vpce-0856d14310857b545

欧州 (フランクフルト)

vpce-068dbb7d71c9460fb

vpce-0a7a7f095942d4ec9

欧州 (アイルランド)

vpce-06857e59c005a6276

vpce-04390f4f8778b75f2

vpce-011fd2b1f0aa172fd

アジアパシフィック (東京)

vpce-06369e5258144e68a

vpce-0f2363cdb8926fbe8

アジアパシフィック (シンガポール)

vpce-049cd46cce7a12d52

vpce-0e8965a1a4bdb8941

アジアパシフィック (ソウル)

vpce-0aaa444d9001e1faa1

vpce-04a49d4dcfd02b884

アジアパシフィック (シドニー)

vpce-048a60a182c52be63

vpce-03c19949787fd1859

Amazon Data Firehose に HTTP エンドポイントの送信先へのアクセス権を付与する

Amazon Data Firehose を使用して、任意の HTTP エンドポイントの送信先にデータを配信できます。Amazon Data Firehose は、指定した Amazon S3 バケットにもそのデータをバックアップします。オプションで AWS KMS 、Amazon S3 サーバー側の暗号化用に所有している キーを使用できます。エラーログ記録が有効になっている場合、Amazon Data Firehose は CloudWatch ログストリームにデータ配信エラーを送信します。データ変換 AWS Lambda に を使用することもできます。

Firehose ストリームを作成するときは、IAM ロールが必要です。Amazon Data Firehose は IAM ロールを引き受け、指定されたバケット、キー、 CloudWatch ロググループ、ストリームへのアクセスを取得します。

次のアクセスポリシーを使用して、Amazon Data Firehose がデータバックアップ用に指定した S3 バケットにアクセスできるようにします。S3 バケットを所有していない場合は、Amazon S3 アクションのリストs3:PutObjectAclに を追加します。これにより、バケット所有者は Amazon Data Firehose によって配信されるオブジェクトにフルアクセスできるようになります。このポリシーは、エラーログ CloudWatch 記録用の およびデータ変換 AWS Lambda 用の へのアクセス権を Amazon Data Firehose に付与します。このポリシーには、Amazon Kinesis Data Streams へのアクセスを許可するステートメントも含まれています。データソースとして Kinesis Data Streams を使用しない場合は、そのステートメントを削除できます。

重要

Amazon Data Firehose は、Datadog、Dynatrace、MongoDB、New Relic、Splunk、Sumo Logic など LogicMonitor、サポートされているサードパーティーサービスプロバイダーが所有する HTTP エンドポイントの送信先にアクセスするために IAM を使用しません。サポートされているサードパーティーサービスプロバイダーが所有する指定された HTTP エンドポイントの送信先にアクセスするには、そのサービスプロバイダーに連絡して、Amazon Data Firehose からそのサービスへのデータ配信を有効にするために必要な API キーまたはアクセスキーを取得します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:*" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] } ] }

他の AWS のサービスがリソース AWS にアクセスできるようにする方法の詳細については、IAM ユーザーガイドの「 AWS のサービスにアクセス許可を委任するロールの作成」を参照してください。

重要

現在、Amazon Data Firehose は VPC 内の HTTP エンドポイントへのデータ配信をサポートしていません。

Amazon MSK からのクロスアカウント配信

Firehose アカウント (アカウント B など) から Firehose ストリームを作成し、ソースが別のアカウント ( AWS アカウント A) の MSK クラスターである場合は、次の設定が必要です。

アカウント A:

  1. Amazon MSK コンソールで、プロビジョンドクラスターを選択し、[プロパティ] を選択します。

  2. [ネットワーク設定][編集] を選択し、[マルチ VPC 接続] をオンにします。

  3. [セキュリティ設定][クラスターポリシーの編集] を選択します。

    1. クラスターにまだポリシーが設定されていない場合は、[Firehose サービスプリンシパルを含める][Firehose のクロスアカウント S3 配信を有効にする] にチェックを入れます。 AWS Management Console は、適切なアクセス許可を持つポリシーを自動的に生成します。

    2. クラスターに既にポリシーが設定されている場合は、既存のポリシーに次のアクセス許可を追加します。

      { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::arn:role/mskaasTestDeliveryRole" }, "Action": [ "kafka:GetBootstrapBrokers", "kafka:DescribeCluster", "kafka:DescribeClusterV2", "kafka-cluster:Connect" ], "Resource": "arn:aws:kafka:us-east-1:arn:cluster/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20" // ARN of the cluster }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::arn:role/mskaasTestDeliveryRole" }, "Action": [ "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration", "kafka-cluster:ReadData" ], "Resource": "arn:aws:kafka:us-east-1:arn:topic/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/*"//topic of the cluster }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::233450236687:role/mskaasTestDeliveryRole" }, "Action": "kafka-cluster:DescribeGroup", "Resource": "arn:aws:kafka:us-east-1:arn:group/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/*" //topic of the cluster }, }
  4. [AWS プリンシパル] にアカウント B のプリンシパル ID を入力します。

  5. トピック で、Firehose ストリームがデータを取り込む Apache Kafka トピックを指定します。Firehose ストリームが作成されると、このトピックを更新することはできません。

  6. [Save changes] (変更の保存) を選択します。

アカウント B:

  1. Firehose コンソールで、アカウント B を使用して Firehose ストリームを作成するを選択します。

  2. [ソース] で、[Amazon Managed Streaming for Apache Kafka] を選択します。

  3. [ソース設定][Apache Kafka クラスター用 Amazon Managed Streaming] で、アカウント A の Amazon MSK クラスターの ARN を入力します。

  4. トピック で、Firehose ストリームがデータを取り込む Apache Kafka トピックを指定します。Firehose ストリームが作成されると、このトピックを更新することはできません。

  5. 配信ストリーム名で、Firehose ストリームの名前を指定します。

Firehose ストリームを作成するときのアカウント B には、設定されたトピックのクロスアカウント Amazon MSK クラスターへの「読み取り」アクセスを Firehose ストリームに付与する IAM ロール ( の使用時にデフォルトで作成 AWS Management Console) が必要です。

AWS Management Consoleでの設定内容は以下のとおりです。

{ "Sid": "", "Effect": "Allow", "Action": [ "kafka:GetBootstrapBrokers", "kafka:DescribeCluster", "kafka:DescribeClusterV2", "kafka-cluster:Connect" ], "Resource": "arn:aws:kafka:us-east-1:arn:cluster/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/*" //topic of the cluster }, { "Sid": "", "Effect": "Allow", "Action": [ "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration", "kafka-cluster:ReadData" ], "Resource": "arn:aws:kafka:us-east-1:arn:topic/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/mskaas_test_topic" //topic of the cluster }, { "Sid": "", "Effect": "Allow", "Action": [ "kafka-cluster:DescribeGroup" ], "Resource": "arn:aws:kafka:us-east-1:arn:group/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/*" //topic of the cluster }, }

次に、レコード変換とレコード形式の変換を設定するオプションのステップを実行できます。詳細については、「レコード変換と形式変換を設定する」を参照してください。

Amazon S3 の送信先へのクロスアカウント間の配信

AWS CLI または Amazon Data Firehose APIs を使用して、1 つの AWS アカウントに Firehose ストリームを作成し、別のアカウントに Amazon S3 の送信先を設定できます。次の手順は、アカウント A が所有する Firehose ストリームを設定して、アカウント B が所有する Amazon S3 バケットにデータを配信する例を示しています。

  1. Amazon S3ロールを作成します。

    注記

    この場合、アクセスポリシーで指定した Amazon S3 バケットはアカウント B が所有しています。アクセスポリシーの Amazon S3 アクションのリストs3:PutObjectAclに を追加し、Amazon Data Firehose によって配信されるオブジェクトへのフルアクセスをアカウント B に付与します。このアクセス許可は、クロスアカウント配信に必要です。Amazon Data Firehose は、リクエストのx-amz-acl「」ヘッダーをbucket-owner-full-control「」に設定します。

  2. 以前に作成した IAM ロールからのアクセスを許可するには、アカウント B で S3 バケットポリシーを作成します。次のコードは、バケットポリシーの例です。詳細については、「バケットポリシーとユーザーポリシーの使用」を参照してください。

    { "Version": "2012-10-17", "Id": "PolicyID", "Statement": [ { "Sid": "StmtID", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::accountA-id:role/iam-role-name" }, "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] } ] }
  3. ステップ 1 で作成した IAM ロールを使用して、アカウント A の下に Firehose ストリームを作成します。

サービス宛先への OpenSearchクロスアカウント配信

AWS CLI または Amazon Data Firehose APIs を使用して、1 つの AWS アカウントに Firehose ストリームを作成し、別のアカウントに OpenSearch サービスを送信先として指定できます。次の手順は、アカウント A で Firehose ストリームを作成し、アカウント B が所有する OpenSearch サービス宛先にデータを配信するように設定する方法の例を示しています。

  1. Amazon Data Firehose にパブリック OpenSearch サービスの送信先へのアクセス権を付与する で示されているステップを使用して、アカウント A に IAM ロールを作成します。

  2. 前のステップで作成した IAM ロールからのアクセスを許可するには、アカウント B に OpenSearch サービスポリシーを作成します。次の JSON は例です。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account-A-ID:role/firehose_delivery_role " }, "Action": "es:ESHttpGet", "Resource": [ "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_all/_settings", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_cluster/stats", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/roletest*/_mapping/roletest", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_nodes", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_nodes/stats", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_nodes/*/stats", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_stats", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/roletest*/_stats", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/" ] } ] }
  3. ステップ 1 で作成した IAM ロールを使用して、アカウント A の下に Firehose ストリームを作成します。Firehose ストリームを作成するときは、 AWS CLI または Amazon Data Firehose APIs を使用して、 for DomainARN OpenSearch Service ではなく ClusterEndpointフィールドを指定します。

注記

ある AWS アカウントに Firehose ストリームを作成し、別のアカウントに OpenSearch サービス送信先を作成するには、 AWS CLI または Amazon Data Firehose APIsを使用する必要があります。 AWS Management Console を使用して、この種のクロスアカウント設定を作成することはできません。

タグを使用したアクセスの制御

IAM ポリシーでオプションの Condition要素 (またはConditionブロック ) を使用して、タグのキーと値に基づいて Amazon Data Firehose オペレーションへのアクセスを微調整できます。以下のサブセクションでは、さまざまな Amazon Data Firehose オペレーションに対してこれを行う方法について説明します。Condition 要素とその中で使用できる演算子の使用の詳細については、「IAM JSON ポリシー要素: Condition」を参照してください。

CreateDeliveryStream

CreateDeliveryStream オペレーションでは、aws:RequestTag 条件キーを使用します。次の例では、MyKeyMyValue はキー、およびタグの対応する値を表しています。詳細については、「タグの基本」を参照してください。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "firehose:CreateDeliveryStream", "firehose:TagDeliveryStream" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/MyKey": "MyValue" } } }] }

TagDeliveryStream

TagDeliveryStream オペレーションでは、aws:TagKeys 条件キーを使用します。次の例では、MyKey はサンプルタグキーです。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "firehose:TagDeliveryStream", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": "MyKey" } } } ] }

UntagDeliveryStream

UntagDeliveryStream オペレーションでは、aws:TagKeys 条件キーを使用します。次の例では、MyKey はサンプルタグキーです。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "firehose:UntagDeliveryStream", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": "MyKey" } } } ] }

ListDeliveryStreams

ListDeliveryStreams でタグベースのアクセスコントロールを使用することはできません。

その他の Amazon Data Firehose オペレーション

CreateDeliveryStream、、、UntagDeliveryStreamおよび 以外のすべての Amazon Data Firehose TagDeliveryStreamオペレーションにはListDeliveryStreamsaws:RequestTag条件キーを使用します。次の例では、MyKeyMyValue はキー、およびタグの対応する値を表しています。

ListDeliveryStreamsfirehose:ResourceTag条件キーを使用して、その Firehose ストリームのタグに基づいてアクセスを制御します。

次の例では、MyKeyMyValue はキー、およびタグの対応する値を表しています。このポリシーは、値が の という名前のタグを持つ Data Firehose MyKey ストリームにのみ適用されますMyValue。リソースタグに基づくアクセスの制御の詳細については、IAM ユーザーガイドの「タグを使用した AWS リソースへのアクセスの制御」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "firehose:DescribeDeliveryStream", "Resource": "*", "Condition": { "StringEquals": { "firehose:ResourceTag/MyKey": "MyValue" } } } ] }