AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
如何將 CloudWatch Logs 跨帳戶推送到 Amazon Data Firehose?
我想將 Amazon Data Firehose 的 Amazon CloudWatch Logs 串流到不同 AWS 地區的另一個 AWS 帳戶。
解決方法
若要將 CloudWatch Logs 傳送到不同區域的 Firehose 串流,該區域必須支援 Firehose。
在解決方法的命令中,將下列值取代為您的值:
- 以您目的地帳戶的 ID 取代 111111111111
- 以 Firehose 區域取代 us-east-1
- 以您的 Amazon Simple Storage Service (Amazon S3) 區域取代 us-west-2
- 以您目的地帳戶 ID 的區域取代 us-east-2
- 以您來源帳戶的 ID 取代 222222222222
- 以您 CloudWatch Log 群組的區域取代 us-east2
- 以您 Amazon Virtual Private Cloud (Amazon VPC) 流量日誌的區域取代 us-east-2
- 以資源的 ARN 取代 -arn
注意: 如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,則請參閱對 AWS CLI 進行錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
設定目的地帳戶
請完成下列步驟:
-
建立 Amazon S3 儲存貯體:
aws s3api create-bucket --bucket my-bucket --create-bucket-configuration LocationConstraint=us-west-2 --region us-west-2注意: 請記下輸出中儲存貯體的 ARN,以便後續步驟中使用。
-
建立擁有所需 Firehose 權限的信任政策,以將資料推送到 Amazon S3:
{ "Statement": { "Effect": "Allow", "Principal": { "Service": "firehose.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "111111111111" } } } } -
若要建立 IAM 角色並指定信任政策,請執行 create-role 命令:
aws iam create-role \ --role-name FirehosetoS3Role \ --assume-role-policy-document file://~/TrustPolicyForFirehose.json注意: 請記下輸出中角色的 ARN,以便後續步驟中使用。
-
若要定義 Firehose 可在目的地帳戶中執行的動作,請使用 JSON 編輯器來建立權限政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/*" ] } ] } -
執行 put-role-policy 命令,將權限政策與 IAM 角色關聯:
aws iam put-role-policy --role-name FirehosetoS3Role --policy-name Permissions-Policy-For-Firehose --policy-document file://~/PermissionsForFirehose.json -
為 Firehose 建立目的地交付串流:
aws firehose create-delivery-stream --delivery-stream-name my-delivery-stream --s3-destination-configuration RoleARN='arn:aws:iam::111111111111:role/FirehosetoS3Role',BucketARN='arn:aws:s3:::my-bucket' --region us-east-1注意: 以您的角色和儲存貯體 ARN 取代 RoleARN 和 BucketARN。
當您將 S3 物件交付到 Firehose,自訂前綴即會用於 timestamp 命名空間運算式。您可以在時間格式的開頭指定額外的前綴 (YYY/mm/dd/HH/)。如果前綴結尾是正斜線 (/),即會在 S3 儲存貯體中顯示為資料夾。 -
若要檢查 DeliveryStreamDescription.DeliveryStreamStatus 屬性,請執行 describe-delivery-stream 命令:
aws firehose describe-delivery-stream --delivery-stream-name "my-delivery-stream" --region us-east-1若要確認串流作用中,請檢查命令輸出:
{ "DeliveryStreamDescription": { "DeliveryStreamType": "DirectPut", "HasMoreDestinations": false, "DeliveryStreamEncryptionConfiguration": { "Status": "DISABLED" }, "VersionId": "1", "CreateTimestamp": 1604484348.804, "DeliveryStreamARN": "arn:aws:firehose:us-east-1:111111111111:deliverystream/my-delivery-stream", "DeliveryStreamStatus": "ACTIVE", "DeliveryStreamName": "my-delivery-stream", "Destinations": [ { "DestinationId": "destinationId-000000000001", "ExtendedS3DestinationDescription": { "RoleARN": "arn:aws:iam::111111111111:role/FirehosetoS3Role2test", "BufferingHints": { "IntervalInSeconds": 300, "SizeInMBs": 5 }, "EncryptionConfiguration": { "NoEncryptionConfig": "NoEncryption" }, "CompressionFormat": "UNCOMPRESSED", "S3BackupMode": "Disabled", "CloudWatchLoggingOptions": { "Enabled": false }, "BucketARN": "arn:aws:s3:::my-bucket" }, "S3DestinationDescription": { "RoleARN": "arn:aws:iam::111111111111:role/FirehosetoS3Role2test", "BufferingHints": { "IntervalInSeconds": 300, "SizeInMBs": 5 }, "EncryptionConfiguration": { "NoEncryptionConfig": "NoEncryption" }, "CompressionFormat": "UNCOMPRESSED", "CloudWatchLoggingOptions": { "Enabled": false }, "BucketARN": "arn:aws:s3:::my-bucket" } } ] } }注意: 請記下串流的 ARN,以在後續步驟中使用。
-
建立額外的信任政策,以授予 CloudWatch Logs 將資料放入 Firehose 串流的權限。新增推送日誌的地區:
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.us-east-2.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-2:sourceAccountId:*", "arn:aws:logs:us-east-2:recipientAccountId:*" ] } } } } -
若要建立一個額外的 IAM 角色以將資料放入 Firehose 串流中,並指定信任政策檔案,請執行 create-role 命令:
aws iam create-role \ --role-name CWLtoKinesisFirehoseRole \ --assume-role-policy-document file://~/TrustPolicyForCWL.json注意: 請記下角色的 ARN,以在後續步驟中使用。
-
建立權限政策,以定義 CloudWatch Logs 可以在目的地帳戶中執行的動作。包括串流的 ARN 和角色的 ARN:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "firehose:ListDeliveryStreams", "Resource": "*" }, { "Effect": "Allow", "Action": [ "firehose:DescribeDeliveryStream", "firehose:PutRecord", "firehose:PutRecordBatch" ], "Resource": "arn:aws:firehose:us-east-1:111111111111:deliverystream/my-delivery-stream" } ] }
- 執行 put-role-policy 命令將權限政策與角色建立關聯:
aws iam put-role-policy --role-name CWLtoKinesisFirehoseRole --policy-name Permissions-Policy-For-CWL --policy-document file://~/PermissionsForCWL.json
- 若要在目的地帳戶中建立用於傳送日誌的來源帳戶目的地,請執行 put-destination 命令:
aws logs put-destination --destination-name "myDestination" --target-arn "arn:aws:firehose:us-east-1:111111111111:deliverystream/my-delivery-stream" --role-arn "arn:aws:iam::111111111111:role/CWLtoKinesisFirehoseRole" --region us-east-2
注意: 您可以在任何支援 Firehose 的地區中,建立交付串流的目的地。您建立目的地的地區必須與日誌來源地區相同。 為 CloudWatch 目的地建立存取政策:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "222222222222" }, "Action": "logs:PutSubscriptionFilter", "Resource": "arn:aws:logs:us-east-2:111111111111:destination:myDestination" } ] }
- 將存取政策與 CloudWatch 目的地建立關聯:
aws logs put-destination-policy --destination-name "myDestination" --access-policy file://~/AccessPolicy.json --region us-east-2
- 若要驗證目的地,請執行 describe-destinations 命令:
aws logs describe-destinations --region us-east-2
設定來源帳戶
注意: 若要設定來源帳戶,您必須是該帳戶的 IAM 管理員使用者或根使用者。
請完成下列步驟:
-
建立信任政策,以授予 Amazon VPC 流程日誌傳送資料至 CloudWatch Log 群組的權限:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "vpc-flow-logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } -
執行 create-role 命令並指定信任政策:
aws iam create-role \ --role-name PublishFlowLogs \ --assume-role-policy-document file://~/TrustPolicyForVPCFlowLogs.json注意: 請記下輸出中角色的 ARN,以便後續步驟中使用。
-
若要定義 VPC 流程日誌可以在來源帳戶中執行的動作,請建立權限政策:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Effect": "Allow", "Resource": "*" } ] } -
若要將權限政策與 IAM 角色建立關聯,請執行 put-role-policy 命令:
aws iam put-role-policy --role-name PublishFlowLogs --policy-name Permissions-Policy-For-VPCFlowLogs --policy-document file://~/PermissionsForVPCFlowLogs.json -
若要設定流程日誌的目的地,請執行 create-log-group 命令以建立 CloudWatch Log 群組:
aws logs create-log-group --log-group-name vpc-flow-logs --region us-east-2 -
若要開啟 VPC 流程日誌,請執行 create-flow-logs 命令:
aws ec2 create-flow-logs --resource-type VPC --resource-ids vpc-12345678 --traffic-type ALL --log-group-name vpc-flow-logs --deliver-logs-permission-arn arn:aws:iam::222222222222:role/PublishFlowLogs --region us-east-2 -
若要在目的地帳戶中將 CloudWatch Log 群組訂閱到 Firehose,請執行 put-subscription-filter 命令:
aws logs put-subscription-filter --log-group-name "vpc-flow-logs" --filter-name "AllTraffic" --filter-pattern "" --destination-arn "arn:aws:logs:us-east-2:111111111111:destination:myDestination" --region us-east-2若要確認已發佈日誌,請檢查 S3 儲存貯體中的新日誌。
相關資訊
- 語言
- 中文 (繁體)

相關內容
- 已提問 2 年前