Elastic Load Balancing
传统负载均衡器
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

为 Classic Load Balancer 启用访问日志

要为负载均衡器启用访问日志,您必须指定负载均衡器将在其中存储日志的 Amazon S3 存储桶的名称。您还必须将一个存储桶策略附加到此存储桶,该策略向 Elastic Load Balancing 授予写入存储桶的权限。

重要

该存储桶与您的负载均衡器必须位于同一区域。该存储桶可由与拥有负载均衡器的账户不同的账户拥有。

步骤 1:创建 S3 存储桶

您可以使用 Amazon S3 控制台创建 S3 存储桶。如果您已有存储桶并要使用它存储访问日志,请跳过此步骤,并转到步骤 2:将策略附加到 S3 存储桶以向 Elastic Load Balancing 授予将日志写入存储桶的权限。

提示

如果您将使用控制台启用访问日志,则可跳过此步骤,并让 Elastic Load Balancing 为您创建具有所需权限的存储桶。如果您将使用 AWS CLI 启用访问日志,则必须创建存储桶并自行授予所需权限。

创建 Amazon S3 存储桶

  1. 通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

  2. 选择 Create Bucket

  3. Create a Bucket 页上,执行以下操作:

    1. 对于 Bucket Name,输入您的存储桶的名称 (例如 my-loadbalancer-logs)。此名称在 Amazon S3 内所有现有存储桶名称中必须唯一。在某些区域,可能对存储桶名称有其他限制。有关更多信息,请参阅 Amazon Simple Storage Service 开发人员指南 中的存储桶局限和限制

    2. 对于 Region,选择在其中创建负载均衡器的区域。

    3. 选择 Create

步骤 2:将策略附加到 S3 存储桶

创建或标识 S3 存储桶后,您必须将策略附加到存储桶。存储桶策略是 JSON 语句的集合,这些语句以访问策略语言编写,用于为存储桶定义访问权限。每个语句都包括有关单个权限的信息并包含一系列元素。

如果存储桶具有附加的策略,您可以将 Elastic Load Balancing 访问日志的语句添加到该策略。如果您这样做,则建议您评估生成的权限集,以确保它们适用于需要具有对访问日志的存储桶的访问权的用户。

提示

如果您将使用控制台启用访问日志,则可跳过此步骤,并让 Elastic Load Balancing 为您创建具有所需权限的存储桶。

