Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
为网络负载均衡器启用访问日志
在为负载均衡器启用访问日志记录时,您必须指定负载均衡器将在其中存储日志的 S3 存储桶的名称。存储桶必须具有为 Elastic Load Balancing 授予写入存储桶的权限的存储桶策略。
仅当负载均衡器具有 TLS 侦听器且日志仅包含有关 TLS 请求的信息时,才创建访问日志。
存储桶要求
您可以使用现有存储桶,也可以创建专门用于访问日志的存储桶。存储桶必须满足以下要求。
要求
-
存储桶必须位于与负载均衡器相同的区域中。该存储桶和负载均衡器可由不同的账户拥有。
-
您指定的前缀不得包含 AWSLogs。我们会在您指定的存储桶名称和前缀后添加以 AWSLogs 开头的文件名部分。
-
存储桶必须具有授予将访问日志写入存储桶的权限的存储桶策略。存储桶策略是 JSON 语句的集合,这些语句以访问策略语言编写,用于为存储桶定义访问权限。
存储桶策略的示例
以下是示例策略。对于 Resource 元素,将 amzn-s3-demo-destination-bucket 替换为您的访问日志的 S3 存储桶名称。如果您未使用存储桶前缀,请务必省略 Prefix/。对于 aws:SourceAccount,指定负载均衡器对应的 Amazon 账户的 ID。对于 aws:SourceArn,将 region 和 012345678912 分别替换为负载均衡器的区域和账户 ID。
- JSON
-
-
{
"Version":"2012-10-17",
"Id": "AWSLogDeliveryWrite",
"Statement": [
{
"Sid": "AWSLogDeliveryAclCheck",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket",
"Condition": {
"StringEquals": {
"aws:SourceAccount": [
"012345678912"
]
},
"ArnLike": {
"aws:SourceArn": [
"arn:aws:logs:us-east-1:012345678912:*"
]
}
}
},
{
"Sid": "AWSLogDeliveryWrite",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/Prefix/AWSLogs/account-ID/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control",
"aws:SourceAccount": [
"012345678912"
]
},
"ArnLike": {
"aws:SourceArn": [
"arn:aws:logs:us-east-1:012345678912:*"
]
}
}
}
]
}
加密
您可以使用下列任何一种方式为 Amazon S3 访问日志存储桶启用服务器端加密:
† 使用网络负载均衡器访问日志时,您不能使用 Amazon 托管式密钥,而必须使用客户管理型密钥。
有关更多信息,请参阅《Amazon S3 用户指南》中的指定 Amazon S3 加密 (SSE-S3) 和使用 Amazon KMS 指定服务器端加密 (SSE-KMS)。
密钥策略必须允许服务对日志进行加密和解密。以下是示例策略。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*"
}
]
}
使用以下过程配置访问日志,以捕获请求信息并将日志文件传输到 S3 存储桶。
- Console
-
启用访问日志
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/。
-
在导航窗格中,选择负载均衡器。
-
选择您的负载均衡器的名称以打开其详细信息页面。
-
在属性选项卡上,选择编辑。
-
对于监控,打开访问日志。
-
对于 S3 URI,输入日志文件的 S3 URI。您指定的 URI 取决于您是否使用前缀。
-
选择保存更改。
- Amazon CLI
-
启用访问日志
使用带相关属性的 modify-load-balancer-attributes 命令。
aws elbv2 modify-load-balancer-attributes \
--load-balancer-arn load-balancer-arn \
--attributes \
Key=access_logs.s3.enabled,Value=true \
Key=access_logs.s3.bucket,Value=amzn-s3-demo-logging-bucket \
Key=access_logs.s3.prefix,Value=logging-prefix
- CloudFormation
-
启用访问日志
更新 AWS::ElasticLoadBalancingV2::LoadBalancer 资源以包括相关属性。
Resources:
myLoadBalancer:
Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
Properties:
Name: my-nlb
Type: network
Scheme: internal
Subnets:
- !Ref subnet-AZ1
- !Ref subnet-AZ2
SecurityGroups:
- !Ref mySecurityGroup
LoadBalancerAttributes:
- Key: "access_logs.s3.enabled"
Value: "true"
- Key: "access_logs.s3.bucket"
Value: "amzn-s3-demo-logging-bucket"
- Key: "access_logs.s3.prefix"
Value: "logging-prefix"