如何通过Terraform为AWS Beanstalk环境开启CloudWatch日志流?
解决Terraform配置AWS Beanstalk CloudWatch日志流的问题
这个功能可以通过Terraform实现,只是不在aws_elastic_beanstalk_environment的顶层参数里,需要通过**option_settings配置块**指定Beanstalk的配置选项,对应控制台里的“配置”页面设置。
具体要配置aws:elasticbeanstalk:cloudwatch:logs命名空间下的选项,示例代码如下:
resource "aws_elastic_beanstalk_environment" "your_env" { name = "your-beanstalk-env" application = aws_elasticbeanstalk_application.your_app.name solution_stack_name = "64bit Amazon Linux 2 v3.4.10 running Python 3.8" # 根据你的技术栈调整 # 开启CloudWatch日志流核心配置 option_settings { namespace = "aws:elasticbeanstalk:cloudwatch:logs" name = "StreamLogs" value = "true" } # 可选:指定自定义日志组名称(默认会自动生成带环境名前缀的日志组) option_settings { namespace = "aws:elasticbeanstalk:cloudwatch:logs" name = "LogGroupName" value = "/aws/elasticbeanstalk/your-beanstalk-env/logs" } # 可选:设置日志保留天数(比如30天) option_settings { namespace = "aws:elasticbeanstalk:cloudwatch:logs" name = "RetentionInDays" value = "30" } # 可选:针对特定容器/组件开启日志流(以Python容器为例) option_settings { namespace = "aws:elasticbeanstalk:container:python" name = "ApplicationLogStream" value = "true" } }
关键说明:
StreamLogs设为true就是开启控制台里的“CloudWatch日志流”开关;- 确保Beanstalk实例使用的IAM角色(默认是
aws-elasticbeanstalk-ec2-role)拥有足够的CloudWatch日志写入权限,默认的Beanstalk实例角色策略已经包含了必要权限; - 不同技术栈(如Java、Node.js)对应的容器日志配置命名空间会有差异,需要根据你的实际栈调整对应
option_settings。
内容的提问来源于stack exchange,提问作者SD.
相关产品推荐
相关产品推荐

