Amazon Data Firehose によるアクセスの制御 - Amazon Data Firehose
Firehose のリソースへのアクセスを付与するFirehose にプライベートの Amazon MSK Cluster クラスターへのアクセスを付与するFirehose が IAM ロールを引き受けることを許可するデータ形式変換のために Firehose に AWS Glue へのアクセスを付与するFirehose に Amazon S3 宛先へのアクセスを付与するApache Iceberg テーブルの宛先へのアクセスを Firehose に付与するAmazon Redshift の宛先へのアクセスを Firehose に付与する Firehose に公開 OpenSearch Service の宛先へのアクセスを付与するVPC 内の OpenSearch Service の宛先へのアクセスを Firehose に付与するFirehose に公開 OpenSearch Serverless の宛先へのアクセスを付与するVPC 内の OpenSearch Serverless の宛先へのアクセスを Firehose に付与するSplunk の宛先へのアクセスを Firehose に付与するVPC の Splunk へのアクセスチュートリアル: Amazon Data Firehose を使用して VPC フローログを Splunk に取り込むSnowflake または HTTP エンドポイントへのアクセスSnowflake の宛先へのアクセスを Firehose に付与するVPC での Snowflake へのアクセスHTTP エンドポイントの宛先へのアクセスを Firehose に付与するAmazon MSK からのクロスアカウント配信Amazon S3 の宛先へのクロスアカウント間の配信OpenSearch Service の宛先へのクロスアカウント間の配信タグを使用したアクセスへのコントロール

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

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

内容

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" ] } ] }

Firehose にプライベートの Amazon MSK Cluster クラスターへのアクセスを付与する

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

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

Amazon MSK CreateVpcConnection API オペレーションを呼び出すための許可を Firehose サービスプリンシパルに付与するには、このようなポリシーをクラスターのリソースベースのポリシーに追加する必要があります。

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 ユーザーガイド」の「混乱する代理問題」を参照してください。

Amazon MSK を Firehose ストリームのソースに選ぶ場合は、指定した 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" }] }

データ形式変換のために Firehose に AWS Glue へのアクセスを付与する

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

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

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

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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "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:::amzn-s3-demo-bucket/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 の宛先へのクロスアカウント間の配信」を参照してください。

Apache Iceberg テーブルの宛先へのアクセスを Firehose に付与する

AWS Glue を使用して Firehose ストリームと Apache Iceberg テーブルを作成する前に、IAM ロールが必要です。ポリシーと IAM ロールを作成するには、次のステップを実行します。Firehose はこの IAM ロールを引き受け、必要なアクションを実行します。

  1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ポリシーを作成し、ポリシーエディタで [JSON] を選択します。

  3. 読み取り/書き込み許可、データカタログのテーブルを更新する許可など、Amazon S3 に許可を付与する次のインラインポリシーを追加します。

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

    このポリシーには、Amazon Kinesis Data Streams へのアクセス、Lambda 関数の呼び出し、KMS キーへのアクセスを許可するステートメントが含まれています。これらのリソースを使用しない場合は、それぞれのステートメントを削除できます。

    エラーログ記録が有効になっている場合、Firehose はデータ配信エラーを CloudWatch ロググループとストリームにも送信します。このためには、ロググループとログストリーム名を設定する必要があります。ロググループ名とログストリーム名については、「CloudWatch Logs を使用して Amazon Data Firehose をモニタリングする」を参照してください。

  4. インラインポリシーで、amzn-s3-demo-bucket を、Amazon S3 バケット名に置き換え、aws-account-id およびリージョンを、リソースの有効な AWS アカウント 番号とリージョンに置き換えます。

    注記

    このロールは、データカタログ内のすべてのデータベースとテーブルに許可を付与します。必要に応じて、特定のテーブルとデータベースにのみ許可を付与できます。

  5. ポリシーを作成したら、IAM コンソールを開き、[信頼されたエンティティタイプ] として AWS のサービス を使用して IAM ロールを作成します。

  6. [サービスまたはユースケース] で、[Kinesis] を選択します。[ユースケース]で、[Kinesis Firehose] を選択します。

  7. 次のページで、前のステップで作成したポリシーを選択し、このロールにアタッチします。レビューページでは、このロールを引き受けるための許可を Firehose サービスに付与する信頼ポリシーが既にこのロールにアタッチされているのを確認できます。ロールを作成すると、Amazon Data Firehose は、AWS Glue および S3 バケットで必要なオペレーションを実行するために、そのロールを引き受けることができます。

