AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

构建您自己的 AWS Service Broker 服务

  • 2019-09-25
  • 本文字数:5447 字

    阅读完需:约 18 分钟

构建您自己的 AWS Service Broker 服务


AWS Service Broker 开源项目在 re:Invent 2017 大会上推出,方便开发人员使用 Pivotal Cloud Foundry 等平台在应用程序平台接口内部预置和暴露原生的 AWS 服务。


虽然 Service Broker 支持的服务不断增长,但客户希望能通过一种简单的方式来扩展 AWS Service Broker 的服务本身。在本博文中,我们将探索 AWS Service Broker 背后的工作原理,以及开发、运营和安全团队如何根据自己的业务需求自定义解决方案。


从 Service Broker 首次面世以来,创建自定义服务的流程已经改变,使其成为一个更加简单、更加愉悦的过程。我们将略微深入介绍此方面,首先是 Broker 如何使用 AWS CloudFormation 以及可以如何自定义 CloudFormation 模板。然后,我们将介绍 CloudFormation 与 Broker 的参数映射的简化情况,以及如何使用自定义的模板目录来存储自定义设置。

Service Broker 与 AWS CloudFormation

AWS Service Broker 使用 AWS CloudFormation 基础设施即代码模板来预置将在应用程序平台中使用的资源。对于 Service Broker 中可用的每个资源,都有一个规定的模板。AWS Service Broker 模板已经开源化,因此您可以根据自己的需求对它们进行修改和扩展。


在 Service Broker 的首次发行版中,您必须为您希望使用的服务创建一个 CloudFormation 模板。通过在预置时为 CloudFormation 模板中需要的一些输入使用默认值,我们简化了用户体验。(虽然这些默认参数值适合大多数常见的使用案例,但它们可以根据需要进行修改。)


然后,Service Broker 需要通过某种方式来了解应该在应用程序平台 UI 中呈现哪些 CloudFormation 模板参数,哪些参数是可选的,哪些参数是必选的,等等。在最初版本的 Broker 中,这需要创建一个 YAML 文件来记录 CloudFormation 模板和 Broker 中参数的映射关系。现在,您可以将自己的模板存储在自定义目录中,并使用自动生成的 Service Broker 元数据,无需手动参数映射。

将您自己的模板存储在自定义目录中

现在,Service Broker 本身允许您将模板存储在一个自定义目录中 — 您可以完全自定义您将用于 Broker 的模板。有一些使用案例需要这种功能。


一些客户在 Broker 中使用自己现有的 CloudFormation 模板;这些模板往往已经在他们现有的基础设施即代码管理中使用,满足他们的要求,并且通过了安全评估。对于这些客户,在 Broker 中使用这些现有的模板是非常合理的。


一些客户(尤其是希望执行严格安全性评估流程的客户)希望使用复杂的模板集合(例如 VPC、数据库层,然后使用通过网状模板堆栈来管理的前端),并将这些模板作为可重复使用的自助式构建块,供开发团队使用。开发安全运营团队可以评估现有的模板,根据自己的业务需求进行修改,然后在自己的目录中存储通过安全审批的白名单版本。这将需要用一个 S3 存储桶来存储模板,并且 Broker 的 YAML 配置文件也将需要更新以列出存储桶的位置。此外,这还需要客户将 AWS Service Broker 与 AWS GovCloud 结合使用,因为在 GovCloud 中运行的系统要求将其资源存储在 GovCloud 区域运行的 Amazon S3 中,不能使用来自公有 S3 目录的现有 Service Broker 模板。


有关设置目录的更多详细信息,请参阅 AWS Service Broker 文档。甚至还有一个 CloudFormation 前提模板,您可以使用此模板来构建 S3 存储桶和需要的权限,启动堆栈,以及将输出中的信息添加到 Broker 配置中。

OpenShift 配置示例

(请注意 S3 存储桶和区域配置。)


TARGETACCOUNTID=


TARGETROLENAME=


VPCID=


REGION=us-east-1


IMAGE=awsservicebroker/aws-servicebroker:beta


IMAGEPULLPOLICY=Always


