关于Amplify
![](https://img-blog.csdnimg.cn/631f82186d6949fdb07c45e31728a3a8.png)
Amplify 于 2017 年推出,是面向移动和前端 Web 开发人员的端到端 AWS 解决方案。它是服务和工具的组合,可以一起使用或单独使用,以帮助移动和前端开发人员使用 AWS 服务创建和托管他们的应用程序。
就两个平台提供的服务而言,可以将 Amplify 与 Firebase 进行比较。尽管 Firebase 已经存在了一段时间并且是许多开发人员的热门选择,但 Amplify 已经成功地很快取得了成功。最近,它推出了管理 UI,可帮助开发人员创建授权规则、数据库模式、关系等,而无需担心 API 和数据库连接等因素。
Amplify 是一个多合一的解决方案,适用于不想在设置身份验证系统、数据库、托管、通知等时弄脏自己的开发人员…它还为几乎所有主要的移动和Web 框架,包括 JavaScript、React、Angular、Vue、Next.js 和移动平台,包括 Android、iOS、React Native、Ionic、Flutter。
开发在 Amplify 中的工作原理:
![](https://img-blog.csdnimg.cn/fde856b35d034c6bae9fc5f1d1fa547e.png)
应用程序管理在 Amplify 中的工作原理:
![](https://img-blog.csdnimg.cn/521241bf7df04b34aebb2eeb3dafe8ff.png)
使用 Amplify 的好处:
- 快速配置后端:使用 Amplify CLI 和 Amplify Admin UI 等工具,可以轻松配置具有身份验证、存储、功能、数据和其他常见用例的后端。
- 轻松管理内容:通过提供管理访问权限以在没有 AWS 账户的情况下管理用户和内容,可以与非开发人员共享管理 UI。
- 与框架无缝连接:Amplify CLI 使软件与您的项目集成变得非常容易。您所要做的就是运行amplify init并回答 CLI 工具提出的问题。
- 几秒钟内部署:使用基于 Git 的 CI/CD 简化连接 Git 存储库、托管静态网站和单页 Web 应用程序。
Amplify 提供的服务:
![](https://img-blog.csdnimg.cn/583a730ce29b411a8e08f621944d81af.png)
-
身份验证- 使用预构建的 UI 组件和强大的身份验证 API (Cognito) 在一分钟内启用登录、注册和注销。
-
存储- 在公共、受保护或私有存储 (S3) 中管理用户内容的简单机制。
-
GraphQL API - 访问后端数据的简单安全的解决方案,支持使用 GraphQL (AWS AppSync) 进行实时更新。
-
DataStore - 将在线和离线数据同步并保存到云端。
-
REST API - 使用 REST API(AWS API Gateway with AWS Lambda)发出 HTTPS 请求的简单解决方案,
-
分析- 跟踪用户会话、自定义用户会话、自定义用户属性和应用内指标以做出明智决策的分析(AWS Pinpoint 和 AWS Kinesis)。
-
推送通知- 使用带有分析的推送通知 (AWS Pinpoint) 的用户参与度。
-
XR - 在应用程序中支持增强现实 (AR) 和虚拟现实 (VR)。
-
PubSub - 为实时体验(AWS SQS 和 AWS SNS)提供面向消息的中间件。
-
交互——为了自动化客户工作流程,提供了一个由深度学习技术提供支持的对话式聊天机器人。
-
AI/ML 预测- 提供计算视觉、翻译、转录等功能 (Amazon ML)。
由于 Amplify 还没有那么成熟,因此并非所有框架都支持其中一些功能。建议在开始开发之前进行检查。
为什么选择放大?
基础设施即代码
Amplify 使用 AWS CloudFormation 将 AWS 资源分配给您的项目。这允许开发人员在 AWS 上执行之前修改配置。Amplify 允许资源分配过程完全透明,以便开发人员可以根据自己的意愿定制资源。
例如,要将 Graphql API 添加到您的项目,运行amplify add api将在项目根目录的 Amplify/API 文件夹中引导 AWS CloudFormation 模板。然后,此 CloudFormation 模板也可用于 CI/CD 流程,并可用于复制和消除手动分配和配置所有资源的负担。
本地模拟
Amplify 支持在将应用程序实际推送到云之前模拟大多数本地开发和测试应用程序的服务。它目前允许模拟 API(Appsync)、数据库(DynamoDB)、存储(S3)、函数(Lambda)和托管。要启动模拟服务器,请运行:
amplify mock
多种环境
Amplify 支持多种环境。每当您初始化 Amplify 项目时,它都会创建一个环境。
使用 GraphQL 进行数据建模
Amplify 允许您通过 GraphQL 轻松建模和访问数据,以便开发人员可以更多地关注业务价值和核心应用程序功能,而不是浪费时间进行架构和重新架构。Amplify GraphQL 建模允许使用架构指令部署具有身份验证、Lambda 解析器、弹性搜索引擎、NoSQL 数据库等功能的 AppSync GraphQL API。
使用 Amplify,总有两种方法可以集成任何服务。您可以使用管理 UI 或使用 Amplify CLI 执行此步骤。通过使用 Amplify CLI,可以无缝构建整个设置和集成过程。由于不断添加新功能并不断修复错误,因此 CLI 减少了该过程的耗时。
Amplify CLI
Amplify 命令行界面 (CLI) 是一种将 Amplify 服务集成到您的项目中的统一方式。
![](https://img-blog.csdnimg.cn/09c28d13a8c2492fa372b5dbeac3e6f8.gif#pic_center)
安装 Amplify CLI
请按照以下步骤安装 Amplify CLI。对于 NPM 用户:
npm install -g @aws-amplify/cli
使用 cURL 的用户可以按照以下步骤操作:
curl -sL https://aws-amplify.github.io/amplify-cli/install | bash && $SHELL
要将 Amplify 与 AWS 资源一起使用,您首先需要使用您的 AWS 账户对其进行配置。按照以下说明使用 AWS 账户配置 Amplify:
amplify configure
以后,amplify configure将要求您在浏览器中通过 AWS 控制台登录。登录后。CLI 将要求创建一个 IAM 用户。按照下面给出的代码:
Specify the AWS Region
? region: # Your preferred region
Specify the username of the new IAM user:
? user name: the # User name for Amplify IAM user
Complete the user-created using the AWS console
创建一个用户以AdministratorAccess在您的项目中创建所有必需的资源。
您只能根据需要授予所需的权限
![](https://img-blog.csdnimg.cn/9618e3794f664f61a90d419e1c62cd9f.gif#pic_center)
成功创建 IAM 用户后,它将在最后提供accessKeyId和secretAccessKey。当被询问时,将这些密钥提供给 CLI。
Enter the access key of the newly created user:
? accessKeyId: # YOUR_ACCESS_KEY_ID
? secretAccessKey: # YOUR_SECRET_ACCESS_KEY
This would update/create the AWS Profile in your local machine
? Profile Name: # (default)
Successfully set up the new user.
成功配置 Amplify 后,导航到 JavaScript、iOS、Android 或 Flutter 项目根目录,并通过运行amplify init. 它会问你几个配置问题。在此命令之后,它将在您的根目录中创建一个放大文件夹以及该amplifyconfiguration文件。
Amplify CLI 命令
amplify init
这是创建 Amplify 支持的应用程序的一次性初始化过程。此命令可帮助您选择使用哪个 AWS 配置文件来分配所有 AWS 资源,并选择与项目对应的框架语言(Javascript、Flutter、Java、Swift)。amplify init在 S3 存储桶中创建一个父 CloudFormation 模板,该模板将包含嵌套的 CloudFormation 模板,以便在添加其他 AWS 资源时使用。同一个 S3 存储桶还包含 Lambda zip 文件以及 AppSync 架构和解析器文件。amplify/目录在成功完成amplify init命令后创建,其中包含所有必要的元数据文件。
这是amplify/目录结构的样子:
<project-root>
|_amplify/
|_ #current-cloud-backend/
|_ amplify-meta.json
|_ .config
|_ aws-info.json
|_ project-config.json
|_ backend/
|_amplify-meta.json
|_.amplifyrc
amplify <category> add
用户可以使用此命令将必要的资源添加到他们的项目中。这将为amplify/backend/目录中的资源创建一个 CloudFormation 模板。此过程完成后,用户可以运行amplify push以运行 CloudFormation 模板并使用 Amplify IAM 用户将所有资源分配给该项目。
amplify push
该命令用于创建和更新云资源。使用它,CLI 会将最新的嵌套堆栈模板上传到 S3,然后调用 AWS CloudFormation API 来创建或更新资源。一旦 CloudFormation 成功完成,awsconfiguration.dart(对于 Flutter 项目)将被更新。此 CloudFormation 模板可在 中找到amplify/backend/awscloudformation。
amplify pull
该amplify pull命令类似于git pull。它所做的只是获取远程后端配置并更新本地环境以匹配定义。当多个开发人员在同一个后端工作并且远程后端不断更新时,此命令很有帮助。建议amplify pull定期运行以防止后端冲突。
amplify console
此命令将使用 Amplify 控制台打开浏览器到您的项目。此控制台提供集中访问以管理和查看项目中使用的所有资源。所有用户数据也在控制台中进行分析。
命令列表:
amplify <category> <subcommand>
amplify push
amplify pull
amplify env <subcommand>
amplify configure
amplify console
amplify delete
amplify help
amplify init
amplify publish
amplify run
amplify status
amplify logout
Amplify控制台
Amplify 控制台可以通过 AWS 控制台访问,并充当全栈应用程序开发和部署的控制中心。Amplify 控制台由两部分组成:
- Amplify托管
- Amplify管理用户界面
Amplify托管
Amplify 托管用于管理应用程序的前端部分。它对应于使用 Git。Git 中的每个分支都已部署,并且可通过唯一的 URL 访问。
![](https://img-blog.csdnimg.cn/a8898d59cd0542379dbfdf164b01b2ee.gif#pic_center)
Amplify管理用户界面
Amplify Admin UI 用于管理所有后端服务,如 DataStore 架构、身份验证、功能、存储、API 等。Admin UI 为底层 AWS 服务提供控制台。
https://docs.amplify.aws/images/console/backend-envs.gif
将 Amplify 与Flutter集成
将 Amplify 添加到您的项目是一个非常简单且非常快速的过程。先决条件是您应该使用 AWS 账户设置 Amplify CLI。
创建新的Flutter项目:
i) 使用 Flutter CLI 创建您的项目。
flutter create flutter_amplify_demo
pubspec.yamlii)接下来,通过打开并粘贴下面给出的依赖项来放大对项目的依赖项:
dependencies:
flutter:
sdk: flutter
amplify_flutter: '<1.0.0'
amplify_auth_cognito: '<1.0.0'
amplify_analytics_pinpoint: '<1.0.0'
iii)在此之后,运行Flutter pub get:
flutter pub get
iv) 现在要集成 Amplify,进入项目根目录并运行amplify init,如下所示:
➜ flutter_amplify_demo $ amplify init
Initializing new Amplify CLI version...
Done initializing new version.
Scanning for plugins...
Plugin scan successful
Note: It is recommended to run this command from the root of your app directory
? Enter a name for the project: flutteramplifydemo
? Enter a name for the environment: dev
? Choose your default editor: Visual Studio Code
? Choose the type of app that you're building: flutter
Please tell us about your project
? Where do you want to store your configuration file?: ./lib/
Using default provider: awscloudformation
? Select the authentication method you want to use: AWS profile
For more information on AWS Profiles, see:
https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html
? Please choose the profile you want to use: default
v) 要使用 Amplify 项目,必须在应用程序启动时对其进行初始化。为此,请编辑main.dart文件和下面给出的样板代码:
import 'package:flutter/material.dart';
import 'package:amplify_flutter/amplify.dart';
import 'package:amplify_analytics_pinpoint/amplify_analytics_pinpoint.dart';
import 'package:amplify_auth_cognito/amplify_auth_cognito.dart';
import 'amplifyconfiguration.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool _amplifyConfigured = false;
@override
void initState() {
super.initState();
_configureAmplify();
}
void _configureAmplify() async {
}
void _recordEvent() async {
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Amplify Core example app'),
),
body: ListView(padding: EdgeInsets.all(10.0), children: <Widget>[
Center(
child: Column (
children: [
const Padding(padding: EdgeInsets.all(5.0)),
Text(
_amplifyConfigured ? 'configured' : 'not configured'
),
ElevatedButton(
onPressed: _amplifyConfigured ? _recordEvent : null,
child: const Text('record event')
)
]
),
)
])
)
);
}
}
在 Amplify 中使用任何 Amplify 封装功能之前,都必须提到配置调用。请注意,此init方法只能在项目的根目录调用一次。
void _configureAmplify() async {
if (!mounted) return;
// Add Pinpoint and Cognito Plugins
Amplify.addPlugin(AmplifyAnalyticsPinpoint());
Amplify.addPlugin(AmplifyAuthCognito());
// Once Plugins are added, configure Amplify
// Note: Amplify can only be configured once.
try {
await Amplify.configure(amplifyconfig);
} on AmplifyAlreadyConfiguredException {
print("Amplify was already configured. Was the app restarted?");
}
try {
setState(() {
_amplifyConfigured = true;
});
} catch (e) {
print(e);
}
}
addPlugin()应该总是在之前调用Amplify.configure()。多次调用Amplify.configure将导致异常。
这是 Amplify with Flutter 框架系列文章的第一篇。本系列将详细介绍 Amplify 为 Flutter 提供的各项服务。所以请继续关注。
非常感谢您阅读😁。这就是今天的内容。
如果大伙有什么好的学习方法或建议欢迎大家在评论中积极留言哈,希望大家能够共同学习、共同努力、共同进步。
小编在这里祝小伙伴们在未来的日子里都可以 升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰!!
不论遇到什么困难,都不应该成为我们放弃的理由!
很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,需要一份小编整理出来的学习资料的关注我主页或者点击文末卡片免费领取~
这里是关于我自己的Android flutter学习,面试文档,视频收集大整理,有兴趣的伙伴们可以看看~
如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)