选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

AWS CDK 的教程 AWS Cloud9

聚焦模式
AWS CDK 的教程 AWS Cloud9 - AWS Cloud9

AWS Cloud9 不再向新客户提供。 AWS Cloud9 的现有客户可以继续正常使用该服务。了解更多

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS Cloud9 不再向新客户提供。 AWS Cloud9 的现有客户可以继续正常使用该服务。了解更多

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本教程向您展示了如何在 AWS Cloud9 开发环境 AWS Cloud Development Kit (AWS CDK) 中使用。 AWS CDK 是一组软件工具和库,开发人员可以使用它们将 AWS 基础架构组件建模为代码。

AWS CDK 包括 AWS 构造库,你可以用它来快速解决许多任务 AWS。例如,您可以使用 Fleet 构造将代码完全且安全地部署到一队主机。您可以创建自己的构造为架构的各种元素建模,与其他人共享这些构造或将其发布到社区。有关更多信息,请参阅 AWS Cloud Development Kit 开发人员指南

按照本教程操作并创建此示例可能会对您的 AWS 账户收费。其中包括亚马逊 EC2、亚马逊 SNS 和亚马逊 SQS 等服务可能产生的费用。有关更多信息,请参阅亚马逊 EC2 定价、亚马逊 SNS 定价和亚马逊 S QS 定价。

先决条件

在使用此示例之前,请确保您的设置满足以下要求:

  • 您必须拥有现有的 AWS Cloud9 EC2 开发环境。此示例假设您的 EC2 环境已连接到运行 Amazon Linux 的亚马逊 EC2 实例,或者 Ubuntu 服务器。如果您有不同类型的环境或操作系统,可能需要按照本示例的说明来设置相关的工具。有关更多信息,请参阅 在中创建环境 AWS Cloud9

  • 您已经打开了现有环境的 AWS Cloud9 IDE。打开环境时,会在 Web 浏览器中 AWS Cloud9 打开该环境的 IDE。有关更多信息,请参阅 在中打开环境 AWS Cloud9

步骤 1:安装所需工具

在此步骤中,您将在您的环境中安装运行用 TypeScript 编程语言编写的示例 AWS CDK 所需的所有工具。

  1. 节点版本管理器(或 nvm),用于稍后安装 Node.js。

  2. Node.js,这是示例所必需的,包含 Node Package Manager npm,或者你用它来安装 TypeScript 和 AWS CDK 更高版本。

  3. TypeScript,这是本样本所要求的。( AWS CDK 还支持其他几种编程语言。)

  4. 这些区域有:AWS CDK

步骤 1.1:安装节点版本管理器 (nvm)

  1. 在 AWS Cloud9 IDE 的终端会话中,确保安装了最新的安全更新和错误修复。要执行此操作,请运行 yum update(适用于 Amazon Linux)或 apt update 命令(适用于 Ubuntu Server)。(要开始新的终端会话,请在菜单栏上依次选择 Window(窗口)> New Terminal(新建终端)。)

    对于 Amazon Linux:

    sudo yum -y update

    对于 Ubuntu Server:

    sudo apt update
  2. 确认是否已安装 nvm。为此,请运行带 --version 选项的 nvm 命令。

    nvm --version

    如果成功,则输出包含 nvm 版本号,并且您可以向前跳至 步骤 1.2:安装 Node.js

  3. 下载并安装 nvm。要执行此操作,请运行安装脚本。在此示例中,安装了 v0.33.0,但您可以在此处检查 nvm 的最新版本。

    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
  4. 开始使用 nvm。您可用关闭终端会话并重新启动,或者查找包含命令以加载 nvm~/.bashrc 文件。

    . ~/.bashrc