S3BUCKET=S3KEY=templates/latestS3REGION=us-gov-west-1TABLENAME=awssbVERBOSITY=10BROKERID=awsservicebrokerPRESCRIBE_OVERRIDES=true

Cloud Foundry 配置示例


从手动参数映射转向元数据


我们进行的第二项更改是降低参数映射过程的难度。Broker 更新后,不再需要单独的 YAML 文件来记录映射,而是在 CloudFormation 模板中利用元数据生成此映射。


...Metadata:  AWS::ServiceBroker::Specification:    Version: 1.0    Tags:    - AWS    - Lex    - Bot    - NLU    - chatbot    Name: lex    DisplayName: Amazon Lex    LongDescription: Amazon Lex is a service for building conversational interfaces      into any application using voice and text.Amazon Lex provides the advanced      deep learning functionalities of automatic speech recognition (ASR) for converting      speech to text, and natural language understanding (NLU) to recognize the intent      of the text, to enable you to build applications with highly engaging user experiences      and lifelike conversational interactions.    ImageUrl: https://s3.amazonaws.com/awsservicebroker/icons/AmazonLex_LARGE.png    DocumentationUrl: https://aws.amazon.com/documentation/lex/    ProviderDisplayName: Amazon Web Services    ServicePlans:      default:        DisplayName: Standard        Description: Amazon Lex        LongDescription: Creates an Amazon Lex bot        Cost: https://aws.amazon.com/lex/pricing/        ParameterValues: {}...
复制代码


您可以看出,Broker 的规范定义了一个描述、服务计划、必选或可选参数以及默认值。此规范可以如此处的示例一样非常简单,也可以更为复杂,例如对于 Amazon Relational Database Service (Amazon RDS),开发环境和生产环境需要不同的计划,同时参数和选项也相当不同。


将映射信息变为 CloudFormation 模板中的元数据部分,有利于确保单个真相来源,更加方便客户进行自定义。但元数据的创建也仍然是一个负担。


根据一位客户工程师的反馈,元数据的创建十分痛苦,容易产生错误,处理多个计划是更需要特别小心。根据 CloudFormation 模板中参数选项的复杂度不同,人们会很容易丢失、忘记甚至忽略某个东西。该工程师反映最多的一个意见是,手动构建元数据需要的时间和精力导致他无力构建新的乐高登月模块!

自动生成 Service Broker 元数据

简单的脚本搞定一切! 现在,我们提供了一个元数据生成器来帮助构建自定义。这让您可以构建或自定义 CloudFormation 模板,并运行将会根据模板中的参数构建元数据的元数据生成器。然后,来自元数据生成器的输出将放入 CloudFormation 模板,并将新模板添加到您的自定义目录 S3 存储桶中。


元数据生成器输出示例


...==================================YAML========================================
AWS::ServiceBroker::Specification: Version: 1 Tags: - '' - '' Name: '' DisplayName: '' LongDescription: '' ImageUrl: '' DocumentationUrl: '' ProviderDisplayName: Amazon Web Services ServicePlans: production: DisplayName: Production Description: Configuration designed for production deployments LongDescription: '' Cost: '' ParameterValues: &o0 AccessCidr: AllocatedStorageAndIops: 100GB 1000IOPS AllowMajorVersionUpgrade: false AutoMinorVersionUpgrade: true AvailabilityZones: Auto BackupRetentionPeriod: 35 CidrBlocks: Auto ...
复制代码


根据使用 Service Broker 的应用程序平台不同,您可能需要为 Broker 执行一项操作才能看到新模板。Red Hat OpenShift 等应用程序平台将会在一定时间后轮询更改和更新。 Pivotal Cloud Foundry 仅会加载安装时存在的模板列表,如果您使用 Pivotal Cloud Foundry,您将需要执行 Broker 部署。这将不会影响 Broker 预置的任何现有服务,因为此信息存储在 DynamoDB 稳定会话状态中。


