本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
步骤 1:创建 Firehose 传输流
重要
在完成以下步骤之前,您必须使用访问策略,以便 Firehose 可以访问您的 Amazon S3 存储桶。有关更多信息,请参阅《Amazon Data Firehose 开发人员指南》中的 Controlling Access。
本部分(步骤 1)中的所有步骤都需要在日志数据接收者账户中完成。
以下示例命令中使用的是美国东部(弗吉尼亚州北部)。请将此区域替换为适用于您的部署的正确区域。
创建将用作目标的 Firehose 传输流
创建 Amazon S3 存储桶:
aws s3api create-bucket --bucket amzn-s3-demo-bucket --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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }] }
输入以下命令,以将刚创建的权限策略与 IAM 角色相关联。
aws iam put-role-policy --role-name FirehosetoS3Role --policy-name Permissions-Policy-For-Firehose-To-S3 --policy-document file://~/PermissionsForFirehose.json
输入以下命令以创建 Firehose 传输流。将
my-role-arn
和amzn-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" }