DVA-C02重点记录

一、安全

1.1 Secrets Manager

跨账户,轮换是“Secrets Manager”的关键
基于此,AWS托管密钥可用于跨账户访问。
https://aws.amazon.com/blogs/security/how-to-access-secrets-across-aws-accounts-by-attaching-resource-based-policies/
Secrets Manager 中的最大存储大小为 10kb。对于 SSM 参数存储,它是 8Kb
Secrets Manager 比 Parameter Store 需要额外付费。因此,如果您看到一个寻求最少开销的问题,Secrets Manager 的用途要广泛得多。但为了以最低的成本,参数存储包含在服务中,无需额外费用

1.2Cognito

1.2.1 身份前缀

1.应用程序正在使用 Amazon Cognito 用户池和身份池进行安全访问。开发人员希望将应用程序中的用户特定的上传和下载功能与 Amazon S3 集成。开发人员必须确保以安全的方式保存和检索文件,并且用户只能访问自己的文件。文件大小范围从 3 KB 到 300 MB。哪个选项能够以最高级别的安全性满足这些要求?
在 Amazon Cognito 身份前缀中使用 IAM 策略来限制用户在 Amazon S3 中使用自己的文件夹
https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_s3_cognito-bucket.html
https://docs.amplify.aws/lib/storage/getting-started/q/platform/js/
https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-integrating-user-pools-with-identity-pools.html

1.2.2 邮件通知

通过电子邮件为 Amazon Cognito 用户池发送登录活动通知的最高效的解决方案是使用 Lambda 触发器,每次用户登录时 Amazon Cognito 都会自
动调用该触发器。这样就无需客户端调用 API 或日志订阅过滤器。Lambda 函数可用于使用 Amazon SES 发送电子邮件通知

1.2.3 Systems Manager Parameter Store

1.2.3.1 配置设置到期时间和到期通知

在 AWS Systems Manager Parameter Store 中创建高级参数。设置Expiration和ExpirationNoti cation策略类型

1.3 KMS

使用 AWS Key Management Service (AWS KMS) 客户管理的密钥将 API 密钥存储为 Lambda 环境变量是最安全的解决方案。AWS KMS 是一种托管加密服务,提供客户管理的密钥。客户管理的密钥使用存储在 AWS KMS 保管库中的 AWS KMS主密钥进行加密。

1.4 最佳安全实践

最佳实践:
使用帐户分离工作负载:通过多帐户策略在环境(例如生产、开发和测试)和工作负载之间建立通用护栏和隔离。强烈建议帐户级分离,因为它为安全、计费和访问提供了强大的隔离边界。 https://wa.aws.amazon.com/wat.question.SEC_1.en.html
AWS 架构良好的框架建议分离。

1.5 Macie

在收到客户信用卡信息可能已在公司公共应用程序之一的数据表中暴露的警报后,识别应用程序环境中所有潜在暴露的最佳解决方案是使用Amazon Macie。Amazon Macie 是一项完全托管的数据安全和隐私服务,它使用机器学习和模式匹配来发现和保护 AWS 中的敏感数据。
使用 Amazon Macie 在包含受影响数据的 S3 存储桶上运行作业。使用SensitiveData:S3Object/Financial 结果类型筛选结果。
Amazon Athena,它是一种交互式查询服务,可用于使用标准 SQL 查询分析存储在 S3 中的数据。虽然 Athena 可以帮助识别S3 存储桶中的数据,但它无法提供与 Amazon Macie 相同级别的自动扫描和模式匹配功能
SensitiveData:S3Object/Personal 结果类型旨在识别个人身份信息 (PII),例如姓名和地址,但不识别信用卡信息。

1.6 IAM

1.6.1 sign4

https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html

二、应用程序集成

2.1 EventBridge

Amazon EC2 实例可以将状态更改通知事件发送到 Amazon EventBridge。使用 Lambda 定期扫描所有 EC2 实例以了解生命周期更改是不必要且低效的。Amazon EventBridge 可以在这些事件发生时自动捕获它们。
Amazon EventBridge 可以在 AWS 账户中的事件总线之间发送和接收事件

2.2 Step Functions

提供编排和错误处理能力,Step Functions具有非常有用的 Retry 和 Catch -> 错误处理功能。。(Lambda是一种计算服务,可以在StepFunction中使用,但不能提供上述能力)
每个任务都可以由不同的 AWS 服务处理,例如用于 ETL 作业的AWS Lambda或 AWS Glue

2.3 SNS

2.3.1 扩展性

每个合作伙伴必须仅接收其自己订单的更新:创建 Amazon Simple Notation Service (Amazon SNS) 主题。配置 Lambda 函数以将具有特定属性的消息发布到SNS 主题。订阅每个合作伙伴的 SNS 主题。对主题订阅应用适当的过滤策略。
https://docs.aws.amazon.com/sns/latest/dg/sns-message-filtering.html

2.4 SQS

SQS队列可以充当超出限制的 API 调用的缓冲区。

三、模板、部署,分发

3.1 CloudFormation

通过将基础设施视为代码,为您提供一种简单的方式,为一系列相关AWS资源和第三方资源建模,快速而又一致地对这些资源进行预置并在它们地整个生命周期内对其进行管理。
CloudFormation模板描述了您所需要的资源及其依赖项,这样,您就可以将它们一起作为一个堆栈进行启动和配置。您可以根据需要,使用模板将整个堆栈作为一个单元进行创建,更新和删除,无需单独管理资源。您可以跨多个AWS账户和AWS区域管理和预置堆栈。

将具有保留值的 CloudFormation 删除策略属性添加到数据库资源:通过在CloudFormation模板中的数据库资源中添加带有Retain值的DeletionPolicy属性,即使删除CloudFormation堆栈,数据库也不会被删除。这有助于防止堆栈删除期间数据库意外丢失
更新 CloudFormation 堆栈策略以防止更新数据库:通过更新CloudFormation堆栈策略,开发团队可以限制对数据库资源的更新。这可以防止在堆
栈更新期间意外修改或重新创建数据库。堆栈策略可以定义允许或拒绝的特定操作,从而针对无意的数据库更改提供额外的保护层
AWS CloudFormation 可以帮助您建模和设置 AWS 资源。但是,它不提供任何用于部署或管理应用程序的自动化。

3.1.1 安全

3.1.1.1 密钥

借助 AWS CloudFormation,您可以检索密钥以在其他 AWS CloudFormation 资源中使用。常见的场景是首先使用 Secrets Manager 生成的密码创建一个密钥,然后从该密钥中检索用户名和密码以用作新数据库的凭据
https://aws.amazon.com/about-aws/whats-new/2022/12/amazon-rds-integration-aws-secrets-manager/

