Amazon Kinesis Data Firehose
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

通过 AWS PrivateLink 使用 Amazon Kinesis Data Firehose

针对 Kinesis Data Firehose 的接口 VPC 终端节点 (AWS PrivateLink)

您可以使用接口 VPC 终端节点,以防止 Amazon VPC 和 Kinesis Data Firehose 之间的流量离开 Amazon 网络。接口 VPC 终端节点不需要 Internet 网关、NAT 设备、VPN 连接或 AWS Direct Connect 连接。接口 VPC 终端节点由 AWS PrivateLink 提供支持,后者是一种 AWS 技术,可将弹性网络接口与 Amazon VPC 中的私有 IP 地址结合使用来支持 AWS 服务之间的私有通信。有关更多信息,请参阅 Amazon Virtual Private Cloud

使用针对 Kinesis Data Firehose 的接口 VPC 终端节点 (AWS PrivateLink)

若要开始,请创建一个接口 VPC 终端节点以使 Amazon VPC 资源中的 Kinesis Data Firehose 流量开始流过接口 VPC 终端节点。在创建终端节点时,您可为其附加终端节点策略来控制对 Kinesis Data Firehose 的访问。要了解更多有关使用策略控制从 VPC 终端节点访问 Kinesis Data Firehose 的信息,请参阅使用 VPC 终端节点控制对服务的访问

例如,以下步骤显示了如何在 VPC 中设置 AWS Lambda 函数并创建一个 VPC 终端节点,以允许该函数与 Kinesis Data Firehose 服务安全地进行通信。在本示例中,您将使用一个策略来允许 Lambda 函数列出当前区域中的传输流,但不对任何传输流进行描述。

创建 VPC 终端节点

  1. 登录 AWS 管理控制台并通过以下网址打开 Amazon VPC 控制台:https://console.amazonaws.cn/vpc/

  2. 在 VPC 控制面板中,选择 Endpoints (终端节点)

  3. 选择 Create Endpoint

  4. 在服务名称列表中,选择 com.amazonaws.your_region.kinesis-firehose

  5. 选择要在其中创建终端节点的 VPC 以及一个或多个子网。

  6. 选择一个或多个要与终端节点关联的安全组。

  7. 对于 Policy (策略),选择 Custom (自定义) 并粘贴以下策略:

    { "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": [ "*" ] } ] }
  8. 选择 Create endpoint

创建要与 Lambda 函数一起使用的 IAM 角色

  1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

  2. 选择 Create role

  3. Select type of trusted entity (选择可信实体的类型) 下,保持默认选择 AWS service (AWS 服务)

  4. 选择将使用此角色的服务下,选择 Lambda

  5. 选择 Next: Permissions

  6. 在策略列表中,搜索并添加名为 AWSLambdaVPCAccessExecutionRoleAmazonKinesisFirehoseFullAccess 的两个策略。

  7. 选择 Next: Tags。在本练习中,您不需要添加标签。选择 Next: Review

  8. 输入角色的名称,然后选择 Create role

在 VPC 中创建 Lambda 函数

  1. 通过以下网址打开 AWS Lambda 控制台:https://console.amazonaws.cn/lambda/

  2. 选择 Create function

  3. 选择 Author from scratch

  4. 输入函数的名称,然后将 Runtime (运行时) 设置为 Python 3.6。

  5. Permissions (权限) 下,展开 Choose or create an execution role (选择或创建执行角色)

  6. Execution role (执行角色) 列表中,选择 Use an existing role (使用现有角色)

  7. Existing role (现有角色) 列表中,选择您先前创建的角色。

  8. 选择 Create function

  9. Function code (函数代码) 下,粘贴以下代码。

    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.")
  10. Basic settings (基本设置) 下,将超时时间设置为 1 分钟。

  11. Network (网络) 中,选择您之前在其中创建终端节点的 VPC,然后选择在您创建终端节点时与其关联的子网和安全组。

  12. 在页面顶部附近,选择 Save

  13. 选择 Test

  14. 输入事件名称,然后选择 Create

  15. 再次选择 Test。这将使该函数运行。在执行结果显示之后,展开 Details (详细信息),并将日志输出与函数代码进行比较。运行成功的结果将显示区域中的传输流的列表以及以下输出:

    Calling describe_delivery_stream.

    AccessDeniedException

    Access denied test succeeded.

可用性

接口 VPC 终端节点当前在以下区域受支持:

  • 亚太区域(东京)

  • 亚太区域(首尔)

  • 亚太地区(孟买)

  • 亚太区域(新加坡)

  • 亚太区域(悉尼)

  • 加拿大 (中部)

  • 欧洲(法兰克福)

  • 欧洲(爱尔兰)

  • 欧洲 (伦敦)

  • 欧洲 (巴黎)

  • 美国东部(弗吉尼亚北部)

  • 美国东部(俄亥俄州)

  • 美国西部(加利福尼亚北部)

  • 美国西部(俄勒冈)

  • 南美洲(圣保罗)

  • 中国(北京)

  • 中国 (宁夏)