npm 包 @aws-cdk/aws-custom-resources 使用教程

Amazon Web Services (AWS) 是一个广泛使用的云计算平台,而 AWS Cloud Development Kit (CDK) 是一个开源框架,它允许开发者们使用 TypeScript,JavaScript,Python,Java,C# 等编程语言来定义云基础架构,然后在 AWS 账户中创建该基础架构。AWS CDK 使得编写云基础架构代码变得像编写应用程序一样容易。

其中,@aws-cdk/aws-custom-resources 是一个 npm 包,它允许开发者自定义 AWS CloudFormation 资源类型(custom resources)。在这篇文章中,我们将讨论如何使用它。

安装 @aws-cdk/aws-custom-resources

在开始之前,需要确保已安装 aws-cdk-lib,用于创建项目并安装其他 AWS CDK 扩展。

然后,可以在项目中使用以下 npm 命令安装 @aws-cdk/aws-custom-resources 包:

--- ------- -----------------------------

安装完成后,可以在 TypeScript 或 JavaScript 项目中使用 importrequire 导入所需的模块。

流程

AWS CDK 中的 custom resources 使用开发者定义的代码执行,这意味着创建、更新和删除都需要自定义代码。custom resources 也支持在 CloudFormation 模板中声明,但只定义这些并未实现任何自定义逻辑。因此,必须使用 AWS CDK 创建并部署 custom resources。

以下是自定义 AWS CloudFormation 资源类型的通用流程:

  1. 定义自定义资源提供程序:构建你的自定义资源并使用 CustomResourceProvider 将其添加到 AWS CDK 项目中。
  2. 定义 CloudFormation Stack:定义自定义资源时,将指定一个或多个 CloudFormation 栈,这些栈将包含 IAM 角色、Lambda 函数等资源。您可以使用 Stack 类定义和描述 CloudFormation 栈。

示例

为了展示如何使用 @aws-cdk/aws-custom-resources,我们将创建一个自定义 CloudFormation 资源类型,使用 AWS Lambda 作为实例,并在资源创建、更新和删除时执行一些自定义代码。

安装必备依赖

在开始之前,需要确保安装以下依赖项:

  • AWS CLI,用于配置 AWS 认证凭据。
  • AWS CDK CLI,用于创建和部署自定义资源。
  • Node.js,用于编写 Lambda 函数。
  • TypeScript 和 AWS CDK TypeScript 库。

创建项目

使用以下命令在本地文件夹中创建 TypeScript 项目:

----- ------------------- -- -- -------------------
--- ---- --- ---------- ----------

安装 AWS 提供商 API

在继续前进之前,请确保安装了 aws-sdk

--- ------- -------

定义 Custom Resource Provider

使用以下代码在 TypeScript 项目中定义 Custom Resource Provider:

------ - -- --- ---- --------------
------ - -- --------------- ---- -----------------------------------
------ - -- ------ ---- -------------------------
------ - -- --- ---- ----------------------
------ - -- ---- ---- -----------------------

--------- ------------------- -
  -------- --------------- ---------------------
-

------ ----- -------------- ------- ------------- -
  ------ -------- --------- ----

  ------------------ -------------- --- ------- ------- -------------------- -
    ------------ ----

    ----- - ------------- - - ----- -- ---

    ----- -------- - --- ------------------------------ ---------------- -
      --------------- --- --------------------- -------------- -
        -----------------
        -------- ---------------------------
        ----- ------------------------------------------------
        -------- ----------------
      ---

      ------------- ----------------------------
      -------------- ------------------------
    ---

    ------------- - ---------
  -
-

此定义使用以下步骤:

  1. 使用 TypeScript 引入此项目的所有必需模块并定义 Custom Resource 属性。
  2. 定义 CustomResource 类,它扩展了 CDK 的 Construct 类。这是您组成 AWS CDK 项目中资源的最基本单元。此定义将用于创建一个新的自定义资源类型。
  3. 创建 provider。这是您在 AWS CDK 中使用自定义资源时需要指定的提供商,如上所述。
  4. 在此定义中,可以将 Lambda 函数用作自定义资源的实例。

创建 Lambda 函数

使用以下代码在 TypeScript 项目中定义 Lambda 函数:

------ - -- --- ---- --------------
------ - -- ------ ---- -------------------------

--------- ------------------------- -
  -------- ------------- - ----- -------- ------ --
  -------- -------- -------
  -------- --------- -------
-

------ ----- -------------------- ------- ------------- -
  ------ -------- --------- ----------------

  ------------------ -------------- --- ------- ------- -------------------------- -
    ------------ ----

    ----- - ------------ -------- ------- - --------------- - - ----- -- ---

    ------------- - --- --------------------- ---------------- -
      ------------
      -------- ---------------------------
      ----- -------------------------------
      --------
    ---
  -