3.1.1.2 AWS 账户中的权限

一些堆栈模板中包含的资源会影响您的 AWS 账户中的权限。对于这些堆栈,您必须通过指定此参数来明确确认它们的功能。x
①CAPABILITY_IAM 和 CAPABILITY_NAMED_IAM
如果包含 IAM 资源,您可以指定任意一个功能。如果包含具有自定义名称的 IAM 资源,则必须指定 CAPABILITY_NAMED_IAM。如果您不指定此参数,则此操作会返回 InsufficientCapabilities 错误。
②CAPABILITY_AUTO_EXPAND
如果您的堆栈模板包含一个或多个宏,并且您选择 直接从已处理的模板创建堆栈,而无需先查看更改中生成的更改 设置时,必须确认此功能。

3.1.1.3 AWS::Region 伪参数

是一个内置 CloudFormation 参数,它自动解析为创建 CloudFormation 堆栈的 AWS 区域。通过使用此伪参数,您可以动态访问当前区域,而无需任何额外的配置或输入

3.1.1.4 堆栈创建参数

DisableRollback

设置为 以在堆栈创建失败时禁用堆栈回滚。可以指定true 或false ,但不能同时指定两者。

OnFailure

确定在堆栈创建失败时将采取的操作。取值范围:DO_NOTHING | ROLLBACK | DELETE

RetainExceptOnCreate

如果设置为true ,则在操作回滚时将删除新创建的资源。这包括新 创建的资源标记为删除策略为 Retain
在使用 AWS 云开发套件 (AWS CDK) 时在本地测试特定 Lambda 函数,开发人员可以将 AWS 无服务器应用程序模型 (AWS SAM) CLI 的本
地测试功能与 CDK 结合使用。典型的过程是:
运行 cdk Synth 将 AWS CDK 应用程序合成到 CloudFormation 模板中。
使用 sam local invoke 在本地运行特定的 Lambda 函数,提供函数的逻辑标识符和合成的 CloudFormation

3.1.1.5 跨账户和区域部署:create-stack-set命令

AWS CloudFormation StackSets 允许开发人员使用单个 CloudFormation 模板跨多个 AWS 账户和区域部署 CloudFormation 堆栈。 通过使用AWS CLI
create-stack-set命令,开发人员可以将相同的CloudFormation堆栈部署到多个区域,而无需额外的应用程序代码,从而满足API的地理负载测试的要求
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html
https://awscli.amazonaws.com/v2/documentation/api/2.1.30/reference/cloudformation/create-stack - set.html

3.1.1.6 模板参数
AllowedValues

开发人员如何将已批准的实例类型列表合并到 CloudFormation 模板中:
在 CloudFormation 模板中,创建一个参数,其中包含 EC2 实例类型列表作为AllowedValue

3.2 AWS云开发套件(AWS CDK)

3.2.1 本地测试特定 Lambda 函数

在使用 AWS 云开发套件 (AWS CDK) 时在本地测试特定 Lambda 函数,开发人员可以将 AWS 无服务器应用程序模型 (AWS SAM) CLI 的本地测试功能与 CDK 结合使用。典型的过程是:
运行 cdk Synth 将 AWS CDK 应用程序合成到 CloudFormation 模板中。
使用 sam local invoke 在本地运行特定的 Lambda 函数,提供函数的逻辑标识符和合成的 CloudFormation
使用 AWS SAM CLI sam local invoke 子命令在本地启动 AWS Lambda 函数的一次性调用。
https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/using-sam-cli-local-invoke.html

安装 AWS 无服务器应用程序模型 (AWS SAM) CLI 工具。使用 sam localgenerate-event 命令生成自动化测试的示例事件。创建使用 sam local invoke 命令调用 Lambda 函数的自动化测试脚本。检查响应。为团队中的其他开发人员记录测试脚本。更新 CI/CD 管道以运行测试脚本

3.3 Elastic Beanstalk

AWS Elastic Beanstalk 专为像您的场景中这样想要部署和管理应用程序而无需担心底层基础设施的开发人员而设计。它使部署过程自动化,并自动处理容量配置、负载平衡、自动扩展和应用程序运行状况监控。您可以在包括 Ruby 在内的各种平台上使用它

3.1.1 部署

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.rolling-version-deploy.html
一家公司在 AWS Elastic Beanstalk 上部署了一个应用程序。该公司已将与 Elastic Beanstalk 环境关联的 Auto Scaling 组配置为拥有 5 个 Amazon EC2 实例。如果部署时容量少于4个EC2实例,应用程序性能会下降。该公司正在使用一次性部署策略。
解决部署问题最经济有效的方法是什么
将部署策略更改为滚动附加批次。指定批量大小为 1

部署策略:
一次部署全部:默认情况下,您的环境使用一次性部署。—最快的部署方法。
滚动部署:

3.4 AWS CodeDeploy

AWS CodeDeploy 可以自动将代码部署到任何实例,包括 Amazon EC2 实例和本地服务器。但是,它无法提供与 Elastic Beanstalk 相同级别的自动化,并且需要开发人员更多的手动干预。

3.4.1 就地部署顺序

应用程序停止 -> 安装前 -> 安装后 -> 应用程序启动
https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-struct-hooks.html#appspec-hooks-server
安装前必须停止应用程序。否则安装可能会损坏正在运行的应用程序的文件并造成损坏。
对于所有部署类型,BeforeInstall 在 ApplicationStop 之后运行。

3.5 AWS OpsWorks

AWS OpsWorks是一项配置管理服务,提供 Chef 和 Puppet 的托管实例。但是,它不如 Elastic Beanstalk 那么易于使用,并且它不提供相同级别的部署或管理应用程序的自动化程度

3.6 AWS 无服务器应用程序模型 (SAM)

用于在 YAML 中定义无服务器资源的推荐 AWS 服务是 AWS 无服务器应用程序模型 (AWS SAM)。
AWS SAM 是一个开源框架,它扩展了 AWS CloudFormation,以提供一种简化的方式来定义无服务器应用程序所需的 Amazon API Gateway API、AWS Lambda 函数和 Amazon DynamoDB 表。您可以在 YAML 模板中定义无服务器资源,然后使用 AWS SAM CLI 打包和部署您的应用程序。
AWS CloudFormation 无服务器内部函数也可用于在 YAML 中定义无服务器资源,但与 AWS SAM 相比,它们有一些限制。AWS Elastic Beanstalk 是一个平台即服务 (PaaS),并非特定于无服务器,而 AWS 云开发套件 (AWS CDK) 是基于 YAML 的模板的替代方案,它使用熟悉的编程语言(如TypeScript、Python 和 Java)来定义AWS 基础设施

