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

Amazon Data Firehose は、以前は Amazon Kinesis Data Firehose として知られていました

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

Amazon データFirehose によるアクセス制御

以下のセクションでは、Amazon Data Firehose リソースとの間のアクセスを制御する方法について説明します。対象となる情報には、Firehose ストリームにデータを送信できるようにアプリケーションにアクセス権を付与する方法が含まれます。また、Amazon Data Firehose に Amazon Simple Storage Service (Amazon S3) バケット、Amazon Redshift クラスター、または Amazon OpenSearch Service クラスターへのアクセスを許可する方法や、Datadog、Dynatrace、MongoDB、New Relic、Splunk、または Sumo Logic を宛先として使用する場合に必要なアクセス権限についても説明しています。 LogicMonitor最後に、このトピックのガイダンスでは、 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 データ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 データFirehose が IAM ロールを引き受けることを許可する

このセクションでは、Amazon Data Firehose にソースからターゲットにデータを取り込み、処理、配信するためのアクセス権限とポリシーについて説明します。

注記

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

Amazon Data 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 リソース ARN の指定」を参照してください。

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

スキーマレジストリからスキーマを取得するための推奨ポリシーには、リソースの制限はありません。詳細については、『開発者ガイド』の「デシリアライザー用の IAM サンプル」を参照してください。 AWS Glue

注記

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

Amazon データ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 Data Firehose に別のアカウントの Amazon S3 デスティネーションへのアクセスを許可する方法については、を参照してくださいAmazon S3 の送信先へのクロスアカウント間の配信

Amazon データFirehose に Amazon Redshift デスティネーションへのアクセスを許可する

Amazon Amazon Redshift デスティネーションを使用しているときに Amazon Data Firehose へのアクセスを許可する場合は、以下を参照してください。

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

Amazon Redshift デスティネーションを使用している場合、Amazon Data Firehose は中間ロケーションとして S3 バケットにデータを配信します。オプションで、 AWS KMS お客様が所有するキーをデータ暗号化に使用することもできます。次に、Amazon Data Firehose は S3 バケットから Amazon Redshift でプロビジョニングされたクラスターまたは Amazon Redshift サーバーレスワークグループにデータをロードします。エラーロギングが有効になっている場合、Amazon Data Firehose CloudWatch はデータ配信エラーをロググループとストリームにも送信します。Amazon Data Firehose は、指定された Amazon Redshift ユーザー名とパスワードを使用してプロビジョニングされたクラスターまたは Amazon Redshift サーバーレスワークグループにアクセスし、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 サーバーレスワークグループへの 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 に前のセクションで説明した権限を付与してください。さらに、Amazon Data Firehose OpenSearch がサービスドメインの VPC にアクセスできるようにするには、以下のアクセス権限を付与する必要があります。

  • ec2:DescribeVpcs

  • ec2:DescribeVpcAttribute

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

  • ec2:DeleteNetworkInterface

重要

デリバリーストリームを作成した後は、これらの権限を取り消さないでください。これらの権限を取り消すと、サービスが ENI をクエリまたは更新しようとするたびに、Firehose ストリームのパフォーマンスが低下するか、 OpenSearch サービスドメインへのデータ配信が停止します。

重要

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

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

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": [ "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 サーバーレスコレクションが VPC 内にある場合は、必ず Amazon Data Firehose に前のセクションで説明した権限を付与してください。さらに、Amazon Data Firehose OpenSearch がサーバーレスコレクションの VPC にアクセスできるようにするには、以下のアクセス権限を付与する必要があります。

  • ec2:DescribeVpcs

  • ec2:DescribeVpcAttribute

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

  • ec2:DeleteNetworkInterface

重要

デリバリーストリームを作成した後は、これらの権限を取り消さないでください。これらの権限を取り消すと、サービスが ENI をクエリまたは更新しようとするたびに、Firehose ストリームのパフォーマンスが低下するか、 OpenSearch サービスドメインへのデータ配信が停止します。

重要

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

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

Amazon データFirehose に Splunk デスティネーションへのアクセスを許可する

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

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

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

以下のアクセスポリシーを使用して、Amazon Data Firehose が S3 バケットにアクセスできるようにします。S3 バケットを所有していない場合は、Amazon S3 s3:PutObjectAcl アクションのリストに追加してください。これにより、Amazon Data Firehose によって配信されるオブジェクトへのフルアクセスがバケット所有者に付与されます。このポリシーでは、Amazon Data Firehose CloudWatch にエラーログ記録用およびデータ変換用のへのアクセス権も付与されます。 AWS Lambda このポリシーには、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 アドレスのブロックを解除して、Amazon Data Firehose に Splunk プラットフォームへのアクセスを許可してください。Amazon データ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

スノーフレークまたは HTTP エンドポイントへのアクセス

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

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

注記

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

Firehose にスノーフレークの目的地へのアクセスを許可する

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

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

Amazon データFirehose に HTTP エンドポイントの送信先へのアクセスを許可する

Amazon Data Firehose を使用して、任意の HTTP エンドポイント宛先にデータを配信できます。Amazon Data Firehose は、そのデータを指定した Amazon S3 バケットにもバックアップします。オプションで、Amazon S3 AWS KMS のサーバー側の暗号化用に所有しているキーを使用できます。エラーロギングが有効になっている場合、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 によって配信されるオブジェクトへのフルアクセスがバケット所有者に付与されます。このポリシーでは、Amazon Data Firehose CloudWatch にエラーログ記録用およびデータ変換用のへのアクセス権も付与されます。 AWS Lambda このポリシーには、Amazon Kinesis Data Streams へのアクセスを許可するステートメントも含まれています。データソースとして Kinesis Data Streams を使用しない場合は、そのステートメントを削除できます。

重要

Amazon Data Firehose は、Datadog、Dynatrace、MongoDB、New Relic、Splunk、Sumo Logic など、サポートされているサードパーティのサービスプロバイダーが所有する HTTP エンドポイントの宛先へのアクセスに IAM を使用しません。 LogicMonitorサポートされているサードパーティのサービスプロバイダーが所有する指定の 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 など) から配信ストリームを作成していて、 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. [トピック] で、配信ストリームでデータを取り込む Apache Kafka トピックを指定します。配信ストリームを作成した後は、このトピックを更新することはできません。

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

アカウント B:

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

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

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

  4. [トピック] で、配信ストリームでデータを取り込む Apache Kafka トピックを指定します。配信ストリームを作成した後は、このトピックを更新することはできません。

  5. [配信ストリーム名] に配信ストリームの名前を入力します。

アカウント B でデリバリーストリームを作成する場合、設定したトピックのクロスアカウント Amazon MSK クラスターへの読み取りアクセス権をデリバリーストリームに付与する 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 API を使用して、 AWS あるアカウントで Firehose ストリームを作成し、別のアカウントに Amazon S3 デスティネーションを作成できます。以下の手順は、アカウント A が所有する Firehose ストリームを、アカウント B が所有する Amazon S3 バケットにデータを配信するように設定する例を示しています。

  1. Amazon S3 デスティネーションへの Firehose アクセス権限の付与」で説明されている手順を使用して、アカウント A に IAM ロールを作成します。

    注記

    この場合、アクセスポリシーで指定した 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 API を使用して、 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 API ClusterEndpoint を使用してフィールドを指定します。DomainARN OpenSearch

注記

AWS あるアカウントで Firehose ストリームを作成し、 OpenSearch 別のアカウントのサービス宛先を作成するには、 AWS CLI または Amazon Data Firehose API を使用する必要があります。 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", "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 データFirehose その他のオペレーション

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

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

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

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