

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

# 自动部署您的 AWS SAM 应用程序
<a name="serverless-deploying-modify-pipeline"></a>

在中 AWS SAM，自动部署 AWS SAM 应用程序的方式因所使用的 CI/CD 系统而异。因此，本节中的示例向您展示了如何配置各种 CI/CD 系统，以便在 AWS SAM 构建容器映像中自动构建无服务器应用程序。这些构建容器镜像可以更轻松地使用构建和打包无服务器应用程序。 AWS SAMCLI

根据您使用的 CI/CD 系统，现有 CI/CD 管道部署无服务器应用程序的过程略 AWS SAM 有不同。

以下主题提供了配置 CI/CD 系统以在构建容器映像中构建无服务器应用程序的 AWS SAM 示例：

**Topics**
+ [使用与 AWS CodePipeline 进行部署 AWS SAM](deploying-using-codepipeline.md)
+ [使用 Bitbucket 流水线进行部署 AWS SAM](deploying-using-bitbucket.md)
+ [使用 Jenkins 进行部署 AWS SAM](deploying-using-jenkins.md)
+ [使用 GitLab CI/CD 进行部署 AWS SAM](deploying-using-gitlab.md)
+ [使用 GitHub 操作进行部署 AWS SAM](deploying-using-github.md)

# 使用与 AWS CodePipeline 进行部署 AWS SAM
<a name="deploying-using-codepipeline"></a>

要将[AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)管道配置为自动生成和部署 AWS SAM 应用程序，您的 CloudFormation 模板和`buildspec.yml`文件必须包含执行以下操作的行：

1. 从可用映像中引用具有必要运行时的构建容器映像。以下示例使用 `public.ecr.aws/sam/build-nodejs20.x` 构建容器映像。

1. 配置管道阶段以运行必要的 AWS SAM 命令行界面 (CLI) 命令。以下示例运行两个 AWS SAM CLI 命令：**sam build** 和 **sam deploy**（带有必要的选项）。

此示例假设您已使用声明 AWS SAM 模板文件中的所有函数和层`runtime: nodejs20.x`。

**CloudFormation 模板片段：**

```
  CodeBuildProject:
    Type: AWS::CodeBuild::Project
    Properties:
      Environment:
        ComputeType: BUILD_GENERAL1_SMALL
        Image: public.ecr.aws/sam/build-nodejs20.x
        Type: LINUX_CONTAINER
      ...
```

**`buildspec.yml` 片段：**

```
version: 0.2
phases:
  build:
    commands:
      - sam build
      - sam deploy --no-confirm-changeset --no-fail-on-empty-changeset
```

有关不同运行时的可用 Amazon Elastic Container Registry (Amazon ECR) 构建容器映像的列表，请参阅 [的图像存储库 AWS SAM](serverless-image-repositories.md)。

# 使用 Bitbucket 流水线进行部署 AWS SAM
<a name="deploying-using-bitbucket"></a>

要将 [Bitbucket Pipelin](https://support.atlassian.com/bitbucket-cloud/docs/get-started-with-bitbucket-pipelines/) e 配置为自动构建和部署 AWS SAM 应用程序，您的`bitbucket-pipelines.yml`文件必须包含执行以下操作的行：

1. 从可用映像中引用具有必要运行时的构建容器映像。以下示例使用 `public.ecr.aws/sam/build-nodejs20.x` 构建容器映像。

1. 配置管道阶段以运行必要的 AWS SAM 命令行界面 (CLI) 命令。以下示例运行两个 AWS SAM CLI 命令：**sam build** 和 **sam deploy**（带有必要的选项）。

此示例假设您已使用声明 AWS SAM 模板文件中的所有函数和层`runtime: nodejs20.x`。

```
image: public.ecr.aws/sam/build-nodejs20.x

pipelines:
  branches:
    main: # branch name
      - step:
          name: Build and Package
          script:
            - sam build
            - sam deploy --no-confirm-changeset --no-fail-on-empty-changeset
```

有关不同运行时的可用 Amazon Elastic Container Registry (Amazon ECR) 构建容器映像的列表，请参阅 [的图像存储库 AWS SAM](serverless-image-repositories.md)。

# 使用 Jenkins 进行部署 AWS SAM
<a name="deploying-using-jenkins"></a>

要将 [Jenkins](https://www.jenkins.io/) 管道配置为自动生成和部署 AWS SAM 应用程序，`Jenkinsfile`必须包含执行以下操作的行：

1. 从可用映像中引用具有必要运行时的构建容器映像。以下示例使用 `public.ecr.aws/sam/build-nodejs20.x` 构建容器映像。

1. 配置管道阶段以运行必要的 AWS SAM 命令行界面 (CLI) 命令。以下示例运行两个 AWS SAM CLI 命令：**sam build** 和 **sam deploy**（带有必要的选项）。

此示例假设您已使用声明 AWS SAM 模板文件中的所有函数和层`runtime: nodejs20.x`。

```
pipeline {
    agent { docker { image 'public.ecr.aws/sam/build-nodejs20.x' } }
    stages {
        stage('build') {
            steps {
                sh 'sam build'
                sh 'sam deploy --no-confirm-changeset --no-fail-on-empty-changeset'
            }
        }
    }
}
```

有关不同运行时的可用 Amazon Elastic Container Registry (Amazon ECR) 构建容器映像的列表，请参阅 [的图像存储库 AWS SAM](serverless-image-repositories.md)。

# 使用 GitLab CI/CD 进行部署 AWS SAM
<a name="deploying-using-gitlab"></a>

要将[GitLab](https://about.gitlab.com)管道配置为自动生成和部署 AWS SAM 应用程序，您的`gitlab-ci.yml`文件必须包含执行以下操作的行：

1. 从可用映像中引用具有必要运行时的构建容器映像。以下示例使用 `public.ecr.aws/sam/build-nodejs20.x` 构建容器映像。

1. 配置管道阶段以运行必要的 AWS SAM 命令行界面 (CLI) 命令。以下示例运行两个 AWS SAM CLI 命令：**sam build** 和 **sam deploy**（带有必要的选项）。

此示例假设您已使用声明 AWS SAM 模板文件中的所有函数和层`runtime: nodejs20.x`。

```
image: public.ecr.aws/sam/build-nodejs20.x
deploy:
  script:
    - sam build
    - sam deploy --no-confirm-changeset --no-fail-on-empty-changeset
```

有关不同运行时的可用 Amazon Elastic Container Registry (Amazon ECR) 构建容器映像的列表，请参阅 [的图像存储库 AWS SAM](serverless-image-repositories.md)。

# 使用 GitHub 操作进行部署 AWS SAM
<a name="deploying-using-github"></a>

要将[GitHub](https://github.com/)管道配置为自动生成和部署 AWS SAM 应用程序，必须先在主机上安装 AWS SAM 命令行界面 (CLI)。您可以在 GitHub 工作流程中使用[GitHub 操作](https://github.com/features/actions)来帮助完成此设置。

以下示例 GitHub 工作流程使用一系列 GitHub操作设置 Ubuntu 主机，然后运行 AWS SAMCLI命令来构建和部署应用程序： AWS SAM 

```
on:
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v3
      - uses: aws-actions/setup-sam@v2
      - uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-2
      - run: sam build --use-container
      - run: sam deploy --no-confirm-changeset --no-fail-on-empty-changeset
```

有关不同运行时的可用 Amazon Elastic Container Registry (Amazon ECR) 构建容器映像的列表，请参阅 [的图像存储库 AWS SAM](serverless-image-repositories.md)。