3.7 CloudFront

要使用 AWS Certificate Manager (ACM) 中的证书要求查看器与 CloudFront 之间采用 HTTPS,请确保您在美国东部(弗吉尼亚北部)区域 (us-east-1)请求(或导入)证书。
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cnames-and-https-requirements.html
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.htm

3.8 CodeDeploy

codedeploy 可以在 ASG 的横向扩展事件上部署最新版本
https://docs.aws.amazon.com/codedeploy/latest/userguide/integrations-aws-auto-scaling.htm

CodeDeploy 支持 Amazon EC2 Auto Scaling,AWS根据您定义的条件自动启动 Amazon EC2 实例的服务。作为 Amazon EC2 Auto Scaling 组的一部分启动新 Amazon EC2 实例时,CodeDeploy 可自动将您的修订部署到新实例。您还可以将 CodeDeploy 中的部署与已向 Elastic Load Balancing 器注册的 Amazon EC2 Auto Scaling 实例进行协调。

3.8.1 金丝雀部署

3.9 Amplify

使用 AWS Amplify 和无服务器后端托管每个网站。AWS Amplify 是一项完全托管的服务,允许开发人员构建和部署 Web 应用程序和静态网站。借助 Amplify,开发人员可以轻松连接其存储库(例如 AWS CodeCommit、Bitbucket 和GitHub),以根据代码合并自动构建和部署对网站的更改。Amplify 还支持多种环境的分阶段发布,包括开发、登台、用户验收测试和生产,这些环境可以链接到存储库中的特定分支。此外,Amplify 默认使用 HTTPS 进行所有数据交换,并且具有无服务器后端,这意味着无需维护服务器。

开发人员正在使用 AWS Amplify Hosting 构建和部署应用程序。开发人员收到的用户错误报告数量不断增加。开发人员希望向应用程序添加端到端测试,以便在错误到达生产之前消除尽可能多的错误。开发人员应该实施哪种解决方案来满足这些要求?
将测试阶段添加到应用程序的 amplify.yml 构建设置中。
通过向 amplify.yml 构建设置添加测试阶段,开发人员可以在 AWS Amplify Hosting 中定义和执行端到端测试,作为构建和部署过程的一部分。
这将有助于确保在应用程序投入生产之前捕获并修复错误,从而提高应用程序的整体质量。
https://docs.aws.amazon.com/amplify/latest/userguide/running-tests.html

3.10 SAM

用于在 YAML 中定义无服务器资源的推荐 AWS 服务是 AWS 无服务器应用程序模型 (AWS SAM)。

3.10.1 samsync --watch 命令

samsync --watch 命令将仅部署已更改的 Lambda 函数。此命令使用 AWS SAM Accelerate 将 Lambda 函数的本地版本与 AWS 中部署的版本进行比较。如果存在差异,该命令将仅部署更改的 Lambda 函数。

3.10.2 部署

一家公司使用 AWS Lambda 函数开发了一个新的无服务器应用程序,该应用程序将使用 AWS 无服务器应用程序进行部署模型 (AWS SAM) CLI。
开发人员在部署应用程序之前应完成哪个步骤?
使用 SAM 包捆绑无服务器应用程序

3.10.3 命令

AWS SAM CLI sam local start-api 子命令用于启动本地 API Gateway 实例。这允许您在将 REST API 部署到生产环境之前在本地测试它。
其他子命令将无法满足开发人员的要求:
Sam local invoke用于在本地调用 Lambda 函数。
Sam local generate-event用于生成本地事件文件,用于在本地调用 Lambda 函数。
Sam local start-lambda 用于启动Lambda 函数的本地实例。

四、无服务器

4.1 Lambda

4.1.1 与SQS交互

对与 Amazon SQS 交互的 Lambda 函数进行单元测试时,您可以创建一个单独的测试 SQS 队列,供 Lambda 函数在测试期间与之交互。然后,您将根据函数与测试队列的交互来验证函数的行为。这种方法将函数的行为与系统的其余部分隔离,这是单元测试的关键原则。创建用于测试的 SQS 队列。在应用程序的单元测试中使用此 SQS 队列。在 CI/CD 过程中运行单元测试。

4.1.2 与DynamoDB交互

Lambda 函数需要具有适当的 IAM 权限才能写入 DynamoDB 表。如果该函数没有这些权限,则尝试写入表时将会失败
为 Lambda 函数配置事件源映射。

4.1.3 与SNS交互

每个合作伙伴必须仅接收其自己订单的更新:创建 Amazon Simple Notation Service (Amazon SNS) 主题。配置 Lambda 函数以将具有特定属性的消息发布到SNS 主题。订阅每个合作伙伴的 SNS 主题。对主题订阅应用适当的过滤策略。
https://docs.aws.amazon.com/sns/latest/dg/sns-message-filtering.html

4.1.4 与S3交互

根据访问 S3 文档的人员,文档应按原样返回或删除所有 PII:从 S3 控制台创建 S3 对象 Lambda 访问点。选择removePii函数。使用 S3 访问点无需 PII 即可访问对象
https://aws.amazon.com/s3/features/object-lambda/

4.1.5 提高性能

AWS Lambda 中不提供增加函数的 CPU 核心数的选项。AWS Lambda 自动管理 CPU 功率的分配,并且仅允许扩展内存
AWS Lambda 函数的性能主要取决于分配的内存量。增加内存时,可用的 CPU 和网络资源也会增加。这可以缩短执行时间,特别是对于 CPU 密集
型函数。增加 CPU 核心数、保留并发数或超时对性能的影响可能不如增加内存那么大
添加更多内存会按比例增加 CPU 数量,从而提高可用的整体计算能力。如果某个函数受 CPU、网络或内存限制,则更改内存设置可以显着提高
其性能。 https://docs.aws.amazon.com/lambda/latest/operatorguide/computing-power.html
对于 Lambda 函数,您无法更改 CPU。Lambda 根据配置的内存量按
比例分配 CPU 功率。你可以在这里阅读更多:
https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-memory-console

4.1.6 函数别名

https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html
能够快速、无缝地返回到旧版本的函数。

4.1.7 临时存储

tmp 目录是在 AWS Lambda 函数中存储临时文件的建议位置。/tmp目录提供可写空间,本地存储容量为512MB。它专为 Lambda 执行环境中的临时
存储而设计。

