type
status
date
slug
summary
tags
category
icon
password
本文整理于 2025 年 9 月,截止到写作时间点为止。
本文将整理笔者自身备考DVA/SOA/DEA考试过程中错过的题的关键点以及知识漏洞,供大家参考复习。
本文内容的正确性与非过时性并未经过AI核查,全是题库里的解释,随着AWS技术本身的演进,其中的一些说法难免会和事实出现偏差,阅读时请注意这一点。
- <ACM> ACM证书是区域级的,如果在多区域有ALB,则需要给每个区域设定证书
- <Amplify> 可以给Amplify的yml文件里添加测试阶段,就像CI流水线一样
- <API Gateway> API Gateway 的模拟集成(Mock Integration)或者叫请求映射模板是一种“无后端响应模拟工具”
- <API Gateway> API Gateway异步调用Lambda,发送请求时添加静态值为Event的标头X-Amz-Invocation-Type后,可实现异步调用立刻返回前端
- <API Gateway> 在给API Gateway发送请求时,带上标头Cache-control:max-age=0即可强制失效缓存
- <AppFlow> AppFlow是无需编程的 SaaS <-> AWS 数据流平台,支持双向数据同步,无需运维(例:AppFlow → 计划任务 → Salesforce → S3)
- <Athena> Athena通过工作组来分隔查询执行环境,对工作组添加标签后,可以通过IAM隔离不同用户之间对查询进度和历史的查看权限
- <Athena> Athena的查询结果可以保存在S3或视图上进行重复使用,尤其是物化视图支持增量更新缓存
- <Athena> 使用EXPLAIN ANALYZE+原始SQL语句查看Athena执行计划
- <Athena> 在Athena上创建工作组,可以选择使用AthenaSQL或者Spark之一作为分析引擎
- <Athena> Athena扫文件时是按照S3路径扫的,而和Glue爬虫定义个特定格式排除规则无关,建议在存储时就把不同文件格式分开保存
- <AutoScaling> ASG遵照最大扩展原则执行,假设有两个规则都在CPU见顶时分别扩展5台和10台,最终扩展10台
- <CloudFormation> CDK的Aspects可以检查规则,比如是否加密或贴标签,CDK断言模块用于单元测试
- <CloudFormation> 部署栈时指定 CAPABILITY_NAMED_IAM,允许 CloudFormation 创建/修改带显式名称的 IAM 角色、用户、策略(否则会失败)
- <CloudFormation> 使用AWS::Region伪参数可以让模板自动填充AWS区域变量
- <CloudFormation> CloudFormation可以生成SecretManager安全字符串保存在SM中,实现在infra构建阶段CICD内部生成RDS安全字符串
- <CloudFormation> CloudFormation的自定义资源可以给数据库设置用户,但是不要在一个Lambda里写多个账户的DB信息这样很麻烦
- <CloudFormation> CloudFormation引用API Gateway端点的方式,是引用AWS:StepFunctions:StateMachin资源的DefintionSubstitutions属性中的API端点
- <CloudFormation> CloudFormation StackSet 是用来实现跨账户、跨区域批量部署 CloudFormation Stack 的功能
- <CloudFormation> 在使用所有CDK命令之前需要cdk bootstrap准备S3桶等
- <CloudFormation> 当CF堆栈中的资源被引用导致堆栈删除失败时,可以修改模板,把这个资源改成Retain排除在删除范围之外
- <CloudFormation> 通过CloudFormation部署的Lambda函数,除非上传到S3的zip文件的路径更新,否则不会检测到文件本身的变更
- <CloudFormation> CloudFormation可以直接通过通知选项在部署完成后发消息给SNS
- <CloudFormation> 这些情况下堆栈会删除失败:S3桶里有东西,安全组和其他资源有绑定关系
- <CloudFormation> 在CloudFormation文件里给EC2安装软件后,需要执行cfn-signal命令对堆栈发出成功信号,防止阻塞
- <CloudFormation> CloudFormation在删除堆栈时可以通过Retain策略指定保留哪些资源
- <CloudFormation> 创建CF堆栈时将OnFailure设置为DO_NOTHING可以避免资源被删除用来排查问
- <CloudFront> 当内容返回CF时,通过添加Cache-Control:max-age的方式指定页面的TTL
- <CloudFront> 增加CDN缓存命中率的方法是,1.延长TTL,2.增加CF Origin Shield缓存层,这是在源之前的一层额外缓存
- <CloudFront> 最快速更新所有缓存的方法是让所有缓存失效
- <CloudFront> 和ALB一样,需要给CloudFront分发指定ALIAS记录才可以
- <CloudWatch> aws logs sociate-kms-key,为日志组绑定一个 CMK,用 KMS 进行服务端加密(SSE-KMS)
- <CloudWatch> 让CloudWatch Agent监控procstat插件的输出,可以实现当某个进程挂掉时,走EventBridge+Runbook重启进程
- <CloudWatch> CloudWatch Logs只有stats,没有groupby
- <CodeBuild> CodeBuild可以在buildspec.yaml中配置本地缓存防止频繁读取Code Artifact
- <CodeDeploy> 使用codedeploy-local命令可以在本地部署程序
- <DataStream> 检测DataStream数据量突然抖动的方法是在其后续部署Flink,使用RCF算法
- <DataStream> PutRecord可能会导致重复数据提交,对策是增加数据唯一ID后续删除重复数据
- <DataStream> DataStream无法将数据直接写入S3,配合Firehose的话,默认写入间隔是300秒需要按需调小
- <DataStream> 实时数据,如果数据源允许,可以直接流经Flink,再通过Firehose写入S3,这个管道延迟最低,而不需要先经过DataStream
- <DataZone> DataZone使用数据质量定义语言(DQDL)规则创建应用于特定Glue包的质量规则,每天运行,可将DataZone设置为Reshift的数据源
- <DMS> DMS的EC2需要安装在同步目标数据库所在的账号里,而不是同步源头的账号里
- <DMS> DMS使用CW的CDCLantencySource监控源数据端延迟
- <DMS> 将数据从RDS增量同步到S3数据湖的方式是DMS+CDC,并配合Glue实现自定义逻辑让数据落地S3
- <DynamoDB> Provisioned模式下可以使用AutoScaling,这个方式存在冷启动,和On-demand模式是两个模式,后者没有冷启动
- <DynamoDB> 可以用PartiQL查询JSON,而无需转化为其他格式灌入Redshift
- <DynamoDB> DynamoDB的BatchGetItem最多返回100条或16MB数据否则会报错,要采用指数退避,或使用SDK发请求,自带指数退避
- <DynamoDB> DynamoDB的DAX缓存更新能达到微秒级
- <DynamoDB> DynamoDB的ScanIndexForward 控制Query排序方向, false为降序
- <DynamoDB> DynamoDB会分摊吞吐量到每个分区上,所以单个分区一旦倾斜,则会导致过载错误
- <DynamoDB> DynamoDB Stream在触发Lambda之前,可以根据数据进行筛选,在满足条件时触发,以减少触发量
- <DynamoDB> DynamoDB的时间点恢复,比每日备份更及时
- <EBS> 将EBS从gp2直接改为gp3不会导致停机
- <EBS> EBS卷是可以通过直接修改扩展容量的
- <EBS> 对于gp2卷,增加容量可以提升iops
- <EBS> 使用DLM管理EBS快照的生命周期和跨区拷贝
- <EC2> 启动实例的命令是aws ec2 run-instances
- <EC2> 重启操作发生在同一台物理机,停止再启动则会改变物理机
- <ECR> ECR提供基本的安全扫描,如果想深入扫描,需要在CI Pipeline里新增阶段,用Lambda函数自定义扫描
- <ECS> ECS的PutClusterCapacityProviders API用来控制资源分配策略
- <EFS> 如果EFS的安全组不允许EC2访问2049,则无法挂载这个EFS
- <EKS> 为了让kubectl能和集群API通信,需要配置kubeconfig文件
- <ElastiCache> 单纯用来卸载数据库读请求的话,Redis太复杂,Memcached足够
- <ElastiCache> 把数据同时写入DB和缓存的策略很适合仪表盘类应用,叫做直写缓存
- <ElastiCache> Redis的集群机型可以不停机动态扩缩
- <ELB> 可以让ALB对80的监听转发到443,这样即保证了加密,又不影响以前写死了http的客户端
- <EventBridge> 可以将其他账户的EventBridge总线作为目标,从中央账户的EventBridge发送事件,此时中央账户需要权限访问其他账户
- <FinOps> 节省计划需要主动根据使用量购买,分为EC2节省计划和计算节省计划两种,后者也涵盖Lambda函数和Fargate等
- <FinOps> 用户定义的AWS成本分配标签需要先激活才能被统计
- <FinOps> 可以在管理员账户上禁用RI优惠共享,然后在每个账户上分别购买RI,可实现财务独立
- <Glue> Glue Connection 是 Glue 访问外部数据库的“通道配置对象”,它可以连接其他DB,然后由ETL任务把数据写入Redshift
- <Glue> Glue Flex可以用于执行开始和结束时间都可以很灵活的任务,成本很低
- <Glue> Glue数据质量规则转换是一系列DSL编写的断言,可以检查数据集的质量,反映在仪表盘上
- <Glue> Glue Stodio中的Detect PII转换可以用于隐私信息混淆
- <Glue> 可以让Glue爬虫爬到的数据存储在一个临时的Redshift表中,再通过后续拷贝过程装填入Redshift表,二者分开,防止重复执行时数据重复
- <Glue> 虽然可以让Glue爬虫排除特定格式文件,但把不同文件放在不同S3桶前缀下是最合理的做法
- <Glue> Glue Data Quality是数据质量检查工具,可通过Lambda进行API调用检查数据质量
- <Glue> Glue DynamicFrame相当于容错型Spark DataFrame,能并发读取大量不一致的小json文件
- <Glue> DataBrew使用NEST_TO_MAP将多列转换为JSON列
- <Glue> Glue的数据质量工具是专门用来做检查的,不是用来做PII混淆的,混淆需要GlueStudio
- <Glue> Glue爬虫将不同对象识别为一张表的标准是 - 一致的数据格式、压缩类型、表模式
- <Kenisis> KDS处理高吞吐量的情景,KPL比SDK好
- <KMS> 在加密S3上数据时,选择DSSE-KMS,代表双层加密,这不是密码学的安全加固,而是权限解耦 + 审计分层 + 租户分隔
- <KMS> KMS的密钥轮换周期无法设置为7天,在短时间内频繁更新密钥,需要手动重新生成密钥
- <KMS> 使用密钥材料手动创建的密钥,必须手动轮换
- <Lambda> 将一个函数的失败事件作为另一个Lambda函数的触发器,可以实现回退功能
- <Lambda> Lambda函数的requestID被定义在context参数中
- <Lambda> 如果Lambda函数配置为VPC模式,则必须有创建、描述、删除eni的权限,才能正常网络通信
- <Lambda> Lambda的事件源映射并发是SQS拉取消息时动态扩容的并发能力,用于吞吐控制,而预置并发是为了缩短冷启动时间所预留的实例数量,用于延迟优化
- <Lambda> Lambda容器镜像体积上限10GB,再大要用EFS
- <Lambda> Lambda的/tmp目录如果想实现写入时加密,需要使用KMS
- <Lambda> Lambda利用分配给新版本程序较小的权重监控错误,是成本最低的试错回滚策略
- <Lambda> 通过EFS或S3部署依赖包代码在Lambda中并不可用,只能通过Layer
- <Lambda> Lambda函数上需要配置权限才能被EventBridge调用
- <Logging> 将账户1的CW Logs日志发送到账户2的方法是,在账户1配置CW Logs提供跨账户访问,创建订阅筛选器,在账户2中创建KDS,并创建IAM角色信任策略,允许CW Logs将数据写入KDS
- <Logging> 创建CloudWatch Logs订阅筛选器,将日志发送到DataFirehose,并使用Splunk作为目标
- <Logging> VPC流日志可以以parquet的方式直接发送到S3
- <Logging> 实时监控CF日志,可以在CF分发上启动日志,传送给KDS流,再通过Lambda发送给OpenSearch,创建Dashboard
- <Logging> VPC流日志无法被修改格式,增加列必须重新生成新的流日志
- <MSK> MSK出现RootDiskUsed说明磁盘空间不足,可以把MSK的空间配置为自动增长
- <Neptune> Neptune是图数据库,支持Gremlin和SPARQL两种不同风格的查询语言
- <Networking> 流量从EC2出站时会找客户端的随机高位端口,所以要在NACL上允许这样的端口
- <OpenSearch> 如果数据最终已经进入了OpenSearch,则使用OpenSearch Dashboard做可视化最效率
- <Parameter Store> Parameter Store如果需要回滚、生命周期管理、或存储较大值,才升级为高级参
- <RDS> RDS可以使用IAM访问,具体是通过IAM创建临时token访问,这样无需长期凭证
- <RDS> 通过配置ParameterGroup的rds:force_ssl的方式强制和RDS进行TLS连接(客户端需要下载Amazon RDS CA根证书)
- <RDS> Aurora分为读写,只读,特定节点三种终结点,读写节点的CPU过高,可以通过ASG增加节点,用只读的连接字符串使用
- <RDS> Aurora MySQL的Backtrack功能能把数据库回退到指定时间点(秒),而无需使用备份
- <RDS> RDS数据库处于STORAGE_FULL状态表示磁盘已满,此时诸如备份之类的很多操作都会停止
- <Redshift> Redshift记录慢查询问题的系统表是STL_ALERT_EVENT_LOG
- <Redshift> Redshift对小表使用ALL分布有助于提升JOIN性能
- <Redshift> Redshift支持从DataStream里流式摄取数据,无需经过Firehose
- <Redshift> Redshift可以通过添加特殊策略的方式基于角色对特定的列加以混淆,以防止看到PII数据,保证不同角色看到的列不一样
- <Redshift> 为了避免多次要执行一条命令从S3 COPY数据到Reshift,可以把文件路径写进一个json清单文件里一次性加载
- <Redshift> Redshift ML是使用SQL语句直接训练模型,一切由Redshift托管,和用UDF调用SageMaker终结点是两回事
- <Redshift> Redshift Query Editor V2是一个Redshift的Web UI,封装了底层的EventBridge + Redshift Data API,可以跑定时任务
- <Redshift> ANALYZE COMPRESSION是Redshift中用来分析列存表中各列的最佳压缩编码方式的命令,用来优化老表
- <Redshift> Redshift可以使用数据共享机制访问另一个Redshift上的数据
- <Redshift> Redshift的排序键,会先按第一个排序,再按第二个排序,第一列必须是查询里最常见的排序条件,第二列只有第一列被使用时才生效
- <Route53> Route53的延迟策略路由并不能解决故障转移问题,需要使用GA
- <Route53> 实现双区域双主动故障转移,使用延迟路由+DNS故障转移,为每个区域的ALB创建同样的别名记录
- <S3> 可以通过 外部 -> S3端点 -> S3 Object Lambda -> S3 Lambda端点 -> S3数据 的路径,增设Lambda函数,在GET请求发生时进行数据预处理,比如删除敏感信息,或使用Comprehend识别敏感信息
- <S3> 将数据存储在Amazon Glacier Flexible Retrieval中,使用S3 Glacier Select扫描,是应对偶尔审计目的用的最具成本效益的方式
- <S3> S3存在BatchOperation功能,可以实现批量给对象替换标签等操作
- <S3> 在S3上启动静态网站时,如果希望域和子域都能访问同一网站,则需要建立两个桶,并配置重定向
- <S3> 将文件并发写入S3时,使用不同的前缀能提高并发上传速度,因为S3是按照前缀进行分片的
- <S3> SSE-S3不提供密钥审计功能,SSE-KMS可以
- <SAM> sam local start-api,本地模拟 API Gateway + Lambda 集成,进行 HTTP 请求调试
- <SAM> sam local invoke,本地运行单个 Lambda 函数(可指定事件文件)
- <SAM> sam sync --watch,监控代码变动,仅部署修改的 Lambda,加快迭代速度
- <SAM> AutoPublishAlias是SAM里AWS::Serverless::Function资源的一个属性,用来在每次部署时自动创建并发布Lambda新版本,并更新一个固定别名指向这个新版本
- <Secret Manager> Secret Manager自带跨区域复制机密功能,并使用KMS重新加密复制的机密
- <SQS> SQS可以开启SSE-SQS密钥实现消息加密
- <SQS> SQS使用StartMessageMoveTask API将消息从死信队列移动到SQS队列
- <SQS> 可以把SQS的消息发送给EventBridge,通过一个Lambda函数增强这个消息,再发给下游
- <StepFunction> StepFunction Map状态适合分布式批量处理大量文件加工任务
- <STS> STS服务的终结点分为全球终结点和每个区域的终结点,后者延迟低
- <VPC> 每个账户的VPC配额默认为5
- <X-Ray> X-Ray能自动为AWS服务添加区域注释,或者手动给自己的服务添加区域注释
- <X-Ray> 如果希望让X-Ray避免处理PII,应该手动安装SDK