适用于 Flutter 的 AWS Amplify

2023-05-16

关于Amplify


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 中的工作原理:

应用程序管理在 Amplify 中的工作原理:

使用 Amplify 的好处:

  • 快速配置后端:使用 Amplify CLI 和 Amplify Admin UI 等工具,可以轻松配置具有身份验证、存储、功能、数据和其他常见用例的后端。
  • 轻松管理内容:通过提供管理访问权限以在没有 AWS 账户的情况下管理用户和内容,可以与非开发人员共享管理 UI。
  • 与框架无缝连接:Amplify CLI 使软件与您的项目集成变得非常容易。您所要做的就是运行amplify init并回答 CLI 工具提出的问题。
  • 几秒钟内部署:使用基于 Git 的 CI/CD 简化连接 Git 存储库、托管静态网站和单页 Web 应用程序。

Amplify 提供的服务:

  • 身份验证- 使用预构建的 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 服务集成到您的项目中的统一方式。

安装 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在您的项目中创建所有必需的资源。

您只能根据需要授予所需的权限


成功创建 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 控制台由两部分组成:

  1. Amplify托管
  2. Amplify管理用户界面

Amplify托管

Amplify 托管用于管理应用程序的前端部分。它对应于使用 Git。Git 中的每个分支都已部署,并且可通过唯一的 URL 访问。

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(使用前将#替换为@)

适用于 Flutter 的 AWS Amplify 的相关文章

随机推荐

  • 2021-07-10

    标题SQL sever基础语法 语法简介 xff1a l Create database 数据库名 xff1b l Use database 数据库名 xff1b l SQL对字母大小写不敏感 xff1b l 文本或字符串用单引号 xff1
  • Linux的基本操作(1)

    Linux的基本操作 xff08 1 xff09 1 1登录方式 1 远程登录 Linux允许同一用户在不同的控制台上以相同的身份或不同身份多次登录 xff0c 同时进行多项工作 各控制台上的交互过程石相互独立的 Login 账号 cher
  • 快速记忆常用排序

    选泡插 xff0c 快归堆希桶计基 xff0c 恩方恩老恩一三 xff0c 对恩加k恩乘k xff0c 不稳稳稳不稳稳 xff0c 不稳不稳稳稳稳
  • ssh常用命令50条

    SSH xff08 Secure Shell xff09 是一种用于远程登录 数据传输和命令执行的安全协议 下面列举了 SSH 命令的一些常见用法 xff1a 连接到远程主机 xff1a ssh username 64 hostname 其
  • Kail虚拟机的安装教程

    本指南是关于在 VMware 内部虚拟化 Kali Linux xff0c 让您拥有 Kali VM 这是使用 Kali 的好方法 xff0c 因为它与主机完全分离 xff0c 允许您与其他虚拟机 xff08 以及主机和网络上的其他机器 x
  • JDBC Connection Reset问题分析

    2014年 7 月 13 日 半年前开始 xff0c 项目组测试MM 在验证功能时 xff0c 经常报怨讲测试环境上的应用在启动时很慢 xff0c 偶尔会报失败 xff0c 遇到类似问题多数情况下重新启动一次就可以启动成功 xff0c 但少
  • 安卓DataBinding出现ActivityMainBinding类不存在

    安卓中并不存在ActivityMainBinding这个类 xff0c 这个类是在XML布局的最外层加入 lt layout gt lt layout gt 就会自动生成 如果你的XML布局的名字叫做 34 activity main 34
  • Ubuntu18.04配置交叉编译器,解压安装以后无法查到编译器的版本号

    在进行嵌入式linux开发时 xff0c 有时需要安装特定交版本的交叉编译器 xff0c 这就需要我们手动安装 xff0c 在解压安装安好并且设置了路径 xff0c 我们会发现查不到编译器的版本号 xff0c 也就是仍然无法使用交叉编译器
  • MySQL万字精华总结!你连基础的JVM运行时内存布局都忘了?含面试题+答案

    前言 Netty 是一款基于 Java 的网络编程框架 xff0c 能为应用程序管理复杂的网络编程 多线程处理以及并发 Netty 隐藏了样板和底层代码 xff0c 让业务逻辑保持分离 xff0c 更加易于复用 使用 Netty 可以得到一
  • 获取Spring中@PathVariable注解里带点的完整参数

    x1f680 优质资源分享 x1f680 学习路线指引 xff08 点击解锁 xff09 知识定位人群定位 x1f9e1 Python实战微信订餐小程序 x1f9e1 进阶级本课程是python flask 43 微信小程序的完美结合 xf
  • 使用 oh-my-posh 美化 windows terminal,让其接近oh-my-zsh

    x1f680 优质资源分享 x1f680 学习路线指引 xff08 点击解锁 xff09 知识定位人群定位 x1f9e1 Python实战微信订餐小程序 x1f9e1 进阶级本课程是python flask 43 微信小程序的完美结合 xf
  • 数据结构实验报告-01

    一 实验目的和要求 要求 1 按照群文件中的报告内容 xff0c 首先进行设计工作并加以文字记录 xff0c 然后编写代码 xff0c 测试 xff0c 分析 xff0c 再二次完善报告 xff0c 形成完整的文字记录 2 再次强调 xff
  • flutter面试题,覆盖所有面试知识点,面试必会

    为什么想跳槽 xff1f 简单说一下当时的状况 xff0c 我在这家公司做了两年多 xff0c 这两年多完成了一个大项目 xff0c 作为开发的核心主力 xff0c 开发压力很大 xff0c 特别是项目上线前的几个月是非常辛苦 xff0c
  • 删除docker容器中的文件,你还看不明白?

    原理讲解前 xff0c 先看一个最经典的业务场景 xff0c 如开发一个电商网站 xff0c 要实现支付订单的功能 xff0c 流程如下 xff1a 创建一个订单之后 xff0c 如果用户立刻支付了这个订单 xff0c 我们需要将订单状态更
  • 实战Compose——做个简洁却不简单的星球打卡App

    Focus Focus是一款帮助你集中的app 为自己的目标建立星球 xff0c 将时间投入在上面 花在星球上的每一分钟都会被记录 xff0c 每颗星球可以定制颜色与外观 为了贯彻简单干净不让人分心的设计理念 xff0c app采用白灰为主
  • android 截屏实现的几种方式

    Android 截屏分为四种 xff1a View 截屏 WebView 截屏 系统截屏 和 adb 截屏 1 View 截屏 View 截图是将当前 View 界面截取下来 xff0c 而对于屏幕上其他信息比如 xff1a 状态栏或其他应
  • iBatis使用log4j2输出日志

    原文链接这里 iBatis是一个老项目 xff0c 2 3 4 726版本发布之后 xff0c 项目改名为MyBatis xff0c 项目主页目前为http mybatis github io 我从08年开始接触iBatis xff0c 一
  • Android搭建无线调试环境

    ADB 安卓官网对此工具的介绍 Android 调试桥 adb 是一种功能多样的命令行工具 xff0c 可让您与设备进行通信 adb 命令可用于执行各种设备操作 xff08 例如安装和调试应用 xff09 xff0c 并提供对 Unix s
  • Golang:使用 FCM 实现推送通知

    firebase和设备令牌基本介绍 设备令牌是主要参赛者 xff0c 负责推送通知 这不是一个花哨的词 xff0c 它只是每个设备唯一的 id 当我们安装任何应用程序时 xff0c 我们设备的唯一令牌会存储在他们的服务器上 xff0c 他们
  • 适用于 Flutter 的 AWS Amplify

    关于Amplify Amplify 于 2017 年推出 xff0c 是面向移动和前端 Web 开发人员的端到端 AWS 解决方案 它是服务和工具的组合 xff0c 可以一起使用或单独使用 xff0c 以帮助移动和前端开发人员使用 AWS