使用Pulumi和JFrog Artifactory将可重用的云基础设施作为代码

JFrog和Pulumi

这篇客座文章由Pulumi的Chris Smith提交,并与他人共同发表在Pulumi博客上。

Pulumi来指定云基础架构代码.这使您能够用自己喜欢的语言对云进行编程,并受益于有用和熟悉的编码特性,如静态分析、类型检查、ide等。

Pulumi模型的一个主要优点是,你可以创建和重用云基础设施组件使用包管理器,比如npm。

用Pulumi创建一个云应用程序

下面是Pulumi程序的压缩视图,展示了以代码为中心的模型在实践中的应用。(你可以看到完整的源在GitHub上。)Pulumi应用程序允许你将视频上传到云端,然后使用人工智能服务来分析视频中的常见物体,例如“停车标志”或“棕榈树”。然后为找到的每个对象提取一个缩略图。

这个例子突出了在Pulumi中使用代码包的优势。而不是直接针对各种产品(如Amazon Web Services的Lambda、Fargate等)hth华体会最新官方网站进行编程,而是使用包,以便在更高的抽象层次上编写程序。

Pulumi程序使用包装存储(通过)和在Docker容器上的任意计算(通过任务).对于更专业的对象识别任务,它使用自定义视频它依赖于亚马逊的rekrecognition服务。

通过在可重用包中描述云基础设施,客户可以自由地将更多时间花在特定于手头任务的逻辑上,而将有关云提供商服务和api的细节留给包的实现。

const videoUploads = new cloud.Bucket(…);const extractThumbnailTask = new cloud.Task(…);const videoProcessor = new video.VideoLabelProcessor();…//每当上传。mp4文件到S3桶时,启动一个新的分析作业。videoUploads。onPut("onNewVideo", (newBucketObject: BucketArgs) => {videoProcessor.analyzeVideo(videoUploads.get(), newBucketObject.key);…}, {keySuffix: ".mp4"});… // Whenever an analysis job completes, the onLabelComplete callback is called. The function // defined here is run on the cloud using AWS Lambda, which then will kick off an AWS Fargate // task to perform the image extraction. videoProcessor.onLabelingComplete((file: string, labels: VideoLabels[]) => { ... // Spin up our Docker container to perform the image extraction process, // uses AWS Fargate under the hood. extractThumbnailTask.run(...); ... });


Pulumi项目的架构图如下所示。导出的
VideoLabelProcessor类处理与AWS rekogtion和SNS的交互,因此客户端只需要调用analyzeVideo并提供一个回调onLabelingComplete

Pulumi架构

但是可重用包的好处不仅仅是生产力。通过重用组件,遵循安全性最佳实践变得更加容易,因为任何更新都只需要对包进行。包还可以提供更高级的场景,例如处理连接到组织的日志和警报系统的细节。

然而,使用Pulumi管理云基础设施的一个权衡是,您现在需要处理这些不同包的版本控制和分发。如何确保团队或组织内的人员使用的是最新版本?或者是视频包吗?或者Docker容器是使用正确的基础映像构建的?

人工救援

这就是JFrog Artifactory是否可以介入并处理整个包/依赖管理问题。

Artifactory处理代码依赖并构建各种类型的工件。无论是用于标准网站的软件包,还是用于使用Pulumi管理云基础设施的软件包,Artifactory的工作原理都是一样的。

通过使用Artifactory作为npm注册表为了承载用于图像识别的NPM包,我们可以可靠地执行版本控制,并提供一种安全、可靠的方式来分发包。类似地,Artifactory也可以用作Docker容器注册表了。

Pulumi提供了一种思考和使用软件包的新方法JFrog Artifactory仍然是这些工件的存储、管理和分发的最佳解决方案。

准备好让云基础设施编码像“编程101”一样简单了吗?

了解更多关于使用Pulumi与Artifactory和访问pulumi.io