AWS::CloudTrail::Trail - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::CloudTrail::Trail

创建一个跟踪,用于指定向 Amazon S3 存储桶传送日志数据的设置。

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::CloudTrail::Trail", "Properties" : { "CloudWatchLogsLogGroupArn" : String, "CloudWatchLogsRoleArn" : String, "EnableLogFileValidation" : Boolean, "EventSelectors" : [ EventSelector, ... ], "IncludeGlobalServiceEvents" : Boolean, "IsLogging" : Boolean, "IsMultiRegionTrail" : Boolean, "KMSKeyId" : String, "S3BucketName" : String, "S3KeyPrefix" : String, "SnsTopicName" : String, "Tags" : [ Tag, ... ], "TrailName" : String } }

YAML

Type: AWS::CloudTrail::Trail Properties: CloudWatchLogsLogGroupArn: String CloudWatchLogsRoleArn: String EnableLogFileValidation: Boolean EventSelectors: - EventSelector IncludeGlobalServiceEvents: Boolean IsLogging: Boolean IsMultiRegionTrail: Boolean KMSKeyId: String S3BucketName: String S3KeyPrefix: String SnsTopicName: String Tags: - Tag TrailName: String

属性

CloudWatchLogsLogGroupArn

使用 Amazon 资源名称 (ARN) 指定日志组名称,该资源名称是表示将 CloudTrail 日志传输到的日志组的唯一标识符。不是必需的,除非您指定 CloudWatchLogsRoleArn。

必需:条件

类型:字符串

Update requires: No interruption

CloudWatchLogsRoleArn

指定 CloudWatch Logs 终端节点代入以对用户日志组进行写入的角色。

必需:条件

类型:字符串

Update requires: No interruption

EnableLogFileValidation

指定是否启用日志文件验证。默认为 false。

注意

如果禁用日志文件完整性验证,一小时后摘要文件链会断开。CloudTrail 不会为在禁用日志文件完整性验证的时间段内提交的日志文件创建摘要文件。例如,如果您在 1 月 1 日中午启用日志文件完整性验证,在 1 月 2 日中午禁用它,在 1 月 10 日中午再次启用它,则不会为从 1 月 2 日中午到 1 月 10 日中午之间提交的日志文件创建摘要文件。只要停止 CloudTrail 日志记录或删除跟踪,这同样适用。

必需:否

类型:布尔值

Update requires: No interruption

EventSelectors

使用事件选择器进一步指定跟踪的管理和数据事件设置。默认情况下,在没有特定事件选择器的情况下创建的跟踪将配置为记录所有读取和写入管理事件,而不记录任何数据事件。当事件在您的账户中发生时,CloudTrail 将在所有跟踪中评估事件选择器。对于每个跟踪,如果事件匹配任何事件选择器,则跟踪将处理并记录事件。如果事件不匹配任何事件选择器,则跟踪不会记录事件。

您可以为一个跟踪配置最多 5 个事件选择器。

必需:否

类型EventSelector 的列表

Update requires: No interruption

IncludeGlobalServiceEvents

指示跟踪是否将来自全球服务(例如 IAM)的事件发布到日志文件。

必需:否

类型:布尔值

Update requires: No interruption

IsLogging

CloudTrail 目前是否正在记录 AWS API 调用。

必需:是

类型:布尔值

Update requires: No interruption

IsMultiRegionTrail

指定跟踪是仅适用于当前区域还是适用于所有区域。默认为 false。如果跟踪仅存在于当前区域中且此值设置为 true,则将在其他区域中创建阴影跟踪(跟踪的复制)。如果跟踪存在于所有区域中且此值设置为 false,则跟踪将保留在创建它的区域中,并且将删除其在其他区域中的阴影跟踪。作为最佳实践,请考虑使用在所有区域中记录事件的跟踪。

必需:否

类型:布尔值

Update requires: No interruption

KMSKeyId

指定用于加密 CloudTrail 所传输的日志的 KMS 密钥 ID。该值可以是前缀为“alias/”的别名、别名的完全指定 ARN、密钥的完全指定 ARN 或全局唯一标识符。

示例:

  • alias/MyAliasName

  • arn:aws:kms:us-east-2:123456789012:alias/MyAliasName

  • arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012

  • 12345678-1234-1234-1234-123456789012

必需:否

类型:字符串

Update requires: No interruption

S3BucketName

指定为发布日志文件指定的 Amazon S3 存储桶的名称。请参阅 Amazon S3 存储桶命名要求

必需:是

类型:字符串

Update requires: No interruption

S3KeyPrefix

指定 Amazon S3 键前缀,该前缀位于您为日志文件传输指定的存储桶的名称之后。有关更多信息,请参阅查找您的 CloudTrail 日志文件。最大长度为 200 个字符。

必需:否

类型:字符串

Update requires: No interruption

SnsTopicName

指定为日志文件传输通知定义的 Amazon SNS 主题的名称。最大长度为 256 个字符。

必需:否

类型:字符串

Update requires: No interruption

Tags

此跟踪的任意标签组(键/值对)。

必需:否

类型Tag 的列表

Update requires: No interruption

TrailName