将策略语句附加到存储桶

  1. 通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

  2. 选择存储桶,然后选择 Permissions

  3. 选择 Bucket Policy。如果存储桶具有已附加策略,您可以将所需的语句添加到现有策略中。

  4. 选择 Policy generator。在 AWS Policy Generator 页面上,执行以下操作:

    1. 对于 Select Type of Policy,选择 S3 Bucket Policy

    2. 对于 Effect,选择 Allow 以允许访问 S3 存储桶。

    3. 对于 Principal,键入 Elastic Load Balancing 的账户 ID 以向 Elastic Load Balancing 授予对 S3 存储桶的访问权限。使用与您的负载均衡器和存储桶所在区域对应的账户 ID。

      区域 区域名称 Elastic Load Balancing 账户 ID
      us-east-1 美国东部(弗吉尼亚北部) 127311923021
      us-east-2 美国东部(俄亥俄州) 033677994240
      us-west-1 美国西部(加利福尼亚北部) 027434742980
      us-west-2 美国西部(俄勒冈) 797873946194
      ca-central-1 加拿大 (中部) 985666609251
      eu-central-1 欧洲(法兰克福) 054676820928
      eu-west-1 欧洲(爱尔兰) 156460612806
      eu-west-2 欧洲 (伦敦) 652711504416
      eu-west-3 欧洲 (巴黎) 009996457667
      ap-northeast-1 亚太区域(东京) 582318560864
      ap-northeast-2 亚太区域(首尔) 600734575887
      ap-southeast-1 亚太区域(新加坡) 114774131450
      ap-southeast-2 亚太区域(悉尼) 783225319266
      ap-south-1 亚太地区(孟买) 718504428378
      sa-east-1 南美洲(圣保罗) 507241528517
      us-gov-west-1* AWS GovCloud(美国) 048591011584
      cn-north-1** 中国(北京) 638102146993
      cn-northwest-1** 中国 (宁夏) 037604701340

      * 此区域需要单独的账户。有关更多信息,请参阅 AWS GovCloud(美国)

      ** 此区域需要单独的账户。有关更多信息,请参阅中国(北京)

    4. 对于 Actions,选择 PutObject 以允许 Elastic Load Balancing 将对象存储在 S3 存储桶中。

    5. 对于 Amazon Resource Name (ARN),采用以下格式键入 S3 存储桶的 ARN:

      arn:aws-cn:s3:::bucket/prefix/AWSLogs/aws-account-id/*

      您必须指定拥有负载均衡器的 AWS 账户的 ID,并且不应包括连字符。例如:

      arn:aws-cn:s3:::my-loadbalancer-logs/my-app/AWSLogs/123456789012/*

      请注意,如果您使用的是 us-gov-west-1 区域,请在 ARN 中使用 arn:aws-us-gov: 而非 arn:aws-cn:

    6. 依次选择 Add StatementGenerate Policy。该策略文档应该类似于以下内容:

      { "Id": "Policy1429136655940", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1429136633762", "Action": [ "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws-cn:s3:::my-loadbalancer-logs/my-app/AWSLogs/123456789012/*", "Principal": { "AWS": [ "797873946194" ] } } ] }
    7. 如果您创建新的存储桶策略,请复制整个策略文档,然后选择 Close

      如果您正在编辑现有存储桶策略,请复制策略文档中的新语句 (Statement 元素的 [ 和 ] 之间的文本),然后选择 Close

  5. 返回 Amazon S3 控制台,并将策略粘贴到适当的文本区域中。

  6. 选择 Save

步骤 3:启用访问日志

您可以使用 AWS 管理控制台或 AWS CLI 启用访问日志。请注意,在使用控制台启用访问日志时,您可以让 Elastic Load Balancing 为您创建带负载均衡器写入存储桶所需权限的存储桶。

使用以下示例捕获日志并每 60 分钟 (默认间隔) 将日志传输到 S3 存储桶一次。

使用控制台为负载均衡器启用访问日志

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格上的 LOAD BALANCING 下,选择 Load Balancers

  3. 选择您的负载均衡器。

  4. 描述选项卡上,选择配置访问日志

  5. Configure Access Logs 页面上,执行以下操作:

    1. 选择 Enable access logs

    2. Interval 保留为默认设置 60 minutes

    3. 对于 S3 Location,键入 S3 存储桶的名称,包括前缀 (例如,my-loadbalancer-logs/my-app)。您可以指定现有存储桶的名称或新存储桶名称。

    4. (可选) 如果存储桶不存在,请选择 Create this location for me。您必须指定在 Amazon S3 中的所有现有存储桶名称中唯一的名称,并遵循 DNS 命名约定。有关更多信息,请参阅 Amazon Simple Storage Service 开发人员指南 中的存储桶命名规则

    5. 选择 Save

使用 AWS CLI 为负载均衡器启用访问日志

首先,创建一个 .json 文件,该文件使 Elastic Load Balancing 能够捕获日志并每 60 分钟将这些日志传输到您为日志创建的 S3 存储桶一次:

{ "AccessLog": { "Enabled": true, "S3BucketName": "my-loadbalancer-logs", "EmitInterval": 60, "S3BucketPrefix": "my-app" } }

要启用访问日志,请在 modify-load-balancer-attributes 命令中指定 .json 文件,如下所示:

aws elb modify-load-balancer-attributes --load-balancer-name my-loadbalancer --load-balancer-attributes file://my-json-file.json

以下为响应示例:

{ "LoadBalancerAttributes": { "AccessLog": { "Enabled": true, "EmitInterval": 60, "S3BucketName": "my-loadbalancer-logs", "S3BucketPrefix": "my-app" } }, "LoadBalancerName": "my-loadbalancer" }

步骤 4:验证负载均衡器是否在 S3 存储桶中创建了测试文件

为负载均衡器启用访问日志之后,Elastic Load Balancing 会验证 S3 存储桶并创建测试文件。您可以使用 S3 控制台验证是否已创建测试文件。

验证 Elastic Load Balancing 是否在 S3 存储桶中创建了测试文件

  1. 通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

  2. 选择您的 S3 存储桶。

  3. 导航到测试日志文件。路径应如下所示:

    my-bucket/prefix/AWSLogs/123456789012/ELBAccessLogTestFile

管理保存访问日志的 S3 存储桶

启用访问日志记录之后,要删除存有访问日志的存储桶,请确保首先禁用访问日志记录。否则,如果在一个不属于您的 AWS 账户中创建了具有相同名称和必要的存储桶策略的新存储桶,Elastic Load Balancing 会将您的负载均衡器的访问日志写入这个新存储桶。