You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu EC2实例Cloud-Init配置Nginx与AWSLogs遇阻求助

解决方案

核心问题修复

  1. 合并Cloud-Init模块:Cloud-Init的YAML配置中,write_files和runcmd每个模块仅能定义一次,需将多段操作合并到同一个列表内。
  2. 非交互安装AWSLogs:通过设置环境变量和预配置参数,跳过安装过程中的交互步骤,避免EOF错误。

完整Cloud-Init配置脚本

#cloud-config
package_update: true
package_upgrade: true

write_files:
  # 自定义Nginx配置文件
  - path: /etc/nginx/nginx.conf
    content: |
      user www-data;
      worker_processes auto;
      pid /run/nginx.pid;
      include /etc/nginx/modules-enabled/*.conf;

      events {
          worker_connections 1024;
      }

      http {
          sendfile on;
          tcp_nopush on;
          types_hash_max_size 2048;
          include /etc/nginx/mime.types;
          default_type application/octet-stream;

          server {
              listen 80 default_server;
              listen [::]:80 default_server;

              root /var/www/html;
              index index.html index.htm index.nginx-debian.html;

              server_name _;

              location / {
                  try_files $uri $uri/ =404;
              }
          }
      }
    owner: root:root
    permissions: '0644'

  # 自定义AWSLogs配置文件
  - path: /etc/awslogs/awslogs.conf
    content: |
      [general]
      state_file = /var/lib/awslogs/agent-state

      [/var/log/nginx/access.log]
      file = /var/log/nginx/access.log
      log_group_name = /aws/ec2/nginx/access-log
      log_stream_name = {instance_id}
      region = us-east-1  # 替换为你的AWS区域
    owner: root:root
    permissions: '0644'

runcmd:
  # 安装Nginx
  - apt-get install -y nginx

  # 重启Nginx使配置生效
  - systemctl restart nginx
  - systemctl enable nginx

  # 非交互安装AWSLogs
  - curl -s https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
  - DEBIAN_FRONTEND=noninteractive python3 awslogs-agent-setup.py -n -r us-east-1 -c /etc/awslogs/awslogs.conf
  - rm -f awslogs-agent-setup.py

  # 重启AWSLogs服务并设置开机启动
  - systemctl restart awslogs
  - systemctl enable awslogs

关键说明

  • 替换配置内容:将Nginx配置和AWSLogs配置中的区域、日志组名称等占位内容替换为你的实际需求。
  • IAM权限:确保EC2实例关联的IAM角色拥有CloudWatch日志推送权限(如CloudWatchLogsFullAccess或自定义精细权限),否则AWSLogs无法正常工作。
  • 区域一致性:AWSLogs安装命令中的-r参数需与配置文件内的region字段保持一致。
  • 非交互参数:awslogs-agent-setup.py的-n参数强制非交互模式,-c指定预配置文件,直接跳过手动输入环节。

内容的提问来源于stack exchange,提问作者Nayden Van

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:24:10