步骤 1.2:安装 Node.js

  1. 确认是否已安装 Node.js,如果已安装,请确认安装的版本为 16.17.0 或更高版本。此示例使用 Node.js 16.17.0 进行测试。要检查结果,请在终端会话仍在 IDE 中打开的情况下,运行带有 --version 选项的 node 命令。

    node --version

    如果已安装 Node.js,则输出将包含版本号。如果该版本号是 v16.17.0,请向前跳至 步骤 1.3:安装 TypeScript

  2. 安装 Node.js 16,方法是运行带有 install 操作的 nvm 命令。

    注意

    你也可以运行nvm install node安装 Node.js 的长期支持 (LTS) 版本。 AWS Cloud9 支持追踪 Node.js 的 LTS 版本。

    nvm install v16
  3. 开始使用 Node.js 16。为此,请运行 nvm 命令与 alias 操作、别名的版本号以及要用于该别名的版本,如下所示。

    nvm alias default 16
    注意

    上述命令将 Node.js 16 设置为 Node.js 的默认版本。或者,您可以运行带有 use 操作(如 nvm use 16.17.0 )而非 alias 操作的 nvm 命令。不过,use 操作会导致该版本的 Node.js 仅在当前终端会话运行时运行。

  4. 要确认您使用的是 Node.js 16,请再次运行 node --version 命令。如果已安装正确的版本,则输出将包含版本 v16。

步骤 1.3:安装 TypeScript

  1. 确认您是否已经 TypeScript 安装。为此,在终端会话仍在 IDE 中处于打开状态的情况下,使用--version选项运行命令行 TypeScript 编译器。

    tsc --version

    如果您已 TypeScript 安装,则输出将包含 TypeScript 版本号。如果 TypeScript 已安装,请直接跳至步骤 1.4:安装 AWS CDK

  2. 安装 TypeScript。为此,请运行带有install操作、-g选项和 TypeScript 软件包名称的npm命令。它 TypeScript 作为全局软件包安装在环境中。

    npm install -g typescript
  3. 确认 TypeScript 已安装。为此,请使用--version选项运行命令行 TypeScript 编译器。

    tsc --version

    如果 TypeScript 已安装,则输出将包含 TypeScript 版本号。

步骤 1.4:安装 AWS CDK

  1. 确认您是否已经 AWS CDK 安装了。为此,请在终端会话仍在 IDE 中打开的情况下,运行带有 --version 选项的 cdk 命令。

    cdk --version

    如果安装了, AWS CDK 则输出将包含 AWS CDK 版本号和内部版本号。向前跳至 步骤 2:添加代码

  2. AWS CDK 通过运行npm命令以及install操作、要安装的 AWS CDK 软件包的名称以及在环境中全局安装软件包的-g选项来安装。

    npm install -g aws-cdk
  3. 确认已 AWS CDK 安装并正确引用。为此,请运行带 --version 选项的 cdk 命令。

    cdk --version

    如果成功,则会显示 AWS CDK 版本号和内部版本号。

步骤 2:添加代码

