

# 将适用于 JetBrains 的 AWS Toolkit 与 AWS App Runner 搭配使用
<a name="using-apprunner"></a>

[AWS App Runner](https://docs.aws.amazon.com/apprunner/latest/dg/what-is-apprunner.html) 提供了一种快速、简单且经济高效的方式，从源代码或容器镜像直接部署到 AWS 云中可扩展且安全的 Web 应用程序。有了它，您不需要学习新技术、决定要使用的计算服务，也不需要了解如何预置和配置 AWS 资源。

您可以使用 AWS App Runner 创建和管理基于*源镜像*或*源代码*的服务。如果您使用源镜像，则可以选择存储在镜像存储库中的公有或私有容器镜像。App Runner 支持以下镜像存储库提供商：
+ Amazon Elastic Container Registry (Amazon ECR)：在 AWS 账户中存储私有镜像。
+ Amazon Elastic Container Registry Public (Amazon ECR Public)：存储公开可读的镜像。

 如果选择源代码选项，则可以从受支持的存储库提供商维护的源代码存储库进行部署。目前，App Runner 支持将 [GitHub](https://github.com/) 作为源代码存储库提供商：

## 先决条件
<a name="apprunner-prereqs"></a>

本部分假设您已经拥有 AWS 账户和具有 AWS App Runner 的最新版 AWS Toolkit for JetBrains。除了这些核心要求之外，请确保所有相关的 IAM 用户都有权与 App Runner 服务进行交互。此外，您还需要获取有关服务源的特定信息，例如容器镜像 URI 或与 GitHub 存储库的连接。创建 App Runner 服务时，您需要使用此信息。

### 为 App Runner 配置 IAM 权限
<a name="app-runner-permissions"></a>

授予 App Runner 所需权限的最简单方法是将现有 AWS 托管策略附加到相关的 IAM 实体，特别是用户或组。App Runner 提供两种可附加到 IAM 用户的托管策略：
+ `AWSAppRunnerFullAccess`：允许用户执行所有 App Runner 操作。
+ `AWSAppRunnerReadOnlyAccess`：允许用户列出和查看有关 App Runner 资源的详细信息。

此外，如果您从 Amazon Elastic Container Registry (Amazon ECR) 中选择私有存储库作为服务源，则必须为 App Runner 服务创建以下访问角色：
+ `AWSAppRunnerServicePolicyForECRAccess`：允许 App Runner 访问您账户中的 Amazon Elastic Container Registry (Amazon ECR) 镜像。

您可以使用**创建 App Runner 服务**对话框来创建此 IAM 角色。

**注意**  
**AWSServiceRoleForAppRunner** 服务相关角色允许 AWS App Runner 完成以下操作：  
将日志推送到 Amazon CloudWatch Logs 日志组。
创建 Amazon CloudWatch Events 规则，以订阅 Amazon Elastic Container Registry (Amazon ECR) 镜像推送。
无需手动创建 服务相关角色。在 AWS 管理控制台 中创建 AWS App Runner 或使用 AWS Toolkit for JetBrains 调用的 API 操作进行创建时，AWS App Runner 将为您创建此服务相关角色。

有关更多信息，请参阅 *AWS App Runner 开发人员指南*中的[适用于 App Runner 的 Identity and Access Management](https://docs.aws.amazon.com/apprunner/latest/dg/security-iam.html)。

### 获取 App Runner 的服务源
<a name="app-runner-sources"></a>

您可以使用 AWS App Runner 从源镜像或源代码部署服务。

------
#### [ Source image ]

如果从源镜像进行部署，则可以从私有或公有 AWS 镜像注册表中获取指向该镜像存储库的链接。
+ Amazon ECR 私有注册表：复制使用 Amazon ECR 控制台的私有存储库的 URI：[https://console.aws.amazon.com/ecr/repositories](https://console.aws.amazon.com/ecr/repositories)。
+ Amazon ECR 公共注册表：复制使用 Amazon ECR Public Gallery 的公有存储库的 URI：[https://gallery.ecr.aws/](https://gallery.ecr.aws)。

在**创建 App Runner 服务**对话框中输入源的详细信息时，您可以指定映像存储库的 URI。

有关更多信息，请参阅 *AWS App Runner 开发人员指南*中的[基于源镜像的 App Runner 服务](https://docs.aws.amazon.com/apprunner/latest/dg/service-source-image.html)。

------
#### [ Source code ]

要将源代码部署到 AWS App Runner 服务，该代码必须存储在由受支持的存储库提供商维护的 Git 存储库中。App Runner 支持一个源代码存储库提供商：[GitHub](https://github.com/)。

有关设置 GitHub 存储库的信息，请参阅 GitHub 上的[入门文档](https://docs.github.com/en/github/getting-started-with-github)。

要将源代码从 GitHub 存储库部署到 App Runner 服务，App Runner 需要建立与 GitHub 的连接。如果您的存储库为私有（即它不能在 GitHub 上公开访问），则必须向 App Runner 提供连接详细信息。

**重要**  
要创建 GitHub 连接，必须使用 App Runner 控制台 ([https://console.aws.amazon.com/apprunner](https://console.aws.amazon.com/apprunner)) 创建将 GitHub 链接到 AWS 的连接。使用**创建 App Runner 服务**对话框指定有关源代码存储库的详细信息时，您可以选择 **GitHub 连接**页面上可用的连接。  
有关更多信息，请参阅 *AWS App Runner 开发人员指南*中的[管理 App Runner 连接](https://docs.aws.amazon.com/apprunner/latest/dg/manage-connections.html)。

App Runner 服务实例提供了允许构建和运行代码的托管运行时。AWS App Runner 目前支持以下运行时：
+ Python 托管运行时 
+ Node.js 托管运行时

借助 AWS Toolkit for JetBrains 中提供的**创建 App Runner 服务**对话框，您可以提供有关 App Runner 服务如何构建和启动服务的信息。您可以直接在界面中输入信息，也可以指定 YAML 格式的 [App Runner 配置文件](https://docs.aws.amazon.com/apprunner/latest/dg/config-file.html)。此文件中的值指示 App Runner 如何构建和启动服务以及提供运行时上下文。这包括相关的网络设置和环境变量。配置文件名为 `apprunner.yaml`。它会自动添加到应用程序存储库的根目录中。

 

------

## 定价
<a name="app-runner-pricing"></a>

您需要为应用程序使用的计算和内存资源付费。此外，如果选择自动执行部署，则还需要为每个应用程序支付一笔固定的月费，其中涵盖该月的所有自动化部署。如果您选择从源代码进行部署，则还需要为 App Runner 从源代码构建容器所需的时间支付构建费用。

有关更多信息，请参阅 [AWS App Runner 定价](https://aws.amazon.com/apprunner/pricing/)。

**Topics**
+ [先决条件](#apprunner-prereqs)
+ [定价](#app-runner-pricing)
+ [创建 App Runner 服务](creating-service-apprunner.md)
+ [管理 App Runner 服务](managing-service-apprunner.md)