开发人员确保函数计算准确的滚动平均值的最佳方法是修改函数以将值存储在 Amazon ElastiCache 中。当函数初始化时,使用缓存中的先前值来计算滚动平均值。
该解决方案是最好的,因为它确保滚动平均值始终根据最新值计算,即使 Lambda 函数扩展到多个实例也是如此

4.1.8 部署优化

使用所需的 Python 库创建 Lambda 层并在两个 Lambda 函数中使用它,是以最小的运营开销减少部署包大小的最合适的解决方案。https://docs.aws.amazon.com/lambda/latest/dg/inplication-layers.html

为库和其他依赖项打包,以减少部署存档的大小,并加快代码部署速度。

新发布的函数版本最初应该只提供给固定比例的生产用户。–使用加权别名在新函数的别名上配置路由。加权别名允许您根据您分配的权重将流量路由到函数的不同版本。这允许您实施金丝雀部署,首先将一小部分流量路由到该功能的新版本,然后随
着您对新版本的信心增加而逐渐增加百分比。

4.1.9 日志

https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/lambda-logging-metrics.html • Lambda 自动将标准输出和标准错误消息从 Lambda 函数流式传输到 CloudWatch Logs,无需日志记录驱动程序。
应用程序可以将日志写入标准输出或文件。标准输出是日志的默认目标。写入标准输出的日志将发送到 Amazon CloudWatch Logs。写入文件的日志
存储在 Lambda函数的执行环境中。

4.1.10 Amazon Kinesis Data Firehose 传输流

支持使用 AWS Lambda进行自定义数据交换
https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html

优化
①迭代器年龄增加

当 Lambda 函数无法有效地处理写入调用该函数的流的数据时,该函数的迭代器期限会增加。要降低函数的 IteratorAge 指标,必须提高流处理吞吐量。
https://repost.aws/knowledge-center/lambda-iterator-age

4.1.11 死信队列

Lambda 死信队列是一项有助于对 Lambda 函数处理失败的事件进行故障排除的功能。当 Lambda 函数的异步调用失败时,AWS Lambda 可以将失败的事件定向到 Amazon SNS 主题或 Amazon SQS 队列(死信队列),事件存储在其中并可以进行分析或重新处理。
https://aws.amazon.com/what-is/dead-letter-queue/
https://aws.amazon.com/about-aws/whats-new/2016/12/aws-lambda-supports-dead-letter-queues/

4.1.12 其它问题

公司需要开发 Web 服务应用程序的概念验证。该应用程序将显示公司某一办公地点的天气预报。该应用程序将提供客户端可以调用的 REST 端点。如果可能,应用程序应使用 AWS 提供的缓存功能来限制对后端服务的请求数量。应用程序后端仅在测试期间才会接收少量流量。
开发人员应采用哪种方法来最经济高效地提供 REST 端点
使用 AWS 无服务器应用程序模型 (AWS SAM) 创建 AWS Lambda 函数。使用 Amazon API Gateway 公开 Lambda功能

将消除限制并将数据更一致地加载到 DynamoDB 表中
将 Lambda 函数重构为两个函数。配置一个函数来转换数据,并配置一个函数将数据加载到 DynamoDB 表中。在函数之间创建一个 Amazon Simple Queue Service (Amazon SQS) 队列,以将项目作为消息保存并调用第二个函数。

③数据转换

将 Kinesis Data Firehose 数据转换实现为 AWS Lambda 函数。配置删除客户功能标识符。将 Amazon S3 存储桶设置为传输流的目标
https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html

④APIGateway

一家公司正在开发使用 Amazon API Gateway API 的电子商务应用程序。该应用程序使用 AWS Lambda 作为后端。在公司将代码发布到生产环境之前,公司需要在专用的、受监控的测试环境中测试代码。
哪种解决方案可以满足这些要求?
.在 API Gateway 中使用多个阶段。为每个环境创建一个 Lambda 函数。配置 API Gateway 阶段变量以将流量路由到不同环境中的 Lambda 函数
我们应该创建多个阶段和不同的 Lambda,它们将根据 API Gateway 阶段变量来使用。
https://docs.aws.amazon.com/apigateway/latest/developerguide/amazon-api-gateway-using-stage-variables.html

⑤利用运行时环境重用

在 Lambda 处理程序函数之外初始化 AWS 开发工具包可利用运行时环境重用。这意味着 SDK 只需要为所有 Lambda 函数调用初始化一次。这可以提高应用程序的性能和效率。

⑥数据加密

将临时数据写入AWS Lambda 函数上的 /tmp 存储。应该如何加密这些数据
.使用角色和密钥策略设置 Lambda 函数以访问 AWS KMS 密钥。使用该密钥生成数据密钥,用于在写入 /tmp 存储之前加密所有数据。

4.2 API

4.2.1 缓存

在 API Gateway 中启用 API 缓存可以帮助公司增强 API 的响应能力。通过启用缓存,API Gateway 存储来自 API 的响应并将其返回以用于后续请求,而不是将请求转发到 Lambda。这减少了对 Lambda 的请求数量,提高了 API 性能,并减少了用户的延迟
缓存频繁访问的 api 调用可以减少每次调用 api 时的处理时间。

4.2.2 集成测试

使用请求映射模板选择模拟集成响应。
允许您使用 API Gateway 中的请求映射模板来选择模拟集成响应。这种方法允许您模拟不同的后端响应,而无需调用实际的后端服务。它提供了对响应的灵活性和控制,无需额外的 AWS 资源(例如 Lambda 函数或 EC2 实例),从而最大限度地减少运营开销
https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-mock-integration.html

4.2.3 设置后端 Lambda 函数的异步调用

https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-integration-async.html
要使所有调用均为异步,请执行以下操作:
在 Integration Request (集成请求) 中,添加具有静态值 X-Amz-Invocation-Type 的 ‘Event’ 标头。

五、存储

5.1 ElastiCache

ElastiCache是一种在云中提供内存数据存储的 Web 服务 , 它支持Memcached 和 Redis 引擎 。 这两种引擎都适合缓存频繁访问的数据 其中Redis 提供排序集和其他数据结构 , 允许对缓存数据集进行排序和排名 。 ElastiCache 中数据可以在静态和传输过程中进行加密 , 确保 PHI 的安全 。
使用 Amazon ElastiCache for Memcached 可以轻松创建会话存储

5.1.1 缓存策略

5.1.1.1 直写式缓存策略

