本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
第 1 步:创建 Firehose 传送流
重要
在完成以下步骤之前,您必须使用访问策略,这样 Firehose 才能访问您的 Amazon S3 存储桶。有关更多信息,请参阅《亚马逊数据 Firehose 开发者指南》中的控制访问权限。
本部分(步骤 1)中的所有步骤都需要在日志数据接收者账户中完成。
以下示例命令中使用的是美国东部(弗吉尼亚州北部)。请将此区域替换为适用于您的部署的正确区域。
创建用作目标的 Firehose 传送流
创建 Amazon S3 存储桶:
aws s3api create-bucket --bucket firehose-test-bucket1 --create-bucket-configuration LocationConstraint=us-east-1
创建IAM角色以授予 Firehose 将数据放入存储桶的权限。
首先,使用文本编辑器在文件
~/TrustPolicyForFirehose.json
中创建信任策略。{ "Statement": { "Effect": "Allow", "Principal": { "Service": "firehose.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId":"222222222222" } } } }
创建IAM角色,指定您刚刚创建的信任策略文件。
aws iam create-role \ --role-name FirehosetoS3Role \ --assume-role-policy-document file://~/TrustPolicyForFirehose.json
此命令的输出与以下内容类似。记下角色名称和角色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" } } } } } }
创建权限策略来定义 Firehose 可以在您的账户中执行的操作。
首先,使用文本编辑器在名为
~/PermissionsForFirehose.json
的文件中创建以下权限策略。根据应用场景,您可能需要为此文件添加更多权限。{ "Statement": [{ "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::firehose-test-bucket1", "arn:aws:s3:::firehose-test-bucket1/*" ] }] }
输入以下命令将您刚刚创建的权限策略与该IAM角色相关联。
aws iam put-role-policy --role-name FirehosetoS3Role --policy-name Permissions-Policy-For-Firehose-To-S3 --policy-document file://~/PermissionsForFirehose.json
输入以下命令来创建 Firehose 传送流。Replace(替换)
my-role-arn
以及my-bucket-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:::firehose-test-bucket1"}'
该输出值应该类似于以下内容:
{ "DeliveryStreamARN": "arn:aws:firehose:us-east-1:222222222222:deliverystream/my-delivery-stream" }