-

此定义使用以下步骤:

  1. 使用 TypeScript 引入此项目的所有必需模块并定义 Lambda 函数。
  2. 定义 CustomResourceLambda 类,扩展 CDK 的 Construct 类,并定义函数属性。
  3. 创建与自定义云启动类型对应的 Lambda 函数。

创建自定义 CloudFormation 栈

使用以下代码在 TypeScript 项目中定义 CloudFormation 栈:

------ - -- --- ---- --------------
------ - -- ---- ---- -----------------------
------ - -- --- ---- ----------------------

--------- ------------------------ -
  -------- ----------- -------
  -------- ------------------ -------
-

------ ----- ------------------- ------- --------- -
  ------------------ -------------- --- ------- ------- ------------------------- -
    ------------ --- ----------------- -
      ------------ ------------------------
    ---

    ----- ---- - --- -------------- ------------ -
      ---------- --- ---------------------------------------------
      ---------------- -----------------------------------------------------------------------------------------
    ---

    ----- ---------- - --- ---------------------
      ------- -----------------
      ---------- -----------------------
      -------- -
        ----------------------
        -----------------------
        --------------------
      --
    ---

    -----------------------------

    ----- ------------ - -----------------------------

    ----- --------- - -
      -------- -------------------
      -------- -----------------------
      ------------ -
        ------------------- -- ------------------ ----------------------------------- ---
      --
    --

    ----- -------------- - --- -------------------------- ----------------------- -----------

    ----- ------------------- - -
      -------------- -
        ------------- -------------------------------------
        ----- -----
      --
    --

    ----- -------------- - --- -------------------- ------------------------------- ---------------------

    --- ------------------- ---------------------------------- -
      ------ -----------------------------------
    ---
  -
-

此定义使用以下步骤:

  1. 使用 TypeScript 引入此项目的所有必需模块并定义 Stack 属性。
  2. 定义 CustomResourceStack 类,扩展 CDK 的 Stack 类,并定义 stackName 和 stackDescription 属性。
  3. 创建自定义资源的 IAM 引导、Lambda 函数并使用 CustomResource 将其添加到 CDK 项目中。

使用部署程序进行 CloudFormation 堆部署

使用以下代码将 CloudFormation 栈部署到 AWS 中:

------ - -- --- ---- --------------
------ - ------------------- - ---- ----------

----- --- - --- ----------

--- ------------------------ ---------------------- - ---------- ---------------------- ----------------- --- ------ ---------- ---

此代码创建了 App 对象并将 CustomResourceStack 添加到其中。该对象将从 AWS CLI 或 AWS CDK CLI 接收凭据以执行 CloudFormation 堆部署。

测试

现在,在 AWS 控制台打开 CloudFormation。找到您创建的堆栈,查看 Events 标签,以便查看自定义资源的创建。

结论

在本文中,我们讨论了如何使用 @aws-cdk/aws-custom-resources 将 custom resource 包含在 AWS CDK TypeScript 项目中。通过修改示例代码,可以使用此 npm 包创建各种自定义资源类型。NoSuchBucketException

不仅是在 AWS CDK 项目中编写自定义资源,@aws-cdk/aws-custom-resources 包也提供了灵活性和自定义能力,在您的云基础架构项目中实现各种需求。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/600671a730d0927023822614