在此步骤中,您将创建一个示例 TypeScript 项目,其中包含 AWS CDK 以编程方式部署 AWS CloudFormation 堆栈所需的所有源代码。此堆栈在 AWS 您的账户中创建一个 Amazon SNS 主题和一个 Amazon SQS 队列,然后订阅该队列以订阅该主题。

  1. 在终端会话仍在 IDE 中打开的情况下,创建存储项目源代码的目录,例如您环境中的 ~/environment/hello-cdk 目录。然后切换到该目录。

    rm -rf ~/environment/hello-cdk # Remove this directory if it already exists. mkdir ~/environment/hello-cdk # Create the directory. cd ~/environment/hello-cdk # Switch to the directory.
  2. 将该目录设置为的 TypeScript 语言项目 AWS CDK。为此,请运行带有 init 操作、 sample-app 模板和 --language 选项以及编程语言名称的 cdk 命令。

    cdk init sample-app --language typescript

    这将在该目录中创建以下文件和子目录。

    • 隐藏的 .git 子目录和隐藏的 .gitignore 文件,可使项目与 Git 等源控制工具兼容。

    • lib 子目录,其中包含 hello-cdk-stack.ts 文件。此文件包含您的 AWS CDK 堆栈的代码。此代码将在此过程的下一步骤中介绍。

    • bin 子目录,其中包含 hello-cdk.ts 文件。此文件包含您的 AWS CDK 应用程序的入口点。

    • node_modules 子目录,其中包含应用程序和堆栈可根据需要使用的支持代码包。

    • 隐藏的 .npmignore 文件,其中列出了 npm 生成代码时不需要的子目录和文件类型。

    • cdk.json 文件,其中包含使 cdk 命令运行更轻松的信息。

    • package-lock.json 文件,其中包含 npm 可用于减少可能的生成和运行错误的信息。

    • package.json 文件,其中包含使 npm 命令运行更轻松以及可能减少构建和运行错误的信息。

    • 一个README.md文件,其中列出了可以用来运行的有用命令npm和 AWS CDK.

    • tsconfig.json 文件,其中包含使 tsc 命令运行更轻松以及可能减少构建和运行错误的信息。

  3. Environment(环境)窗口中,打开 lib/hello-cdk-stack.ts 文件,并浏览该文件中的以下代码。

    import sns = require('@aws-cdk/aws-sns'); import sqs = require('@aws-cdk/aws-sqs'); import cdk = require('@aws-cdk/cdk'); export class HelloCdkStack extends cdk.Stack { constructor(parent: cdk.App, name: string, props?: cdk.StackProps) { super(parent, name, props); const queue = new sqs.Queue(this, 'HelloCdkQueue', { visibilityTimeoutSec: 300 }); const topic = new sns.Topic(this, 'HelloCdkTopic'); topic.subscribeQueue(queue); } }
    • Stack、、AppStackPropsQueue、和Topic类分别表示 AWS CloudFormation 堆栈及其属性、可执行程序、Amazon SQS 队列和 Amazon SNS 主题。

    • HelloCdkStack类代表此应用程序的 AWS CloudFormation 堆栈。此堆栈包含用于此应用程序的新 Amazon SQS 队列和 Amazon SNS 主题。

  4. Environment(环境)窗口中,打开 bin/hello-cdk.ts 文件,并浏览该文件中的以下代码。

    #!/usr/bin/env node import cdk = require('@aws-cdk/cdk'); import { HelloCdkStack } from '../lib/hello-cdk-stack'; const app = new cdk.App(); new HelloCdkStack(app, 'HelloCdkStack'); app.run();

    此代码从 HelloCdkStack 文件中加载、实例化然后运行 lib/hello-cdk-stack.ts 类。

  5. 用于npm运行编 TypeScript 译器以检查编码错误,然后启用 AWS CDK 以执行项目的bin/hello-cdk.js文件。为此,请从项目的根目录中运行带有 run 操作的 npm 命令,指定 package.json 文件中的 build 命令值,如下所示。

    npm run build

    前面的命令运行 TypeScript 编译器,该编译器添加了支持lib/hello-cdk-stack.d.ts文件bin/hello-cdk.d.ts和文件。该编译器还可将 hello-cdk.tshello-cdk-stack.ts 文件转换为 hello-cdk.jshello-cdk-stack.js 文件。

步骤 3:运行代码