在此策略中,当新数据写入数据库时 ,也会写入缓存。这可确保缓存中始终提供最新数据以供实时仪表板访问,从而减少数据检索的延迟。此外,使用直写式缓存可确保数据库和缓存之间保持数据一致性,因为对数据的任何更改都会同时写入两个位置。
直写式缓存策略涉及同时将数据写入缓存和底层数据库。当数据更新或插入数据库时 ,也会在缓存中存储或更新,以确保缓存保持最新数据。

5.1.1.2 Memcached VS Redis

在 Memcached 和 Redis 之间做出选择时,需要考虑以下几个问题:
https://docs.aws.amazon.com/whitepapers/latest/scale-performance-elasticache/memcached-vs.-redis.html

  • Memcached

    一种可扩展的多线程缓存解决方案,可用于卸载 Amazon RDS 实例的大量读取流量,能够水平扩展缓存 成长。ElastiCache for Memcached 易于配置和管理,使其成为满足技术领先要求的轻松解决方案

  • Redis
    支持更高级 数据结构,例如排序集、哈希和列表。
    Redis 内置了磁盘持久性,这意味着您 可以将其用于长期数据。
    Redis 还支持复制, 可用于实现多可用区冗余
    Memcached 没有任何严格的身份验证或加密 功能,但 Redis 支持加密。

  • CloudFront 内容分发 network (CDN)
    此方法用于缓存 网页、图片资产、视频和其他静态数据 边缘,尽可能贴近最终用户。除了使用 CloudFront 具有静态资产,您还可以将 CloudFront 放在 动态内容(如 Web 应用)的前端

  • RDS 只读副本

  • 主机缓存
    简单的缓存方法是将数据存储在每个 Amazon EC2 应用程序实例上,以便将其存储在服务器本地 快速查找。别这样。首先,你得不到任何效率 在这种情况下,您的缓存。随着应用程序实例的扩展,它们 从空缓存开始,这意味着他们最终会锤击 数据层。

5.2 DynamoDB

此Elastic Redis和DynamoDB都可以用作缓存解决方案。如果您想要
高性能、低延迟,请选择 Redis
如果您需要持久存储,请选择 DyanmoDB
ElastiCache 将以最少的延迟提供唯一标识符的足够会话管理。但如果问题的范围围绕着持久性,而不是延迟。因此,持久存储更适合。
虽然 RDS 是持久性和性能方面的可行解决方案,但问题指定了物联网(IOT)设备,这些设备通常会生成非结构化数据,这些数据可以通过DynamoDB 等 No-SQL 服务更好地处理。

为了满足缓存经常访问的数据的要求,同时添加对缓存数据集进行排序或排名的功能,开发人员应选择 Amazon ElastiCache for Redis。ElastiCache 是一种在云中提供内存数据存储的 Web 服务,它支持 Memcached 和 Redis 引擎。虽然这两种引擎都适合缓存频繁访问的数据,但 Redis 是此用例 的更好选择,因为它提供排序集和其他数据结构,允许对缓存数据集进行排序和排名。ElastiCache 中的数据可以在静态和传输过程中进行加密,确 保 PHI 的安全。

5.2.1 基础概念

https://docs.aws.amazon.com/zh_cn/amazondynamodb/latest/developerguide/CheatSheet.html
可以使用 DynamoDB Streams 捕获 DynamoDB 表中的数据修改事件。

5.2.1.1 主键

主键

  • 分区键

由一个称为分区键的属性构成的简单主键。在只有分区键的表中,任何两个项目都不能有相同的分区键值。

  • 分区键和排序键
    -称为复合主键,此类型的键由两个属性组成。第一个属性是分区键,第二个属性是排序键。在具有分区键和排序键的表中,多个项目可能具有相同的分区键值。但是,这些项目必须具有不同的排序键值。

二级索引
您可以在一个表上创建一个或多个二级索引。利用二级索引,除了可对主键进行查询外,还可使用替代键查询表中的数据。DynamoDB 不需要使用索引,为应用程序提供数据查询方面的更大的灵活性。在表中创建二级索引后,您可以从索引中读取数据,方法与从表中读取数据大体相同。

DynamoDB 支持两种索引:

全局二级索引 – 分区键和排序键可与基表中的这些键不同的索引。

本地二级索引 – 分区键与基表相同但排序键不同的索引。

5.2.2 低级API

BatchGetItem

开发人员正在构建使用 Amazon DynamoDB 的应用程序。开发人员希望通过一次 API 调用从数据库中检索多个特定项目。
哪个 DynamoDB API 调用将满足这些要求,同时对数据库的影响最小
需要特定项目 -> 不能scan或query,因为它们用于检索匹配条件的项目。我们需要多个项目,那么 就是BatchGetItem

使用 BatchGetItem 低级 API 操作直接向 Amazon DynamoDB 发出批量请求。响应经常返
回 UnprocessedKeys 元素中的值。
解决:
①使用指数退避和随机延迟重试批处理操作:当批量响应包含 UnprocessedKeys 中的值时,表示由于预置容量或系统过载等限制,某些项目无法处理。使用指数退避策略重试批处理操作,这意味着逐渐增加重试之间的时间。这有助于防止 DynamoDB 服务不堪重负,并提高在后续重试中成功处理项目的机会。
②增加操作访问的 DynamoDB 表的预配置读取容量:单个操作最多可检索 16 MB 的数据,其中最多可包含 100 个项目。如果超出响应大小限制、超出表的预配置吞吐量、请求每个分区超过 1MB 或发生内部处理失败,BatchGetItem 将返回部分结果。如果返回部分结果,则该操作将返回 UnprocessedKeys 的值。您可以使用此值从下一个要获取
的项目开始重试该操作。
https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html

5.2.3 主键和全局二级索引

要分区键尽可能唯一,因此我们希望将电影的标题作为分区键。因为将分区键作为流派会产生热分区问题,并且我们存储在 DynamoDB中的数据将会出现偏差。

5.2.4 限制

DynamoDB 非常快速、安全且可扩展。DynamoDb 无法用于存储每个对象超过 400 KB 的任何内容。

5.2.5 自动清理数据

DynamoDB 表可以根据提供的配置自行清理数据
它使用 DynamoDB 的生存时间 (TTL) 自动删除过期项目。TTL 是一个项目属性,指定项目应在表中保留的持
续时间。当项目的 TTL过期时,该项目会自动从表中删除。

5.3 S3

5.3.1 object-lambda