如要进行迭代,您需要:


  • 创建一个 S3 存储桶以存储自定义模板或新的服务模板。

  • 更新 Service Broker 配置以使用目录存储桶(请参阅上文有关 OpenShift 和 Cloud Foundry 的配置示例)。

  • 创建或自定义 CloudFormation 模板,并确保您已经拥有启动和使用业务所需服务需要的所有参数和输出。

  • 使用元数据生成器来生成 Service Broker 规范。

  • 复制生成器的输出并将它复制到 CloudFormation 模板中。

  • 将模板及其元数据规范上传到用于测试的目录 S3 存储桶中。

  • 根据您使用的应用程序平台创建新服务,例如:cf create-servicedefault。此流程是否绝对有必要? 不是,许多客户都在使用现有规定的 Service Broker 服务。AWS GovCloud 区域的客户已经在使用自定义目录,但大多数客户使用现有规定的模板,下载这些模板,然后将它们上传到自己的自定义目录中。需要自行构建自定义模板或聚合 Service Broker 所提供解决方案的客户将发现此过程更为简单。

后续步骤

  • 自己试试吧!

  • * AWS Service Broker 是一个开源项目 — 请大胆为 AWS Service Broker、服务模板的扩展做贡献,也可随时在 Service Broker 项目下提出问题。

  • 更多详细信息请参阅 AWS Service Broker。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/building-own-service-broker-services/


2019-09-25 15:001128
用户头像

发布了 1912 篇内容, 共 148.3 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

模块7(王者荣耀商城异地多活架构设计)

Geek_701557

Mysql 温故知新系列「触发器详解」

安逸的咸鱼

MySQL 7月月更

分布式事务的性能设计

穿过生命散发芬芳

分布式事务 7月月更

Vscode 搭建 C / C++ 开发环境

攻城狮杰森

c c++ vscode 开发环境 7月月更

排序子序列与倒置字符串

未见花闻

7月月更

MatrixCube揭秘102——300行实现的完整分布式存储系统MatrixKV

MatrixOrigin

MatrixOrigin MatrixOne 矩阵起源 MatrixCube MatrixKV

Linux tar打包

工程师日月

Linux tar 7月月更

Okaleido或杀出NFT重围,你看好它吗?

BlockChain先知

长安链学习研究-存储分析wal机制

长安链

Flutter 使用 AnimatedSwitcher 做场景切换

岛上码农

flutter ios 前端 安卓开发 7月月更

如何在Linux中比较多个文件?这12个优秀工具了解一下!

wljslmz

Linux 7月月更 文件比较

Azkaban 安装文档

怀瑾握瑜的嘉与嘉

Azkaban 7月月更

C#入门系列(二十二) -- 面向对象之多态

陈言必行

7月月更

函数初认识-下

芒果酱

C语言 7月月更

【萌新解题】四数之和

面试官问

LeetCode

现场可程式化逻辑闸阵列 FPGA

贾献华

7月月更

群里的初级工程师求助说,要采集采招数据,必须给他安排上

梦想橡皮擦

Python 爬虫 7月月更

读书笔记之《深入理解Java虚拟机:JVM高级特性与最佳实践》(下)

蔡农曰

Java 后端 JVM 后端技术 Java 开发

C++ Workflow 异步编程框架 - 性能优化上篇

1412

c++ GitHub 开源 异步编程 workflow

Setup的使用技巧

bo

Vue 前端 7月月更

你学会如何将项目部署到Linux系统上了吗?要不我带你耍耍。

Java学术趴

7月月更

C++ Workflow异步调度框架 - 性能优化网络篇

1412

c++ 开源 workflow 异步调度 网络框架

实习是步入社会的一道坎

KEY.L

7月月更

模块1 作业

ArkUI开发框架组件的生命周期详解

坚果

HarmonyOS OpenHarmony Open Harmony 7月月更

Spring项目中如何正确处理对象依赖

技术小生

spring 7月月更

Istio XDS配置生成实现

阿泽🧸

envoy 7月月更

Vue3 状态管理 Pinia 快速入门指南

程序员海军

Vue 状态管理 7月月更

MatrixCube揭秘 101——MatrixCube的功能与架构

MatrixOrigin

分布式 MatrixOrigin MatrixOne 矩阵起源 MatrixCube

【刷题记录】13. 罗马数字转整数

WangNing

7月月更

构建您自己的 AWS Service Broker 服务_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章