

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

# 使用生成入门 CI/CD 管道 AWS SAM
<a name="serverless-generating-example-ci-cd"></a>

准备好自动部署后，您可以使用其中 AWS SAM一个入门级管道模板为您选择使用的 CI/CD 系统生成部署管道。您的部署管线是您配置并用于自动部署无服务器应用程序的工具。入门管线模板已预配置，可帮助您快速为无服务器应用程序设置部署管线。

借助入门管线模板，您可以使用 [sam pipeline init](sam-cli-command-reference-sam-pipeline-init.md) 命令在几分钟内生成管线。

入门级管道模板使用熟悉的 CI/CD 系统 JSON/YAML 语法，并纳入了最佳实践，例如跨多个账户和区域管理工件，以及使用部署应用程序所需的最低权限量。[https://github.com/features/actions](https://github.com/features/actions)

以下是生成入门管道配置所需执行的高级任务：

1. **创建基础设施资源** — 您的管道需要某些 AWS 资源，例如具有必要权限的 IAM 用户和角色、Amazon S3 存储桶，以及可选的 Amazon ECR 存储库。

1. 将 **Git 仓库与 CI/CD 系统连接起来** — 您的 CI/CD 系统需要知道哪个 Git 仓库会触发管道的运行。请注意，此步骤可能不是必需的，具体取决于您使用的 Git 存储库和 CI/CD 系统的组合。

1. **生成管道配置** – 此步骤将生成包括两个部署阶段的入门管道配置。

1. 将@@ **您的工作流配置提交到 Git 存储库** — 此步骤对于确保您的 CI/CD 系统知道您的工作流配置是必要的，并且将在提交更改时运行。

生成入门管道配置并将其提交到 Git 存储库后，每当有人向该存储库提交代码更改时，您的管道就会被触发自动运行。

这些步骤的顺序和每个步骤的详细信息因您的 CI/CD 系统而异：
+ 如果您正在使用 AWS CodePipeline，请参阅[正在为 AWS CodePipeline in 生成入门管道 AWS SAM](serverless-generating-example-ci-cd-codepipeline.md)。
+ 如果你使用的是 Jenkins、C GitLab I/CD、Actions 或 Bitbucket Pipelines，请参 GitHub 阅。[用于 AWS SAM 为 Jenkins、C GitLab I/CD、Actions、Bitbucket Pipelines 生成入 GitHub](serverless-generating-example-ci-cd-others.md)

# 正在为 AWS CodePipeline in 生成入门管道 AWS SAM
<a name="serverless-generating-example-ci-cd-codepipeline"></a>

要为生成入门工作流配置 AWS CodePipeline，请按以下顺序执行以下任务：

1. 创建基础设施资源

1. 生成管道配置

1. 将管道配置提交到 Git

1. 将你的 Git 仓库与你的 CI/CD 系统连接起来

**注意**  
以下过程使用两个 AWS SAM CLI 命令：`sam pipeline bootstrap` 和 `sam pipeline init`。之所以有两个命令，是为了处理这样的用例：管理员（即需要设置基础设施 AWS 资源的权限的用户，比如 IAM 用户和角色）比开发人员（即只需要设置单个管道的权限，而不需要所需的基础设施 AWS 资源的用户）拥有更多的权限。

## 第 1 步：创建基础设施资源
<a name="generating-example-step-1"></a>

使用的管道 AWS SAM 需要某些 AWS 资源，例如具有必要权限的 IAM 用户和角色、Amazon S3 存储桶，以及可选的 Amazon ECR 存储库。对于管道的每个部署阶段，您都必须拥有一组基础设施资源。

您可以运行以下命令来帮助完成此设置：

```
sam pipeline bootstrap
```

**注意**  
为管道的每个部署阶段运行上一条命令。

## 第 2 步：生成管道配置
<a name="generating-example-step-2"></a>

要生成管道配置，请运行以下命令：

```
sam pipeline init
```

## 第 3 步：将管道配置提交到 Git 存储库
<a name="generating-example-step-3"></a>

此步骤对于确保您的 CI/CD 系统知道您的工作流配置是必要的，并且将在提交更改时运行。

## 第 4 步：将 Git 存储库与 CI/CD 系统连接
<a name="generating-example-step-4"></a>

因为 AWS CodePipeline 您现在可以通过运行以下命令来创建连接：

```
sam deploy -t codepipeline.yaml --stack-name <pipeline-stack-name> --capabilities=CAPABILITY_IAM --region <region-X>
```

如果您使用的是 Bitbucket， GitHub 则在之前运行**sam deploy**命令后，请按照*开发者工具控制台用户指南*中 “[更新待处理的**连接” 主题中的 “完成**连接](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-update.html)” 下的步骤完成连接，完成连接。此外，请存储**sam deploy**命令输出`CodeStarConnectionArn`中的副本，因为如果您想与之以外的其他分支 AWS CodePipeline 一起使用，则需要该副本`main`。

## 配置其他分支
<a name="configuring-other-branches"></a>

默认情况下， AWS CodePipeline 使用带的`main`分支 AWS SAM。如果要使用 `main` 以外的分支，则必须再次运行 **sam deploy** 命令。请注意，根据使用的 Git 仓库，还可能需要提供 `CodeStarConnectionArn`：

```
# For GitHub and Bitbucket
sam deploy -t codepipeline.yaml --stack-name <feature-pipeline-stack-name> --capabilities=CAPABILITY_IAM --parameter-overrides="FeatureGitBranch=<branch-name> CodeStarConnectionArn=<codestar-connection-arn>"

# For AWS CodeCommit
sam deploy -t codepipeline.yaml --stack-name <feature-pipeline-stack-name> --capabilities=CAPABILITY_IAM --parameter-overrides="FeatureGitBranch=<branch-name>"
```

## 了解详情
<a name="serverless-generating-cicd-learn"></a>

有关设置 CI/CD 管道的动手示例，请参阅*完整 AWS SAM *研讨会 AWS CodePipeline中的 [CI/CD](https://catalog.workshops.aws/complete-aws-sam/en-US/module-4-cicd)。

# 用于 AWS SAM 为 Jenkins、C GitLab I/CD、Actions、Bitbucket Pipelines 生成入 GitHub
<a name="serverless-generating-example-ci-cd-others"></a>

要为 Jenkins、C GitLab I/CD、Actions 或 Bitbucket Pipelines 生成入门工作流配置，请按以下顺序执行以下任务： GitHub 

1. 创建基础设施资源

1. 将你的 Git 仓库与你的 CI/CD 系统连接起来

1. 创建凭证对象

1. 生成管道配置

1. 将管道配置提交到 Git 存储库

**注意**  
以下过程使用两个 AWS SAM CLI 命令：`sam pipeline bootstrap` 和 `sam pipeline init`。之所以有两个命令，是为了处理这样的用例：管理员（即需要设置基础设施 AWS 资源的权限的用户，比如 IAM 用户和角色）比开发人员（即只需要设置单个管道的权限，而不需要所需的基础设施 AWS 资源的用户）拥有更多的权限。

## 第 1 步：创建基础设施资源
<a name="generating-example-step-1"></a>

使用的管道 AWS SAM 需要某些 AWS 资源，例如具有必要权限的 IAM 用户和角色、Amazon S3 存储桶，以及可选的 Amazon ECR 存储库。对于管道的每个部署阶段，您都必须拥有一组基础设施资源。

您可以运行以下命令来帮助完成此设置：

```
sam pipeline bootstrap
```

**注意**  
为管道的每个部署阶段运行上一条命令。

您必须为管道的每个部署阶段捕获管道用户的 AWS 证书（密钥 ID 和私有密钥），因为后续步骤需要这些证书。

## 第 2 步：将 Git 存储库与 CI/CD 系统连接
<a name="generating-example-step-2"></a>

必须将 Git 存储库连接到 CI/CD 系统，这样 CI/CD 系统才能访问用于构建和部署的应用程序源代码。

**注意**  
如果您使用以下组合之一，则可以跳过此步骤，因为连接会自动完成：  
GitHub 使用 GitHub 存储库执行的操作
GitLab 带有存储库的 CI/CD GitLab 
带有 Bitbucket 存储库的 Bitbucket 管线

要将 Git 存储库与 CI/CD 系统连接，请执行以下任一操作：
+ 如果您使用的是 Jenkins，请参阅 [Jenkins 文档](https://www.jenkins.io/doc/book/pipeline/multibranch/)中的“添加分支源”。
+ 如果您使用的是 C GitLab I/CD 和除之外的 Git 存储库 GitLab，请参阅 “连接外部存储库” [GitLab文档](https://docs.gitlab.com/ee/ci/ci_cd_for_external_repos/)。

## 第 3 步：创建凭证对象
<a name="generating-example-step-3"></a>

每个 CI/CD 系统都有自己的方式来管理 CI/CD 系统访问您的 Git 存储库所需的凭据。

要创建必需的凭证对象，请执行以下操作之一：
+ 如果您使用的是 Jenkins，请创建一个存储密钥 ID 和密钥的“凭证”。请按照**配置 Jenkins** 部分里[使用 AWS SAM构建 Jenkins 管道](https://aws.amazon.com/blogs/compute/building-a-jenkins-pipeline-with-aws-sam/)博客中的说明进行操作。下一步您将需要用到“凭证 ID”。
+ 如果您使用的是 C GitLab I/CD，请创建两个 “受保护变量”，密钥 ID 和密钥各一个。按照[GitLab 文档](https://docs.gitlab.com/ee/ci/variables/)中的说明进行操作 — 下一步需要两个 “变量键”。
+ 如果您使用的是 Ac GitHub tions，请创建两个 “加密机密”，密钥和密钥各一个。按照[GitHub文档](https://docs.github.com/en/actions/reference/encrypted-secrets)中的说明进行操作——下一步需要两个 “机密名称”。
+ 如果您使用的是 Bitbucket 管线，请创建两个“安全变量”，密钥 ID 和密钥各一个。请按照[变量和密钥](https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets)中的说明进行操作。下一步您将需要两个“密钥名称”。

## 第 4 步：生成管道配置
<a name="generating-example-step-4"></a>

要生成管道配置，请运行以下命令。您需要输入在上一步中创建的凭证对象：

```
sam pipeline init
```

## 第 5 步：将管道配置提交到 Git 存储库
<a name="generating-example-step-5"></a>

此步骤对于确保您的 CI/CD 系统知道您的工作流配置是必要的，并且将在提交更改时运行。

## 了解详情
<a name="serverless-generating-other-cicd-learn"></a>

有关使用设置 CI/CD 管道的动手示例GitHub Actions，请参阅*完整 AWS SAM *研讨会GitHub中的 [CI/CD](https://s12d.com/sam-ws-en-gh)。