猜你喜欢

  • npm 包 gtrend 使用教程

    前言 在现代 web 开发中,前端工程师使用的工具和技术是不断进化和发展的。而其中,npm 几乎成为了每个前端工程师的必备工具之一。npm 可以让我们以一种更加高效、可维护的方式管理我们的项目依赖,包...

    4 年前
  • 前端技术文章:webpack-bemjson-to-jsx-loader 使用教程

    在前端开发中,BEM 等 CSS 模块化方案已经变得非常流行。为了更加方便地在 React 项目中使用 BEM,webpack-bemjson-to-jsx-loader 应运而生。

    4 年前
  • npm 包 js-chordpro 使用教程

    作为一名前端开发者,经常需要在网页中嵌入歌词和和弦信息,让用户更好地理解和演唱歌曲。而 js-chordpro 就是一个非常方便的 npm 包,可以快速地生成带有和弦的歌词。

    4 年前
  • npm包 @ikoala/logger使用教程

    简介 在前端开发过程中,我们经常需要输出日志来帮助调试应用程序。为了方便管理日志输出,我们可以使用npm包@ikoala/logger,它是一个轻量级的日志记录工具,可以让我们在项目中方便地输出和管理...

    4 年前
  • npm 包 console-g-translate 使用教程

    在前端开发中,我们经常需要翻译文本或者查阅不同的语言的翻译。console-g-translate 是一个 npm 包,它能够在控制台中翻译文本,让开发者的日常工作变得更加方便。

    4 年前
  • npm 包 friday-cli 使用教程

    前言 现在的前端开发基本使用 npm 包管理器来管理自己的项目,而且社区的开源项目也越来越多,这使得我们能更快的开发、更好的维护我们的项目。在这个过程中,我们可能会经常使用到各种各样的命令行工具,如 ...

    4 年前
  • NPM 包 Laravel Mix Vue Auto Routing 使用教程

    如果您在使用 Vue.js 开发 WEB 应用程序的过程中,您一定遇到了需要添加路由的问题,那么 Laravel Mix Vue Auto Routing 就是您的救星。

    4 年前
  • npm 包 async-counter 使用教程

    简介 在前端开发中,经常会遇到需要异步执行任务并统计任务数量的情况。例如,在页面中加载多个图片,需要等所有图片加载完毕后再执行下一步操作。这时,就需要使用计数器来统计异步任务的完成情况。

    4 年前
  • npm 包 lunzi-zzc-0-3 使用教程

    在前端开发中,我们常常会使用第三方库和工具来帮助我们更加高效地完成我们的工作。其中,npm 是一个非常常见的包管理工具,它可以帮助我们方便地安装和管理各种 JavaScript 工具和库。

    4 年前
  • npm 包 online-vue-dplayer 使用教程

    在前端开发中,视频播放是一个基础功能,而 DPlayer 是一个使用 HTML5 技术实现的开源视频播放器库。而 npm 包 online-vue-dplayer 将 DPlayer 封装成了一个 V...

    4 年前
  • npm 包 jil 使用教程

    前言 jil 是一个 JavaScript 库,用于在 HTML5 的画布上绘制复杂的 2D 矢量图形。它提供了一个方便的 API,可以帮助开发者绘制圆、直线、连续的线、三次贝塞尔曲线等各种形状。

    4 年前
  • npm 包 @codeforamerica/style 使用教程

    简介 在前端开发中,为了方便地使用一些设计好的样式,我们通常会使用已有的 CSS 框架或者样式库。其中,@codeforamerica/style 是一个非常优秀的样式库,它提供了一些流畅、现代、可重...

    4 年前
  • npm 包 rpo 使用教程

    前言 rpo 全称为 react-page-object,是一个基于 React 框架的页面对象模式(Page Object Pattern)的实现库,它提供了一些方便的方法帮助在 React 中使用...

    4 年前
  • npm 包 crudder 使用教程

    前言 随着前端开发的迅猛发展,前端越来越需要使用后端的数据,而后端开发人员也需要更便捷地提供数据接口。这时,CRUD 增删改查操作成了必备的技能。npm 包 crudder 就是为解决前后端开发人员 ...

    4 年前
  • npm 包 extended-angular2-wizard 使用教程

    extended-angular2-wizard 是一个 Angular2 的向导组件,可帮助用户通过界面引导他们完成特定的任务。它有多种选项供用户选择,使用户体验更加自由和灵活。

    4 年前
  • npm 包 @sourecode/deploy-cli 使用教程

    在前端开发中,我们通常需要将我们编写的代码发布到生产环境中,这个过程需要花费很多时间和精力。但是,通过使用 npm 包 @sourecode/deploy-cli,我们可以大大简化代码发布过程,节省时...

    4 年前
  • npm 包 @nornagon/cld 使用教程

    介绍 @nornagon/cld 是一个基于 Google Cloud Vision API 的语言检测工具,它可以通过输入文本或图片来检测文本的语言种类。这个 npm 包简化了使用 Cloud Vi...

    4 年前
  • npm 包 iter-duct 使用教程

    前言 在前端开发中,我们经常需要处理与数组、对象相关的操作,iter-duct 是一个非常优秀的 npm 包,旨在提供更高效、更简洁的处理方式。本文将详细介绍 iter-duct 的使用方法,并给出相...

    4 年前
  • npm 包 apple-musickit-example 使用教程

    简介 apple-musickit-example 是基于 Apple MusicKit JS 基础 API 构建的 npm 包,可与 JavaScript 应用程序一起使用,使开发人员能够轻松地将 ...

    4 年前
  • npm包 react-qr-reader 使用教程

    什么是 react-qr-reader? react-qr-reader是一款基于React开发的二维码识别组件。通过使用react-qr-reader,我们可以轻松地实现二维码识别功能,用于扫描登录...

    4 年前

相关推荐

    暂无文章