Amazon Redshift の宛先へのアクセスを 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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "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:::amzn-s3-demo-bucket/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 Data Firehose に Amazon Redshift プロビジョンドクラスターまたは Amazon Redshift Serverless ワークグループへのアクセスを付与します。現在、Amazon Data Firehose は利用可能なリージョンごとに 1 つの CIDR ブロックを使用します。

リージョン CIDR ブロック
米国東部(オハイオ)

13.58.135.96/27

米国東部 (バージニア北部) 52.70.63.192/27
米国西部 (北カリフォルニア) 13.57.135.192/27
米国西部 (オレゴン) 52.89.255.224/27
AWS GovCloud (米国東部) 18.253.138.96/27
AWS GovCloud (米国西部) 52.61.204.160/27
カナダ (中部) 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
中東 (アラブ首長国連邦) 3.28.159.32/27
イスラエル (テルアビブ) 51.16.102.0/27
アジアパシフィック (メルボルン) 16.50.161.128/27
アジアパシフィック (マレーシア) 43.216.58.0/27

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

Firehose に公開 OpenSearch Service の宛先へのアクセスを付与する

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

次のアクセスポリシーを使用して、Amazon Data Firehose が S3 バケット、OpenSearch Service ドメイン、および 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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "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:::amzn-s3-demo-bucket/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 サービスにアクセス許可を委任するロールの作成」を参照してください。

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

VPC 内の OpenSearch Service の宛先へのアクセスを Firehose に付与する

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

  • ec2:DescribeVpcs

  • ec2:DescribeVpcAttribute

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

  • ec2:DeleteNetworkInterface

重要

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

重要

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

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

Firehose に公開 OpenSearch Serverless の宛先へのアクセスを付与する

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 Serverless ドメイン、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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "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:::amzn-s3-demo-bucket/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 サービスにアクセス許可を委任するロールの作成」を参照してください。

VPC 内の OpenSearch Serverless の宛先へのアクセスを Firehose に付与する

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 ストリームの作成後にこれらの許可を取り消さないでください。これらの許可を取り消すと、サービスが ENI のクエリまたは更新を試みるたびに、Firehose ストリームのパフォーマンスが低下するか、または OpenSearch サービスドメインへのデータの配信が停止します。

重要

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

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

Splunk の宛先へのアクセスを Firehose に付与する

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 の「Duration-Based Session Stickiness」を参照してください。

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 は Splunk へのアクセスに IAM を使用しません。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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "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:::amzn-s3-demo-bucket/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 ブロックを使用します。

リージョン 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
AWS GovCloud (米国東部) 18.253.138.192/26
AWS GovCloud (米国西部) 52.61.204.192/26
アジアパシフィック (香港) 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
カナダ (中部) 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
中東 (アラブ首長国連邦) 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
アジアパシフィック (マレーシア) 43.216.44.192/26

Amazon Data Firehose を使用して VPC フローログを Splunk に取り込む

VPC フローログサブスクリプションを作成し、Firehose に発行して、サポートされている宛先に VPC フローログを送信する方法の詳細については、「Amazon Data Firehose を使用して VPC フローログを Splunk に取り込む」を参照してください。

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

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

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

注記

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

Snowflake の宛先へのアクセスを Firehose に付与する

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 は Snowflake にアクセスするために IAM を使用しません。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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "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:::amzn-s3-demo-bucket/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 ネットワークルールを作成して、クラスターが存在している AWS リージョン のために、次の AwsVpceIds からのイングレスを許可します。詳細については、「Snowflake ユーザーガイド」の「Creating network rule」を参照してください。