根据访问 S3 文档的人员,文档应按原样返回或删除所有 PII:
从 S3 控制台创建 S3 对象 Lambda 访问点。选择removePii函数。使用 S3 访问点无需 PII 即可访问对象。https://aws.amazon.com/s3/features/object-lambda/
借助 S3 Object Lambda,您可以将自己的代码添加到 S3 GET、HEAD 和 LIST 请求中,以便在数据返回到应用程序时修改和处理数据。您可以使用自定义代码来修改 S3 GET 请求返回的数据,以便实施筛选行、动态调整图像大小、隐去机密数据等操作。您还可以使用 S3 Object Lambda 来修改 S3 LIST 请求的输出,以创建存储桶中对象的自定义视图,并使用 S3 HEAD 请求修改对象元数据(如对象名称和大小)。在 AWS Lambda 函数的支持下,无需对应用程序进行任何更改,您的代码即可在 AWS 完全托管的基础设施上运行,不需要创建和存储数据的衍生副本,也不需要运行昂贵的代理。
S3 Object Lambda 使用 AWS Lambda 函数自动处理标准 S3 GET、HEAD 和 LIST 请求的输出。只需在 AWS 管理控制台中单击几下,即可配置 Lambda 函数并将其附加到 S3 Object Lambda 访问点。此后,S3 将自动调用 Lambda 函数来处理通过 S3 Object Lambda 访问点检索到的任何数据,并将转换后的结果返回应用程序。您可以编写和执行自己的自定义 Lambda 函数,根据您的特定使用案例定制 S3 Object Lambda 的数据转换。

5.3.2 预签名URL

S3 旨在存储文件对象,它允许轻松生成预签名 url,并提供允许对象过期的生命周期管理规则
可以生成包含到期日期的预签名 URL 通过 Web应用程序向客户提供 URL。

5.3.3 Web应用程序阻止JavaScript 文件和 Web 字体

创建允许访问中央 S3 存储桶的跨源资源共享 (CORS) 配置。将 CORS 配置添加到中央S3存储桶
默认情况下,Web 应用程序无法访问其他域中的资源,但某些例外。您必须在要访问的资源上配置CORS。
https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors.html

5.3.4 数据加密

可以为S3存储桶配置默认加密,配置时选择使用的加密类型
配置后,写入存储桶的所有新对象将使用您指定的加密类型进行加密

静态数据加密:
服务器端加密:

  • 具有S3托管密钥的服务器端加密(SSE-S3)
    S3管理密钥,每个对象使用唯一密钥进行加密,定期轮转的主密钥加密唯一密钥,使用AES-256加密您的数据
  • 在KMS中存储KMS密钥的服务器端加密(SSE-KMS)
    KMS管理密钥,可以使用AWS托管密钥/客户托管密钥对数据进行加密,客户托管密钥可由客户创建
  • 具有客户提供密钥的服务器端加密(SSE-C)
    密钥由客户管理

客户端加密:客户管理密钥,密钥不存储在AWS,也可以使用KMS的CMK

传输数据加密:

5.3.4.1 存储

开发人员有一个将数据存储在 Amazon S3 存储桶中的应用程序。该应用程序使用 HTTP API 来存储和检索对象。当PutObject API 操作将对象添加到 S3 存储桶时,开发人员必须使用带有 Amazon S3 托管密钥 (SSE-S3) 的服务器端加密来静态加密这些对象。
哪种解决方案可以满足这个要求?
调用 PutObject API 操作时设置 x-amz-server-side-encryption 标头。
当使用 PutObject API 操作将对象存储在 S3 存储桶中时,可以设置 x-amz-server-side-encryption 标头来指定用于加密对象的服务器端加密算法。将此标头设置为“AES256”或“aws:kms”可分别使用 SSE-S3 或 SSE-KMS 启用服务器端加密

5.3.4.2 读取

一家公司有一个包含敏感数据的 Amazon S3 存储桶。数据在传输过程中和静态时都必须加密。该公司使用 AWS Key
Management Service (AWS KMS) 密钥对 S3 存储桶中的数据进行加密。开发人员需要向其他几个 AWS 账户授予使用 S3
GetObject 操作从 S3 存储桶检索数据的权限。
开发人员如何强制所有检索数据的请求在传输过程中提供加密?

在 S3 存储桶上定义基于资源的策略,以在请求满足“aws:SecureTransport”条件时拒绝访问:“错误的”
Define a resource-based policy on the S3 bucket to deny access when a request meets the condition “aws:SecureTransport”: “false”.
https://repost.aws/knowledge-center/s3-bucket-policy-for-config-rule
Amazon S3 提供传输加密和静态加密。传输加密是指 HTTPS,静态加密是指客户端或服务器端加密。
要在桶策略中判定是 HTTP 还是 HTTPS 请求,请使用一个检查键 “aws:SecureTransport” 的条件。当此键为 true 时,Amazon S3 将通过 HTTPS 发送请求。要符合 s3-bucket-ssl-requests-only 规则,需要创建一个桶策略,并使其在请求满足条件 “aws:SecureTransport”: “false” 时显式拒绝访问。此策略显式拒绝 HTTP 请求的访问权。

5.3.5 功能

https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/Welcome.html

5.3.5.1 存储类

S3 Standard:频繁访问
S3 Standard-IA/S3 One Zone-IA:不经常访问的数据,以最低的成本归档数据来节省成本
S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval、和 S3 Glacier Deep Archive 中以最低的成本归档数据
S3 Intelligent-Tiering:存储具有不断变化或未知访问模式的数据,该分层可在访问模式发生变化时自动在四个访问层之间移动数据,从而优化存储成本。这四个访问层包括两个低延迟访问层(针对频繁和不频繁访问进行了优化),以及两个为异步访问很少访问的数据而设计的 opt-in archive 访问层。

5.3.5.2 存储类别
  • S3标准-常规用途
    需要频繁的访问数据,这些数据可能是临时存放或者少于30天的短期需求
  • S3标准-不频繁访问(S3标准-IA)
    需要以低成本长期存储生产环境数据,并可以在偶尔需要访问的时候可以立即访问
  • S3单区-不频繁访问(S3单区-IA)
    希望在一个单独的AWS区域中备份一些备份数据的副本,并且我们需要能够以最小的延迟访问它
  • S3智能分层:频繁访问/不频繁访问/存档/深度存档 S3
  • Glacier:用于深度长期存档,成本非常低 S3
  • Glacier Deep Archive:S3成本最低,用于每年最多访问1~2次的数据的长期存档和保存,检索时间最长(12小时)
    有一些长期存档的数据,必须处于合规性目的进行保留,希望以一个较低的成本保留这些数据
