如何使用Ansible配置AWS Application Load Balancer并开启访问日志?
前置准备
首先完成开启日志前的必要准备:
- 提前创建与ALB同区域的S3存储桶
- 配置S3桶策略,允许ALB服务主体写入日志,核心权限配置需包含对
s3:PutObject操作的授权
配置修改方案
你当前使用的elb_application_lb模块原生支持ALB访问日志配置,仅需要在原有模块参数中新增access_logs相关配置项即可,无需新增额外任务。修改后的完整配置如下:
- name: Add HTTP listener rules and enable ALB access log elb_application_lb: state: present name: "{{ albinfo.load_balancer_name }}" subnets: - "{{ albinfo.availability_zones[0].subnet_id }}" - "{{ albinfo.availability_zones[1].subnet_id }}" - "{{ albinfo.availability_zones[2].subnet_id }}" security_groups: - "{{ albinfo.security_groups[0] }}" # 新增访问日志配置开始 access_logs: enabled: yes s3_bucket_name: "替换为你的S3桶名称" s3_prefix: "alb-logs" # 可选配置,指定日志在桶内的存储前缀,不需要可删除 # 新增访问日志配置结束 listeners: - Protocol: HTTP Port: 80 DefaultActions: - Type: forward TargetGroupName: default Rules: - Conditions: - Field: host-header Values: "{{ item.url }}" Priority: "{{ item.priority }}" Actions: - TargetGroupName: "{{ item.name }}" Type: forward purge_listeners: no with_items: "{{ regions }}"
注意事项
- S3桶必须与ALB处于同一AWS区域,否则日志无法正常投递
- 若执行时出现权限报错,优先检查S3桶策略是否配置正确
- 确保所用Ansible的
amazon.aws集合版本≥1.0.0,可正常识别access_logs参数
内容的提问来源于stack exchange,提问作者Pankaj Ambilduke
相关产品推荐
相关产品推荐