在此步骤中,您将指示根据bin/hello-cdk.js文件中的代码创建 AWS CloudFormation 堆栈模板。 AWS CDK 然后,您指示部署堆栈,该 AWS CDK 堆栈将创建 Amazon SNS 主题和 Amazon SQS 队列,然后为队列订阅该主题。然后,通过从主题向队列发送消息,确认已成功部署主题和队列。

  1. AWS CDK 创建 AWS CloudFormation 堆栈模板。为此,在终端会话仍在 IDE 中打开的情况下,从项目的根目录,运行带有 synth 操作和堆栈名称的 cdk 命令。

    cdk synth HelloCdkStack

    如果成功,输出将显示 AWS CloudFormation 堆栈模板的Resources部分。

  2. 首次在特定 AWS 账户和 AWS 区域组合的环境中部署 AWS CDK 应用程序时,必须安装引导堆栈。该堆栈包含完成各种操作 AWS CDK 所需的各种资源。例如,此堆栈包含一个 Amazon S3 存储桶, AWS CDK 用于在其部署过程中存储模板和资产。要安装引导堆栈,请运行带有 bootstrap 操作的 cdk 命令。

    cdk bootstrap
    注意

    如果您在cdk bootstrap未指定任何选项的情况下运行,则使用默认 AWS 账户和 AWS 区域。您还可以通过指定配置文件和账户/区域组合来引导特定环境。例如:

    cdk bootstrap --profile test 123456789012/us-east-1
  3. 让 AWS CDK 运行 AWS CloudFormation 堆栈模板来部署堆栈。为此,从项目的根目录,运行带有 deploy 操作和堆栈名称的 cdk 命令。

    cdk deploy HelloCdkStack

    如果成功,则输出将显示 HelloCdkStack 堆栈已部署且没有错误。

    注意

    如果输出显示堆栈未定义环境、无法从标准位置获取 AWS 凭据或未配置区域的消息,请确保在 IDE 中正确设置了您的 AWS 凭据,然后再次运行该cdk deploy命令。有关更多信息,请参阅 AWS 服务 从中的环境中呼叫 AWS Cloud9

  4. 要确认 Amazon SNS 主题和 Amazon SQS 队列已成功部署,请发送消息到该主题,然后检查队列是否收到消息。为此,您可以使用诸如 AWS Command Line Interface (AWS CLI) 或之类的工具 AWS CloudShell。有关这些工具的更多信息,请参阅 AWS CLI 还有 aws-shell 教程 AWS Cloud9

    例如,要在终端会话仍在 IDE 中处于打开状态的情况下 AWS CLI 向主题发送消息,请使用运行 Amazon SNS publish命令,提供消息的主题和正文、主题的 AWS 区域以及主题的 Amazon 资源名称 (ARN)。

    aws sns publish --subject "Hello from the AWS CDK" --message "This is a message from the AWS CDK." --topic-arn arn:aws:sns:us-east-2:123456789012:HelloCdkStack-HelloCdkTopic1A234567-8BCD9EFGHIJ0K

    在前面的命令中,arn:aws:sns:us-east-2:123456789012:HelloCdkStack-HelloCdkTopic1A234567-8BCD9EFGHIJ0K替换为 AWS CloudFormation 分配给该主题的 ARN。为获取该 ID,您可以运行 Amazon SNS list-topics 命令。

    aws sns list-topics --output table --query 'Topics[*].TopicArn'

    如果成功,则 publish 命令的输出将显示所发布消息的 MessageId 值。

    要检查队列是否收到消息,请运行 Amazon SQS receive-message 命令,提供队列的 URL。

    aws sqs receive-message --queue-url https://queue.amazonaws.com/123456789012/HelloCdkStack-HelloCdkQueue1A234567-8BCD9EFGHIJ0K

    在前面的命令中,https://queue.amazonaws.com/123456789012/HelloCdkStack-HelloCdkQueue1A234567-8BCD9EFGHIJ0K替换为 AWS CloudFormation 分配给队列的 ARN。为获取该 URL,您可以运行 Amazon SQS list-queues 命令。

    aws sqs list-queues --output table --query 'QueueUrls[*]'

    如果成功,则 receive-message 命令的输出将显示收到的消息的相关信息。

步骤 4:清除

为防止在您使用完此示例后继续向您的 AWS 账户收费,您应该删除 AWS CloudFormation 堆栈。此步骤将删除 Amazon SNS 主题和 Amazon SQS 队列。您还应该删除环境。

步骤 4.1:删除堆栈

在终端会话仍在 IDE 中打开的情况下,从项目的根目录,运行 cdk 命令及 destroy 操作和堆栈名称。

cdk destroy HelloCdkStack

当系统提示删除堆栈时,请键入 y,然后按 Enter 键。

如果成功,则输出将显示 HelloCdkStack 堆栈已删除且没有错误。

步骤 4.2:删除环境

要删除环境,请参阅 删除中的环境 AWS Cloud9

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。