步骤 1:创建 Firehose 传输流 - Amazon CloudWatch 日志
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

步骤 1:创建 Firehose 传输流

重要

在完成以下步骤之前,您必须使用访问策略,以便 Firehose 可以访问您的 Amazon S3 存储桶。有关更多信息,请参阅《Amazon Data Firehose 开发人员指南》中的 Controlling Access

本部分(步骤 1)中的所有步骤都需要在日志数据接收者账户中完成。

以下示例命令中使用的是美国东部(弗吉尼亚州北部)。请将此区域替换为适用于您的部署的正确区域。

创建将用作目标的 Firehose 传输流
  1. 创建 Amazon S3 存储桶:

    aws s3api create-bucket --bucket amzn-s3-demo-bucket --create-bucket-configuration LocationConstraint=us-east-1
  2. 创建 IAM 角色,授予 Firehose 将数据放入存储桶的权限。

    1. 首先,使用文本编辑器在文件 ~/TrustPolicyForFirehose.json 中创建信任策略。

      { "Statement": { "Effect": "Allow", "Principal": { "Service": "firehose.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId":"222222222222" } } } }
    2. 创建 IAM 角色,并指定您刚创建的信任策略文件。

      aws iam create-role \ --role-name FirehosetoS3Role \ --assume-role-policy-document file://~/TrustPolicyForFirehose.json
    3. 此命令的输出与以下内容类似。记下角色名称和角色 ARN。

      { "Role": { "Path": "/", "RoleName": "FirehosetoS3Role", "RoleId": "AROAR3BXASEKW7K635M53", "Arn": "arn:aws:iam::222222222222:role/FirehosetoS3Role", "CreateDate": "2021-02-02T07:53:10+00:00", "AssumeRolePolicyDocument": { "Statement": { "Effect": "Allow", "Principal": { "Service": "firehose.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "222222222222" } } } } } }
  3. 创建权限策略,以定义 Firehose 可对您的账户执行的操作。

    1. 首先,使用文本编辑器在名为 ~/PermissionsForFirehose.json 的文件中创建以下权限策略。根据应用场景,您可能需要为此文件添加更多权限。

      { "Statement": [{ "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }] }
    2. 输入以下命令,以将刚创建的权限策略与 IAM 角色相关联。

      aws iam put-role-policy --role-name FirehosetoS3Role --policy-name Permissions-Policy-For-Firehose-To-S3 --policy-document file://~/PermissionsForFirehose.json
  4. 输入以下命令以创建 Firehose 传输流。将 my-role-arnamzn-s3-demo-bucket2-arn 替换为正确的部署值。

    aws firehose create-delivery-stream \ --delivery-stream-name 'my-delivery-stream' \ --s3-destination-configuration \ '{"RoleARN": "arn:aws:iam::222222222222:role/FirehosetoS3Role", "BucketARN": "arn:aws:s3:::amzn-s3-demo-bucket"}'

    该输出值应该类似于以下内容:

    { "DeliveryStreamARN": "arn:aws:firehose:us-east-1:222222222222:deliverystream/my-delivery-stream" }