可重用的云基础设施代码与Pulumi和JFrog Artifactory

这篇客座文章由Pulumi的Chris Smith提交,并在Pulumi博客上联合发布。
Pulumi使您能够指定云基础设施代码.这使您能够用自己喜欢的语言对云进行编程,并受益于静态分析、类型检查、ide等有用且熟悉的编码特性。
Pulumi模型的一个主要优势是,您可以创建和重用云基础设施组件使用npm这样的包管理器。
使用Pulumi创建一个云应用程序
下面是一个Pulumi程序的浓缩视图,展示了实践中的以代码为中心的模型。(你可以看到完整的源在GitHub上。)Pulumi应用程序允许您将视频上传到云端,然后使用人工智能服务分析视频中的常见对象,例如“停止标志”或“棕榈树”。然后为找到的每个对象提取缩略图。
这个例子强调了在Pulumi中使用代码包的优势。而不是直接针对各种产品(如Amazon Web Services的Lambda、Fargate和其hth华体会最新官方网站他产品)编程,而是使用包,以便在更高抽象级别上编写程序。
Pulumi程序使用云包装储存(经由桶)和任意计算Docker容器(通过任务).对于更专业的对象识别任务,它使用自定义视频它依赖于亚马逊的Rekognition服务。
通过在可重用包中描述云基础设施,客户端可以自由地将更多时间花在特定于手头任务的逻辑上,而将有关云提供商服务和api的细节留给包的实现。
const videoUploads = new cloud.Bucket(…);const extractThumbnailTask = new cloud.Task(…);const videoProcessor = new video.VideoLabelProcessor();...//只要有。mp4文件上传到S3桶,就会启动一个新的分析作业。videoUploads。onPut("onNewVideo", (newBucketObject: BucketArgs) => {videoprocess . 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 Rekogntion和SNS的交互,因此客户只需要调用analyzeVideo并提供一个回调函数onLabelingComplete.

但是可重用包的好处不仅仅在于生产力。通过重用组件,可以更容易地遵循安全最佳实践,因为任何更新都只需要对包进行。包还可以提供更高级的场景,例如处理与组织的日志记录和警报系统挂钩的详细信息。
不过,使用Pulumi管理云基础设施的一个折衷之处是,您现在需要处理这些不同包的版本控制和分发。您如何确保团队或组织内的人员使用最新版本?或者是视频包吗?或者Docker容器是使用正确的基本映像构建的?
Artifactory拯救
这就是JFrog Artifactory是否能够介入并处理整个包/依赖管理问题。
Artifactory处理代码依赖关系并构建各种类型的工件。无论它们是标准网站的软件包,还是使用Pulumi管理云基础设施的软件包,Artifactory的工作方式都是一样的。
通过使用Artifactory作为您的npm注册表为了托管用于图像识别的NPM包,我们可以可靠地实施版本控制,并提供一种安全可靠的方式来分发包。同样,Artifactory也可以用作Docker容器注册表了。
Pulumi提供了一种思考和使用软件包的新方法JFrog Artifactory仍然是那些工件的存储、管理和分发的最佳解决方案。
准备好让编码云基础设施像“编程101”一样简单了吗?