クラスターが存在するリージョンに基づいて使用する 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-0aa444d9001e1faa1

vpce-04a49d4dcfd02b884

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

vpce-048a60a182c52be63

vpce-03c19949787fd1859

アジアパシフィック (ムンバイ)

vpce-0d68cb822f6f0db68

vpce-0517d32692ffcbde2

欧州 (ロンドン)

vpce-0fd1874a0ba3b9374

vpce-08091b1a85e206029

南米(サンパウロ)

vpce-065169b8144e4f12e

vpce-0493699f0e5762d63

カナダ (中部)

vpce-07e6ed81689d5271f

vpce-0f53239730541394c

欧州 (パリ)

vpce-09419680077e6488a

vpce-0ea81ba2c08140c14

アジアパシフィック (大阪)

vpce-0a9f003e6a7e38c05

vpce-02886510b897b1c5a

欧州 (ストックホルム)

vpce-0d96410833219025a

vpce-060a32f9a75ba969f

アジアパシフィック (ジャカルタ)

vpce-00add4b9a25e5c649

vpce-004ae2de34338a856

HTTP エンドポイントの宛先へのアクセスを Firehose に付与する

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 で配信されるオブジェクトへのフルアクセスが、バケット所有者に付与されます。このポリシーは、エラーログ記録のための CloudWatch へのアクセスとデータ変換のための AWS Lambda へのアクセスも Amazon Data Firehose に付与します。このポリシーには、Amazon Kinesis Data Streams へのアクセスを許可するステートメントも含まれています。データソースとして Kinesis Data Streams を使用しない場合は、そのステートメントを削除できます。

重要

Amazon Data Firehose は IAM を使用して、サポートされているサードパーティーサービスプロバイダーが所有する HTTP エンドポイントの宛先 (Datadog、Dynatrace、LogicMonitor、MongoDB、New Relic、Splunk、または Sumo Logic など) にアクセスすることはありません。サポートされているサードパーティーサービスプロバイダーが所有する指定された 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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "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:::amzn-s3-demo-bucket/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 ストリームの名前を入力します。

アカウント B で Firehose ストリームを作成するときは、その Firehose ストリームに、設定したトピックでクロスアカウント 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 を使用して、1 つの AWS アカウントで Firehose ストリームを作成し、Amazon S3 の宛先は別のアカウントに設定できます。次の手順では、アカウント A が所有する Firehose ストリームを設定して、アカウント B が所有する Amazon S3 バケットにデータを配信する例を示します。

  1. [Amazon S3 宛先へのアクセスを Firehose に付与する] で説明されているステップを使用して、アカウント A で IAM ロールを作成します。

    注記

    この場合、アクセスポリシーで指定した Amazon S3 バケットはアカウント B が所有しています。Amazon Data Firehose が配信するオブジェクトへのフルアクセスがアカウント B に付与されるよう、アクセスポリシーで Amazon S3 アクションのリストに s3:PutObjectAcl を追加したことを確認してください。このアクセス許可は、クロスアカウント配信に必要です。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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }
  3. ステップ 1 で作成した IAM ロールを使用して、アカウント A で Firehose ストリームを作成します。

OpenSearch Service の宛先へのクロスアカウント間の配信

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

  1. Firehose に公開 OpenSearch Service の宛先へのアクセスを付与する で示されているステップを使用して、アカウント A に IAM ロールを作成します。

  2. 前のステップで作成した IAM ロールからのアクセスを許可するには、アカウント B に OpenSearch Service ポリシーを作成します。例として、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 を使用して、OpenSearch Service の DomainARN ではなく ClusterEndpoint フィールドを指定します。

注記

1 つの AWS アカウントで Firehose ストリームを作成し、OpenSearch Service の宛先は別のアカウントに設定するには、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", "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 でタグベースのアクセスコントロールを使用することはできません。

その他のオペレーション

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

ListDeliveryStreams は、firehose:ResourceTag 条件キーを使用して、その Firehose ストリームのタグに基づいてアクセスをコントロールします。

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

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