指定跟踪的名称。名称必须满足以下要求:

  • 仅包含 ASCII 字母(a-z,A-Z)、数字 (0-9)、句点 (.)、下划线 (_) 或短划线 (-)

  • 以字母或数字开头并以字母或数字结尾

  • 介于 3 到 128 个字符之间

  • 不具有相邻的句点、下划线或短划线。my-_namespacemy--namespace 等名称无效。

  • 未采用 IP 地址格式(例如,192.168.5.4)

必需:否

类型:字符串

Update requires: Replacement

返回值

Ref

当该资源的逻辑 ID 提供给 Ref 内部函数时,Ref 将返回资源名称。

For more information about using the Ref function, see Ref.

Fn::GetAtt

Fn::GetAtt 内部函数返回此类型的一个指定属性的值。以下为可用属性和示例返回值。

有关使用 Fn::GetAtt 内部函数的更多信息,请参阅 Fn::GetAtt

Arn

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回 CloudTrail 跟踪的 ARN,例如 arn:aws:cloudtrail:us-east-2:123456789012:trail/myCloudTrail

SnsTopicArn

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回与 CloudTrail 跟踪关联的 Amazon SNS 主题的 ARN,例如 arn:aws:sns:us-east-2:123456789012:mySNSTopic

示例

示例

以下示例创建一个记录所有区域中的事件的跟踪、一个发布日志的 Amazon S3 存储桶以及一个发送通知的 SNS 主题。通过存储桶和主题策略,CloudTrail(从指定区域)可以向 S3 存储桶发布日志,并且可以向您指定的电子邮件发送通知。有关 CloudTrail 存储桶策略的信息,请参阅 AWS CloudTrail 用户指南 中的 Amazon S3 存储桶策略

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Parameters": { "OperatorEmail": { "Description": "Email address to notify when new logs are published.", "Type": "String" } }, "Resources": { "S3Bucket": { "DeletionPolicy": "Retain", "Type": "AWS::S3::Bucket", "Properties": { } }, "BucketPolicy": { "Type": "AWS::S3::BucketPolicy", "Properties": { "Bucket": { "Ref": "S3Bucket" }, "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailAclCheck", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": { "Fn::Join": [ "", [ "arn:aws:s3:::", { "Ref": "S3Bucket" } ] ] } }, { "Sid": "AWSCloudTrailWrite", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "s3:PutObject", "Resource": { "Fn::Join": [ "", [ "arn:aws:s3:::", { "Ref": "S3Bucket" }, "/AWSLogs/", { "Ref": "AWS::AccountId" }, "/*" ] ] }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] } } }, "Topic": { "Type": "AWS::SNS::Topic", "Properties": { "Subscription": [ { "Endpoint": { "Ref": "OperatorEmail" }, "Protocol": "email" } ] } }, "TopicPolicy": { "Type": "AWS::SNS::TopicPolicy", "Properties": { "Topics": [ { "Ref": "Topic" } ], "PolicyDocument": { "Version": "2008-10-17", "Statement": [ { "Sid": "AWSCloudTrailSNSPolicy", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Resource": "*", "Action": "SNS:Publish" } ] } } }, "myTrail": { "DependsOn": [ "BucketPolicy", "TopicPolicy" ], "Type": "AWS::CloudTrail::Trail", "Properties": { "S3BucketName": { "Ref": "S3Bucket" }, "SnsTopicName": { "Fn::GetAtt": [ "Topic", "TopicName" ] }, "IsLogging": true, "IsMultiRegionTrail": true } } } }

YAML

AWSTemplateFormatVersion: "2010-09-09" Parameters: OperatorEmail: Description: "Email address to notify when new logs are published." Type: String Resources: S3Bucket: DeletionPolicy: Retain Type: AWS::S3::Bucket Properties: {} BucketPolicy: Type: AWS::S3::BucketPolicy Properties: Bucket: Ref: S3Bucket PolicyDocument: Version: "2012-10-17" Statement: - Sid: "AWSCloudTrailAclCheck" Effect: "Allow" Principal: Service: "cloudtrail.amazonaws.com" Action: "s3:GetBucketAcl" Resource: !Sub |- arn:aws:s3:::${S3Bucket} - Sid: "AWSCloudTrailWrite" Effect: "Allow" Principal: Service: "cloudtrail.amazonaws.com" Action: "s3:PutObject" Resource: !Sub |- arn:aws:s3:::${S3Bucket}/AWSLogs/${AWS::AccountId}/* Condition: StringEquals: s3:x-amz-acl: "bucket-owner-full-control" Topic: Type: AWS::SNS::Topic Properties: Subscription: - Endpoint: Ref: OperatorEmail Protocol: email TopicPolicy: Type: AWS::SNS::TopicPolicy Properties: Topics: - Ref: "Topic" PolicyDocument: Version: "2008-10-17" Statement: - Sid: "AWSCloudTrailSNSPolicy" Effect: "Allow" Principal: Service: "cloudtrail.amazonaws.com" Resource: "*" Action: "SNS:Publish" myTrail: DependsOn: - BucketPolicy - TopicPolicy Type: AWS::CloudTrail::Trail Properties: S3BucketName: Ref: S3Bucket SnsTopicName: Fn::GetAtt: - Topic - TopicName IsLogging: true IsMultiRegionTrail: true