100 个 AWS DevOps 面试问题及答案
目录
- 常规 AWS DevOps 问题
- CI/CD 管道问题
- 容器化和编排
- AWS Elastic Beanstalk 和 Lambda
- AWS EC2 和负载均衡
- AWS CloudFormation 和自动化
- AWS 监控和日志记录
- AWS IAM 和安全性
- 版本控制和 AWS CodeCommit
- AWS Auto Scaling
- AWS S3 和存储
- AWS 网络
- AWS 弹性容器服务 (ECS)
- AWS 弹性 Kubernetes 服务 (EKS)
- AWS Lambda 和无服务器
- AWS 监控和故障排除
- AWS 弹性负载均衡器 (ELB)
- AWS 弹性块存储 (EBS) 和数据库
常规 AWS DevOps 问题
-
什么是 DevOps?
DevOps 是一套集成软件开发 (Dev) 和 IT 运营 (Ops) 的实践,旨在缩短开发生命周期,并根据业务目标频繁交付功能、修复和更新。 -
使用 AWS 进行 DevOps 有哪些好处?
AWS 提供弹性计算云 (EC2)、弹性容器服务 (ECS) 和 Elastic Beanstalk 等灵活服务,有助于自动化和扩展开发和部署管道。其功能包括可扩展性、自动化、CI/CD、基础设施即代码 (IaC) 和监控工具。 -
AWS 中的基础设施即代码 (IaC) 是什么?
IaC 是指通过代码而非手动流程来管理和配置基础设施。在 AWS 中,您可以使用 AWS CloudFormation 和 AWS CDK(云开发工具包)来实现 IaC。 -
解释一下 DevOps 和 Agile 之间的区别。Agile
是一种专注于迭代开发的方法,而 DevOps 是一种弥合开发和运维之间差距的实践,旨在确保更快、更可靠的软件交付。 -
有哪些流行的 AWS DevOps 工具?
- AWS CodePipeline(CI/CD)
- AWS CodeBuild(构建自动化)
- AWS CodeDeploy(部署自动化)
- AWS CloudFormation (IaC)
- Amazon ECS/EKS(容器编排)
CI/CD 管道问题
-
什么是 CI/CD 流水线?
CI/CD 流水线可自动执行软件开发的各个步骤,从集成、测试、部署到交付,确保应用程序的持续改进和交付。 -
如何在 AWS 中实现 CI/CD 管道?
您可以使用 AWS CodePipeline 创建 CI/CD 管道。将 CodeCommit(源代码控制)、CodeBuild(构建)和 CodeDeploy(部署)组合起来,即可形成完整的管道。 -
解释一下 AWS CodePipeline。AWS
CodePipeline 是一种持续集成和持续交付服务,可帮助在每次代码更改时自动执行发布流程的构建、测试和部署阶段。 -
什么是 AWS CodeBuild?
AWS CodeBuild 是一项完全托管的构建服务,可编译您的源代码、运行测试并生成可供部署的工件。 -
什么是 AWS CodeDeploy?
AWS CodeDeploy 可自动将代码部署到任何实例,包括 Amazon EC2 实例和本地服务器。
容器化和编排
-
什么是容器?
容器是轻量级的独立可执行包,包含运行应用程序所需的一切,包括代码、运行时、库和系统依赖项。 -
Docker 和虚拟机 (VM) 有什么区别?
Docker 容器在操作系统级别进行虚拟化,而虚拟机在硬件级别进行虚拟化。容器更轻量级,共享主机操作系统内核,而每个虚拟机都运行完整的客户操作系统。 -
如何在 AWS 中编排容器?
使用 Amazon ECS(弹性容器服务)或 Amazon EKS(弹性 Kubernetes 服务)来管理和编排容器化应用程序。 -
什么是 Amazon ECS?
Amazon ECS 是一种完全托管的容器编排服务,可让您运行、停止和管理集群中的容器。 -
什么是 Amazon EKS?
Amazon EKS 是一项托管服务,可让您轻松在 AWS 上运行 Kubernetes,而无需安装和操作您自己的 Kubernetes 控制平面。
AWS Elastic Beanstalk 和 Lambda
-
什么是 AWS Elastic Beanstalk?
AWS Elastic Beanstalk 是一个平台即服务 (PaaS),允许您使用 Java、Python、Ruby 等各种语言部署和管理应用程序,而无需担心基础设施。 -
如何使用 Elastic Beanstalk 部署应用程序?
您可以通过 Elastic Beanstalk 的管理控制台、CLI 或 CI/CD 管道部署应用程序。上传您的应用程序并指定环境配置。 -
什么是 AWS Lambda?
AWS Lambda 是一种无服务器计算服务,它根据事件运行您的代码并自动为您管理计算资源。 -
AWS Lambda 如何与 CI/CD 集成?
您可以使用 AWS CodePipeline、CodeBuild 和 CodeDeploy 将 AWS Lambda 函数部署为 CI/CD 管道的一部分。此外,Lambda 函数还可以由 CodeCommit 或 GitHub 等存储库中的更改触发。 -
AWS Lambda 有哪些限制?
AWS Lambda 有一些限制,例如最长执行时间为 15 分钟、内存为 10 GB,以及对某些库和依赖项的支持有限。
AWS EC2 和负载均衡
-
什么是 Amazon EC2?
Amazon Elastic Compute Cloud (EC2) 是一种在云中提供可调整大小计算容量的 Web 服务。 -
什么是 EC2 实例?
EC2 实例是 AWS 中的虚拟服务器,可用于在 AWS 云上运行应用程序。 -
如何自动扩展 EC2 实例?
使用 Auto Scaling 组和 AWS CloudWatch 监控您的实例,并根据预定义条件(例如 CPU 利用率)自动扩展实例数量。 -
什么是弹性负载均衡器 (ELB)?
ELB 是一种自动在多个 EC2 实例、容器或 IP 地址之间分配传入流量以确保高可用性的服务。 -
AWS 中的负载均衡器有哪些类型?
- 应用程序负载均衡器 (ALB)
- 网络负载均衡器 (NLB)
- 网关负载均衡器 (GLB)
AWS CloudFormation 和自动化
-
什么是 AWS CloudFormation?
AWS CloudFormation 是一项服务,允许您使用模板对 AWS 基础设施进行建模、配置和管理。 -
CloudFormation 如何帮助 DevOps?
它支持基础设施的自动化配置和管理,减少手动工作量和错误,同时确保开发、预发布和生产环境的一致性。 -
什么是 CloudFormation 堆栈?
CloudFormation 堆栈是 AWS 资源的集合,您可以使用 CloudFormation 将其作为单个单元进行管理。 -
如何更新 CloudFormation 堆栈?
通过修改模板并应用更改来更新 CloudFormation 堆栈。AWS 将自动确定所需的更改并应用它们。 -
可以回滚 CloudFormation 更改吗?
可以,CloudFormation 支持失败回滚。如果任何资源创建或更新失败,它将自动将所有更改回滚到上次已知的良好状态。
AWS 监控和日志记录
-
什么是 AWS CloudWatch?
AWS CloudWatch 是一种监控和管理服务,可为 AWS 资源、应用程序和服务提供数据和可操作的见解。 -
什么是 CloudWatch 警报?
CloudWatch 警报会随时间监控指标,并根据预定义的阈值执行操作,例如发送通知或扩展 EC2 实例。 -
AWS CloudTrail 如何帮助监控?
AWS CloudTrail 记录您账户中的 API 调用,让您可以查看用户活动和资源变更,从而有助于审计和合规性。 -
什么是 AWS X-Ray?
AWS X-Ray 通过跟踪请求和监控其性能,帮助开发人员分析和调试分布式应用程序(例如使用微服务架构构建的应用程序)。 -
如何将 CloudWatch 与 CI/CD 管道集成?
使用 CloudWatch 指标和警报来触发 CI/CD 管道中的自动部署或回滚等操作。
AWS IAM 和安全性
-
什么是 AWS IAM?
AWS Identity and Access Management (IAM) 是一项服务,可让您安全地管理对 AWS 服务和资源的访问。 -
什么是 IAM 角色?
IAM 角色用于向用户或服务委派访问权限,使他们无需长期凭证即可与 AWS 服务进行交互。 -
什么是 IAM 策略?
IAM 策略是一个 JSON 文档,它定义权限并控制允许或拒绝对 AWS 资源执行的操作。 -
如何在 AWS 中保护您的 CI/CD 管道?
使用 IAM 角色和策略,确保只有授权用户和服务才能访问您的 CI/CD 管道。对敏感数据实施加密,并使用日志记录来监控访问。 -
什么是 AWS KMS?
AWS 密钥管理服务 (KMS) 是一种托管服务,可让您创建和管理加密密钥并控制跨 AWS 服务的加密使用。
AWS 安全性和最佳实践
-
什么是 AWS Shield?
AWS Shield 是一项托管的分布式拒绝服务 (DDoS) 防护服务,可保护在 AWS 上运行的应用程序。AWS Shield 分为两个级别:标准级和高级级。 -
什么是 AWS WAF?
AWS Web 应用程序防火墙 (WAF) 允许您定义允许或阻止特定请求的规则,从而帮助保护您的 Web 应用程序免受 SQL 注入和跨站点脚本 (XSS) 等常见 Web 漏洞的攻击。 -
如何在 AWS 中保护传输中和静态数据?
对于传输中的数据,请使用 SSL/TLS 加密。对于静态数据,AWS 提供 S3 服务器端加密 (SSE)、AWS KMS 和 EBS 加密等服务。 -
如何在 AWS 中实施 MFA?
AWS 提供多重身份验证 (MFA),通过要求访问 AWS 服务时提供两种身份证明来增加额外的安全保障。您可以通过 IAM 为用户账户启用该功能。 -
什么是 AWS Secrets Manager?
AWS Secrets Manager 可帮助您安全地存储和管理访问 AWS 服务或第三方应用程序所需的凭证、API 密钥和其他机密信息。
版本控制和 AWS CodeCommit
-
什么是 AWS CodeCommit?
AWS CodeCommit 是一项完全托管的源代码控制服务,可让您在云中私密存储和管理 Git 存储库。 -
AWS CodeCommit 如何与 CI/CD 管道集成?
AWS CodeCommit 与 AWS CodePipeline 无缝集成,当更改提交到存储库时触发构建和部署。 -
CodeCommit 和 GitHub 有什么区别?
两者都是基于 Git 的版本控制系统。CodeCommit 完全由 AWS 管理,并与 AWS 服务更紧密地集成;而 GitHub 是一项外部 Git 托管服务,具有更广泛的社区功能。 -
如何自动将代码从 CodeCommit 部署到 EC2 实例?
您可以使用 CodePipeline、CodeDeploy 和 CodeCommit 自动执行代码部署。其中,CodePipeline 在推送提交时触发部署,而 CodeDeploy 则将代码部署到 EC2 实例。 -
您可以将 CodeCommit 与 Jenkins 等外部 CI/CD 工具集成吗?
是的,您可以使用 AWS SDK 和 API 将 CodeCommit 与 Jenkins 集成。Jenkins 可以轮询存储库并根据更改触发构建。
AWS Auto Scaling
-
什么是 AWS Auto Scaling?
AWS Auto Scaling 会自动调整您的资源容量,以尽可能低的成本保持性能和可用性。 -
Auto Scaling 如何与 EC2 配合使用?
您可以创建 Auto Scaling 组,定义扩展策略(例如根据 CPU 使用率进行扩展),AWS 将根据需要自动增加或减少 EC2 实例的数量。 -
垂直缩放和水平缩放有什么区别?
- 垂直扩展是指增加实例的大小(例如,CPU,内存)。
- 水平扩展是指添加更多实例来处理增加的流量。
-
Auto Scaling 中的启动配置是什么?
启动配置是 Auto Scaling 组用于启动 EC2 实例的模板,用于指定实例类型、AMI、密钥对和安全组。 -
如何使用 Auto Scaling 和 ELB 搭建高可用性系统?创建
一个跨多个可用区 (AZ) 的 Auto Scaling 组,将其与弹性负载均衡器 (ELB) 关联,并配置运行状况检查,以确保流量仅路由到运行正常的实例。
AWS S3 和存储
-
什么是 Amazon S3?
Amazon 简单存储服务 (S3) 是一种对象存储服务,可提供可扩展性、安全性和性能,用于从任何位置存储任意数量的数据。 -
S3 中有哪些不同的存储类别?
- S3 标准
- S3 智能分层
- S3 标准-IA(不频繁访问)
- S3 单区-IA
- S3 Glacier
- S3 Glacier Deep Archive
-
S3 中的版本控制是什么?
S3 版本控制允许您在同一个存储桶中保留一个对象的多个版本,以防止意外删除或覆盖。 -
S3 加密如何工作?
S3 支持使用 S3 托管密钥 (SSE-S3)、AWS KMS 托管密钥 (SSE-KMS) 和客户提供密钥 (SSE-C) 进行服务器端加密 (SSE)。它还支持在 S3 外部处理加密的客户端加密。 -
如何管理 S3 存储桶的权限?
可以使用存储桶策略、ACL(访问控制列表)和 IAM 策略来管理 S3 存储桶的权限。
AWS 网络
-
AWS 中的 VPC 是什么?
Amazon Virtual Private Cloud (VPC) 允许您在 AWS 云中创建一个私有的、隔离的部分,您可以在其中定义的虚拟网络中启动 AWS 资源。 -
VPC 中的子网是什么?
子网是 VPC 中的 IP 地址范围。您可以将 AWS 资源启动到子网中。子网可以是公有的(可以访问互联网),也可以是私有的(无法访问互联网)。 -
什么是互联网网关 (IGW)?
IGW 是一个水平扩展、冗余且高可用的 VPC 组件,支持 VPC 中的实例与互联网之间的通信。 -
什么是 NAT 网关?
NAT 网关允许私有子网中的实例访问互联网,同时阻止来自互联网的入站流量。 -
AWS 中的安全组和 NACL 是什么?
- 安全组充当实例级别的虚拟防火墙,控制入站和出站流量。
- 网络访问控制列表 (NACL) 在子网级别提供无状态流量过滤。
-
什么是 VPC 对等连接?
VPC 对等连接是两个 VPC 之间的网络连接,允许您使用 IPv4 或 IPv6 地址在它们之间私下路由流量。 -
什么是 AWS Direct Connect?
AWS Direct Connect 是从您的本地到 AWS 的专用网络连接,可实现更快、更安全的数据传输。 -
如何在 VPC 中实现高可用性?
在一个区域内使用多个可用区 (AZ),设置负载均衡器,并为关键资源设计故障转移机制。 -
什么是 Amazon Route 53?
Amazon Route 53 是一种可扩展的 DNS 和域名注册服务,可将最终用户请求路由到 AWS 服务或其他互联网资源。 -
如何在 AWS 中实现多区域架构?
使用 Route 53 等 AWS 服务进行 DNS 故障转移,使用 S3 跨区域复制等服务跨区域复制数据,并利用 Amazon DynamoDB 全局表等多区域数据库。
AWS 弹性容器服务 (ECS)
-
什么是 Amazon ECS?
Amazon Elastic Container Service (ECS) 是一种完全托管的容器编排服务,可帮助您在 AWS 上运行和扩展容器化应用程序。 -
ECS 和 EKS 有什么区别?
ECS 是用于容器编排的原生 AWS 服务,而 EKS 是完全托管的 Kubernetes 服务,可在 AWS 中提供 Kubernetes 控制平面。 -
什么是 ECS 任务?
ECS 任务是任务定义的运行实例,其中包括 Docker 容器配置、网络以及容器的其他设置。 -
ECS 中的 Fargate 启动类型是什么?
AWS Fargate 是一种用于容器的无服务器计算引擎,可让您运行容器而无需管理底层基础设施。 -
ECS 如何与 IAM 集成?
ECS 允许您将 IAM 角色分配给任务,从而使您的容器能够安全地访问 AWS 资源。
AWS 弹性 Kubernetes 服务 (EKS)
-
什么是 Amazon EKS?
Amazon Elastic Kubernetes Service (EKS) 是一项完全托管的服务,可让您在 AWS 上运行 Kubernetes,而无需管理 Kubernetes 控制平面。 -
EKS 和 Kubernetes 有什么区别?
EKS 是一项托管服务,可为您处理 Kubernetes 控制平面,而 Kubernetes 则需要您手动设置和管理控制平面。EKS 还提供与 IAM 和 VPC 等 AWS 服务的集成。 -
如何将 Kubernetes 应用程序部署到 EKS?
您可以使用 kubectl 将 Kubernetes 应用程序部署到 EKS。首先,设置您的 EKS 集群,配置 kubectl 以使用它,然后应用您的 Kubernetes 清单或 Helm 图表。 -
EKS 如何与 IAM 集成?
EKS 与 IAM 集成,以控制对 Kubernetes 控制平面的访问。IAM 角色还可以映射到 Kubernetes 服务账户,以管理工作负载的权限。 -
什么是 eksctl?
eksctl 是一个命令行工具,可简化 Amazon EKS 集群的创建、管理和删除。它通过提供简单的界面,简化了设置 EKS 集群的复杂性。
AWS Lambda 和无服务器
-
AWS Lambda 的主要用例是什么?
- 运行事件驱动的工作负载
- 处理数据流(例如 AWS Kinesis、DynamoDB 流)
- 使用 AWS API Gateway 构建 API
- 自动化基础设施管理任务
-
AWS Lambda 如何处理扩展?
AWS Lambda 会根据传入请求或事件的数量自动扩展,并根据需要创建尽可能多的函数实例来处理负载。 -
AWS Lambda 中的冷启动是什么?
当由于负载增加或函数一段时间未调用而初始化新的 Lambda 实例时,就会发生冷启动。这可能会导致执行略微延迟。 -
如何减少 Lambda 中的冷启动延迟?
您可以通过优化函数的内存分配、保持较小的函数大小、使用预置并发或定期调用函数来保持函数“热”状态,从而减少冷启动。 -
Lambda 中的预配置并发是什么?
预配置并发可确保一定数量的 Lambda 实例始终处于热备状态并随时准备处理请求,从而减少冷启动问题。
AWS 监控和故障排除
-
如何监控 AWS Lambda 函数?
使用 AWS CloudWatch 监控 Lambda 函数。CloudWatch 提供调用次数、持续时间、错误计数和限制等指标。 -
什么是 AWS CloudTrail?它如何帮助审计?
AWS CloudTrail 会记录您 AWS 账户内进行的所有 API 调用,从而帮助您进行审计、合规性和安全监控。 -
如何排查 AWS CodeDeploy 中的部署失败?
您可以通过检查 AWS CodeDeploy 中的部署日志、查看 CloudWatch 中的应用程序日志以及验证部署配置来排查部署失败的问题。 -
什么是 AWS Trusted Advisor?
AWS Trusted Advisor 是一种在线资源,可提供实时指导,帮助您遵循 AWS 在成本优化、性能、安全性和容错方面的最佳实践。 -
什么是 CloudWatch Logs?它们如何帮助监控?
CloudWatch Logs 捕获来自 AWS 服务和应用程序的日志数据。它们有助于实时监控、故障排除以及分析应用程序和系统日志。
AWS 弹性负载均衡器 (ELB)
-
应用程序负载均衡器 (ALB) 和网络负载均衡器 (NLB) 之间有什么区别?
- ALB 在应用层(第 7 层)运行,用于路由 HTTP/HTTPS 流量。
- NLB 在传输层(第 4 层)运行,用于超低延迟和高吞吐量连接,处理 TCP/UDP 流量。
-
应用程序负载均衡器 (ALB) 如何处理路由?
ALB 根据 URL 路径、主机名和 HTTP 标头等规则路由传入流量。它提供粘性会话和 SSL 终止等高级功能。 -
什么是 SSL 终止?ELB 如何处理它?
SSL 终止是指在负载均衡器级别(而非后端实例)解密 SSL 流量的过程。ELB 可以为您管理 SSL 证书并终止 SSL 连接。 -
如何使用应用程序负载均衡器配置粘性会话?
您可以通过配置目标组将用户会话绑定到特定的后端实例,为 ALB 启用粘性会话(会话亲和性)。 -
什么是跨区域负载均衡?
跨区域负载均衡可确保传入流量均匀分布在注册到负载均衡器的所有实例之间,无论它们位于哪个可用区域。
AWS 弹性块存储 (EBS) 和数据库
-
什么是 Amazon EBS?
Amazon Elastic Block Store (EBS) 提供用于 EC2 实例的持久性块存储卷。EBS 卷可用作需要频繁更新的数据(例如数据库或日志文件)的主存储。 -
EBS 卷有哪些不同类型?
- 通用固态硬盘 (gp3/gp2)
- 预配置 IOPS SSD(io2/io1)
- 吞吐量优化 HDD (st1)
- 冷硬盘 (sc1)
-
什么是 Amazon RDS?
Amazon Relational Database Service (RDS) 是一项托管服务,可让您轻松在云中设置、操作和扩展关系数据库。它支持 MySQL、PostgreSQL、MariaDB 和 Oracle 等多种引擎。 -
什么是 Amazon Aurora?
Amazon Aurora 是一个完全托管的、与 MySQL 和 PostgreSQL 兼容的关系数据库,可提供性能改进和高可用性。 -
什么是 Amazon DynamoDB?
Amazon DynamoDB 是一种完全托管的 NoSQL 数据库服务,可提供快速、可预测的性能以及无缝的可扩展性,专为高可用性应用程序而设计。
这 100 个问题涵盖了 AWS DevOps 的广泛主题,从基础概念到高级实践,应有尽有。如果您想了解任何特定主题的更详细解释,或者还有其他问题,请告诉我!
👤 作者

加入我们的电报社区||在 GitHub 上关注我以获取更多 DevOps 内容!
文章来源:https://dev.to/prodevopsguytech/100-aws-devops-interview-questions-and-answers-3g1i