5.3.5.3 存储类别
  • S3 select和Glacier Select:节省CPU以及网络成本
  • S3生命周期策略:对象自动在存储层之间进行转换
  • 压缩对象之前节省存储空间,从而降低成本
  • 请求方付费(S3 Request Pays):
    通常,存储桶的拥有者支付存储桶相关的所有存储和数据传输费用

5.4 EFS

要求是拥有一个允许附加文件并可由多个 Lambda 函数、AWS 服务和本地资源访问的共享文件系统。Amazon Elastic File System (Amazon EFS) 非常适合这些要求。EFS 提供了一个可扩展、弹性的 NFS 文件系统,可以同时挂载到多个 EC2 实例和 Lambda 函数,使这些资源更容易共享文件。您还可以附加到 EFS 文件系统上的现有文件,这满足了可以附加新条目的共享日志文件的要求

5.5 RDS

公司的阅读工作量很大。实现最佳的查询读取性能。
部署具有一个或多个只读副本的 Amazon RDS。修改应用程序代码,以便查询使用只读副本的 URL
多可用区用于灾难恢复,而不是读取可扩展性或性能。

Amazon RDS Proxy 是一种允许您创建连接池来管理数据库连接的解决方案。这有助于减少与数据库的连接数量

六、开发人员工具

6.1 X-Ray

AWS X-Ray 通过您的应用程序时会提供完整的请求视图,并通过无代码和低代码移动过滤负载、函数、轨迹、服务、API 等方面的可视化数据。

6.1.1 以最少的配置在本地服务器上启用 X 射线跟踪

可以在本地服务器上安装和配置 X-Ray 守护程序以捕获数据并将其发送到 X-Ray 服务。这需要最少的配置和设置。
https://docs.aws.amazon.com/xray/latest/devguide/xray-daemon.html

6.1.2 数据过滤

开发人员正在将 AWS X-Ray 合并到处理个人身份信息 (PII) 的应用程序中。该应用程序托管在 Amazon EC2 实例上。应用程序跟踪消息包括加密的 PII 并转到 Amazon CloudWatch。开发人员需要确保 PII 不会超出 EC2 实例之外。
哪种解决方案可以满足这些要求?
在应用程序代码中手动检测 X-Ray SDK。
通过在应用程序代码中手动检测 X-Ray SDK,开发人员可以完全控制跟踪消息中包含哪些数据。这样,开发人员可以通过仔细处理应用程序内的 PII 并且不将其包含在跟踪消息中,确保不会将 PII 发送到 X-Ray

6.1.3 启用应用程序请求跟踪以调试代码中的性能问题

  • 在应用程序中安装并配置适用于 Python 的 AWS X-Ray 开发工具包
    使用 AWS X-Ray 启用应用程序请求跟踪的最重要操作。适用于 Python 的 AWS X-Ray 开发工具包提供了一组 API,开发人员可以使用这些 API来检测其应用程序代码以进行跟踪。
  • 在 EC2 实例上安装 AWS X-Ray 守护程序。
    第二重要的行动。AWS X-Ray 守护程序在每个 EC2 实例上运行并收集应用程序跟踪数据

七、管理与监管

7.1 CloudWatch

CloudWatch Logs 仅发布创建过滤器后发生的事件的指标数据。
Amazon CloudWatch Logs 中的指标筛选器仅应用于新日志事件。如果您创建指标过滤器并希望对异常进行计数,则该过滤器将仅适用于创建指标过滤器后生成的日志事件。不扫描现有日志。
默认情况下,Amazon CloudWatch 不收集内存指标。您需要在实例上安装 CloudWatch 代理来收集额外的系统级指标,例如内存利用率。

7.1.1 与SNS 主题结合

通过 CloudWatch 自定义指标,开发人员可以发布和监控自定义数据点,包括对外部支付处理 API 的失败请求数。可以将 CloudWatch 警报配置为在错误率超过指定率时通知 SNS 主题,从而使支持团队能够近乎实时地收到通知
使用自定义指标,开发人员将能够发布和监控自定义数据点,例如编号。对外部支付处理 API 的失败请求数。创建 CloudWatch 警报并将其配置为在错误率超过问题中指定的数字时触发。
可以使用嵌入式指标格式将自定义指标与详细的日志事件数据一起嵌入。CloudWatch 自动提取自定义指标,以便您可以对其进行可视化并发出警报,以进行实时事件检测。 https://docs.aws.amazon.com/lambda/latest/operatorguide/custom-metrics.html

7.2.2 监控本地应用程序

将 CloudWatch 代理下载到本地服务器。配置代理以使用具有 CloudWatch 权限的IAM用户凭证。

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on - premise.html

7.2.3 Amazon CloudWatch Evidently

一位工程师在 Amazon CloudWatch Evidently 项目上创建了新功能的 A/B 测试。工程师配置了该功能的两个变体(变体 A和变体 B)进行测试。工程师希望专门使用变体 A。工程师需要进行更新,以便变体 A 成为工程师到达应用程序端点时出现的唯一变体。
哪种解决方案可以满足这个要求?
向该功能添加覆盖。将覆盖的标识符设置为工程师的用户 ID。将变体设置为变体 A
覆盖允许您预先定义所选用户的变体。始终收到可编辑的变体。
https://aws.amazon.com/blogs/aws/cloudwatch-evidently/

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Evidently-newfeature.html
要指定某些用户可以始终看到某个变体,请选择 Overrides(覆盖)、Add override(添加覆盖)。然后,通过在 Identifier(标识符)中输入用户 ID、账户 ID 或其他一些标识符,指定用户并指定其可以看到的变体。

7.2.4 与EC2结合

通过在 EC2 实例上安装 Amazon CloudWatch 代理,开发人员可以轻松收集每个实例的日志并将其发送到 Amazon CloudWatch。CloudWatch 代
理提供了一种从 EC2 实例收集日志、系统级指标和自定义指标的统一方法。

7.2.5 CloudWatch Logs Insights

授予 Lambda 函数的执行角色权限,以将日志上传到 Amazon CloudWatch Logs。实施一个 CloudWatch Logs Insights 查询,该查询为订单数量等于 0 的订单选择唯一客户的数量,并将结果分组为 1 天的时间段。将 CloudWatch Logs Insights 查询添加到 CloudWatch 控制面板。
这就是为什么此选项是最佳选择的原因:
CloudWatch Logs Insights 专为查询和分析日志数据而设计,非常适合此任务。
通过配置 Lambda 函数的执行角色以将日志上传到 CloudWatch Logs,您可以确保日志数据可用于分析。
您可以使用 CloudWatch Logs Insights 查询来识别数量为 0 的订单的唯一客户,并按天对结果进行分组,从而提供所需的每日受影响客户数量。
查询结果可以添加到 CloudWatch 仪表板中,以便轻松进行监控。

