翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Data Firehose と AWS PrivateLink の使用
インターフェイス VPC エンドポイント (AWS PrivateLink) を使用して、インターネットゲートウェイや Word Gateway を必要とせずに、VPC から Amazon Data Firehose にアクセスできますNAT。Interface VPC エンドポイントには、インターネットゲートウェイ、NAT デバイス、VPN 接続、または AWS Direct Connect 接続は必要ありません。Interface VPC エンドポイントは、Amazon AWS PrivateLink のプライベート IPs で Elastic Network Interface を使用して AWS サービス間のプライベート通信を可能にする AWS テクノロジーである VPC を利用しています。詳細については、「Amazon Virtual Private Cloud」を参照してください。
Firehose でのインターフェイス VPC エンドポイント (AWS PrivateLink) の使用
開始するには、Amazon VPC リソースからの Amazon Data Firehose トラフィックがインターフェイス VPC エンドポイントを経由して流れるように、インターフェイス VPC エンドポイントを作成します。エンドポイントを作成するときは、Amazon Data Firehose へのアクセスを制御するエンドポイントポリシーをエンドポイントにアタッチします。ポリシーを使用して VPC エンドポイントから Amazon Data Firehose へのアクセスを制御する方法の詳細については、「 VPC エンドポイントを使用したサービスへのアクセスの制御」を参照してください。
次の例は、VPC で AWS Lambda 関数を設定し、関数が Amazon Data Firehose サービスと安全に通信できるように VPC エンドポイントを作成する方法を示しています。この例では、Lambda 関数に現在のリージョンの Firehose ストリームのリスト表示を許可するが、いずれの Firehose ストリームについても説明は許可しないポリシーを使用します。
VPC エンドポイントを作成する
にサインイン AWS Management Console し、Word で Amazon VPC コンソールを開きます。 https://console.aws.amazon.com/vpc/
-
VPC Dashboard でエンドポイントを選択します。
-
[エンドポイントの作成] を選択します。
-
サービス名のリストで、[
com.amazonaws.
] を選択します。your_region
.kinesis-firehose -
エンドポイントを作成する VPC と 1 つ以上のサブネットを選択します。
-
エンドポイントに関連付ける 1 つ以上のセキュリティグループを選択します。
-
[ポリシー] で [カスタム] を選択し、次のポリシーを貼り付けます。
{ "Statement": [ { "Sid": "Allow-only-specific-PrivateAPIs", "Principal": "*", "Action": [ "firehose:ListDeliveryStreams" ], "Effect": "Allow", "Resource": [ "*" ] }, { "Sid": "Allow-only-specific-PrivateAPIs", "Principal": "*", "Action": [ "firehose:DescribeDeliveryStream" ], "Effect": "Deny", "Resource": [ "*" ] } ] }
-
[エンドポイントの作成] を選択します。
Lambda 関数で使用する IAM ロールを作成する
IAM で https://console.aws.amazon.com/iam/
コンソールを開きます。 -
左側のペインから、[Roles (ロール)] を選択してから、[Create role (ロールの作成)] をクリックします。
-
[Select type of trusted entity (信頼されたエンティティのタイプの選択)] で、デフォルトの選択である [AWS のサービス] をそのままにします。
-
[このロールを使用するサービスを選択] の下で、[Lambda] を選択します。
-
[Next: Permissions (次へ: アクセス許可)] を選択します。
-
ポリシーのリストで、
AWS LambdaVPCAccessExecutionRole
およびAmazonDataFirehoseReadOnlyAccess
という名前の 2 つのポリシーを探して追加します。重要
以下に例を示します。本番環境では、より厳格なポリシーが必要になる場合があります。
-
[Next: Tags] (次へ: タグ) を選択します。この演習の目的を達成するにはタグは不要です。[次へ: レビュー] を選択します。
-
ロールの名前を入力し、[ロールの作成] を選択します。
VPC 内に Lambda 関数を作成する
https://console.aws.amazon.com/lambda/
で AWS Lambda コンソールを開きます。 -
[関数の作成] を選択します。
-
Author from scratch(製作者を最初から) を選択します。
-
関数の名前を入力し、[ランタイム]を
Python 3.9
以上に設定します。 -
[Permissions (アクセス許可)] で、[実行ロールの選択または作成] を選択します。
-
[実行ロール] リストから [既存のロールを使用する] を選択します。
-
[既存のロール] リストで、上記で作成したロールを選択します。
-
[Create function (関数の作成)] を選択します。
-
[関数コード] に次のコードを貼り付けます。
import json import boto3 import os from botocore.exceptions import ClientError def lambda_handler(event, context): REGION = os.environ['AWS_REGION'] client = boto3.client( 'firehose', REGION ) print("Calling list_delivery_streams with ListDeliveryStreams allowed policy.") delivery_stream_request = client.list_delivery_streams() print("Successfully returned list_delivery_streams request %s." % ( delivery_stream_request )) describe_access_denied = False try: print("Calling describe_delivery_stream with DescribeDeliveryStream denied policy.") delivery_stream_info = client.describe_delivery_stream(DeliveryStreamName='test-describe-denied') except ClientError as e: error_code = e.response['Error']['Code'] print ("Caught %s." % (error_code)) if error_code == 'AccessDeniedException': describe_access_denied = True if not describe_access_denied: raise else: print("Access denied test succeeded.")
-
[基本設定] で、タイムアウトを 1 分に設定します。
-
ネットワークで、上記のエンドポイントを作成した VPC を選択し、エンドポイントの作成時にエンドポイントに関連付けたサブネットとセキュリティグループを選択します。
-
ページの上部付近にある [Save (保存)] を選択します。
-
[テスト] を選択します。
-
イベント名を入力し、[Create (作成)] を選択します。
-
[テスト] を再度選択します。これにより、関数が実行されます。実行結果が表示されたら [詳細] を展開し、ログ出力を関数コードと比較します。成功した結果では、リージョンの Firehose ストリームのリストと、次のような出力が表示されます。
Calling describe_delivery_stream.
AccessDeniedException
Access denied test succeeded.
サポート AWS リージョン
Interface VPC エンドポイントは現在、以下のリージョンでサポートされています。
-
米国東部(オハイオ)
-
米国東部 (バージニア北部)
-
米国西部 (北カリフォルニア)
-
米国西部 (オレゴン)
-
アジアパシフィック (ムンバイ)
-
アジアパシフィック (ソウル)
-
アジアパシフィック (シンガポール)
-
アジアパシフィック (シドニー)
-
アジアパシフィック (東京)
-
アジアパシフィック (香港)
-
カナダ (中部)
-
カナダ西部 (カルガリー)
-
中国 (北京)
-
中国 (寧夏)
-
欧州 (フランクフルト)
-
欧州 (アイルランド)
-
欧州 (ロンドン)
-
欧州 (パリ)
-
南米 (サンパウロ)
-
AWS GovCloud (米国東部)
-
AWS GovCloud (米国西部)
-
欧州 (スペイン)
-
中東 (UAE)
-
アジアパシフィック (ジャカルタ)
-
アジアパシフィック (大阪)
-
イスラエル (テルアビブ)
-
アジアパシフィック (マレーシア)