CloudWatch Logs 可以使用过滤器表达式。例如,在日志中查找特定 IP 或对日志中“错误”的出现次数进行计数• 指标过滤器可用于触发CloudWatch 警报

7.2 X-Ray

AWS X-Ray 是识别和解决分布式生产应用程序性能问题根本原因的最佳工具。X-Ray 提供了整个调用堆栈的概述,包括 Lambda 函数和它们调用的其他组件。

为 X-Ray 过滤器表达式可以使用元数据来过滤跟踪。在此上下文中,注释和新段字段通常不用于过滤跟踪。

八、网络

8.1 VPC

当我们希望 lambda 私下访问数据库集群而不是通过公共互联网传输流量时,我们需要让 lambda 和数据库集群位于同一 VPC 中。
当我们为 lambda 函数配置 VPC、子网和安全组时,lambda 函数将能够使用与 VPC 关联的私有 IP 与数据库集群进行通信。
当您将 lambda 部署在私有子网中并且您希望为其提供互联网访问时,NAT 网关就会派上用场。
https://www.udemy.com/course/aws-certified-developer-associate-dva-c01/learn/lecture/36527788#overview
https://aws.amazon.com/ru/blogs/compute/using-amazon-rds-proxy-with-aws-lambda/
https://docs.aws.amazon.com/lambda/latest/dg/configuration- vpc.html

一家公司在 AWS 上部署了基础设施。开发团队想要创建一个 AWS Lambda 函数来从 Amazon Aurora 数据库检索数据。
Amazon Aurora 数据库位于公司 VPC 的私有子网中。VPC 名为 VPC1。数据本质上是相关的。Lambda 函数需要安全地访问数据。
哪种解决方案可以满足这些要求?
A.创建 Lambda 函数。配置该功能的VPC1访问。将名为 SG1 的安全组附加到 Lambda 函数和数据库。配置安全组入站和出站规则以允许端口 3306

8.1.1 Lambda

AWSLambdaVPCAccessExecutionRole 策略允许 Lambda 函数在 VPC 中创建弹性网络接口 (ENI),并使用附加到这些 ENI 的安全组来控制入站和出站流量。

8.1.2 NAT网关

当 Lambda 函数配置为连接到 VPC 时,它将失去默认的 Internet 访问权限。要允许 Lambda 函数访问公共互联网,它必须连接到 VPC 中的私有子网,该子网配置为通过 NAT 网关(网络地址转换网关)路由其流量。
Internet 网关通常用于为公有子网中的资源提供 Internet 访问,但对于私有子网中的资源,则需要 NAT 网关。

8.1.3 VPC 流日志

VPC 流日志捕获有关进出 VPC 中网络接口的 IP 流量的信息。这包括穿越 VPN 连接的流量。VPC 流日志可用于监控和解决连接问题,包括验证流量是否到达 VPC 内的特定子网。

九、其它

9.1 AMI

未加密的 AMI 在创建后无法加密。需要创建新的加密 AMI,然后才能将其复制到其他区域

9.2 APIGateway

“API Gateway 支持 API 方法的模拟集成”
“作为 API 开发人员,您可以决定 API Gateway 如何响应模拟集成请求。为此,您可以配置方法的集成请求和集成响应,以将响应与给定的状态代码相关联。”
https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-mock-integration.html

https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/apigateway-how-to-call-websocket-api-connections.html
https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/apigateway-websocket-api-route-keys-connect-disconnect.html

9.3 Amazon Kinesis Data Streams

Amazon Kinesis Data Streams 允许您启用服务器端加密,从而对静态数据进行加密。这可确保 Kinesis Data Streams 中存储的数据受到加密保护

9.4 EC2

开发人员将应用程序部署到 Amazon EC2 实例。应用程序需要知道实例的公共 IPv4 地址。应用程序如何找到这些信息
从http://169.254.169.254/latest/meta-data/查询实例元数据

Amazon Kinesis Data Streams 专为实时数据流而设计,允许多个使用者同时实时处理数据。它可以处理数百万个事件,并为处理高吞吐量数据
流提供可扩展且经济高效的解决方案。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html

9.4.1 访问S3

https://repost.aws/zh-Hans/knowledge-center/ec2-instance-access-s3-bucket
要从 EC2 实例连接到 S3 存储桶,您必须:

  1. 创建一个AWS Identity and Access Management(IAM)配置文件角色,以授予对 Amazon S3 的访问权限。

  2. 将该 IAM 实例配置文件附加到实例。

  3. 验证您 S3 存储桶的权限。

  4. 验证从 EC2 实例到 Amazon S3 的网络连接

  5. 验证对 S3 存储桶的访问。

9.5 ALB

使用应用程序负载均衡器 (ALB) 和 X-Forwarded-For 标头。使用 ALB 时,X-Forwarded-For 标头可用于将客户端 IP 地址发送到后端服务器。

开发人员构建了一个应用程序,该应用程序将数据存储在 Amazon RDS 多可用区数据库实例中。数据库不断执行读取和写入,并且响应速度很慢。每小时都会收到几次无法预测的密集读取请求。该应用程序无法承受读取过时的数据。开发人员必须提高密集读取请求的检索速度。

哪种策略将满足这些要求?
具有直写策略的 ElastiCache 集群可以高效地将读取请求重新传送到 ElastiCache。该策略可以检索最新的数据。

一家公司正在开发一个 Python 应用程序,该应用程序将数据提交到一个 Amazon DynamoDB 表。公司要求对特定数据项进行客户端加密,并要求对传输中加密数据和静态加密数据进行端到端保护。

哪种步骤组合将满足加密特定数据项的要求? (请选择两项)
在将 DynamoDB 加密客户端配置为使用 AWS KMS 时,DynamoDB 加密客户端使用一个 KMS 密钥,在 AWS KMS 外部使用该密钥时,将始终对该密钥进行加密。该加密材料提供程序为每个表项返回唯一的加密密钥和签名密钥。这种加密方法使用对称 KMS 密钥。
DynamoDB 加密客户端为传输中数据和静态数据提供端到端保护。您可以加密表中的选定项目或属性值。

AWS 软件开发工具包 (SDK) 需要使用访问密钥 ID 和秘密访问密钥以对 AWS 进行编程调用。IAM 用户名和密码用于 AWS Management Console 访问。可以使用 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 环境变量指定访问密钥 ID 和秘密访问密钥。没有适用于 IAM 用户名和密码的环境变量。

你可能感兴趣的:(笔记,云计算)