

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 自動化 AWS SAM 應用程式的部署
<a name="serverless-deploying-modify-pipeline"></a>

在 中 AWS SAM，自動化 AWS SAM 應用程式部署的方式取決於您使用的 CI/CD 系統。因此，本節中的範例說明如何設定各種 CI/CD 系統，以在建置容器映像中自動化 AWS SAM 建置無伺服器應用程式。這些建置容器映像可讓您更輕鬆地使用 建置和封裝無伺服器應用程式 AWS SAM CLI。

您現有 CI/CD 管道使用 部署無伺服器應用程式的程序 AWS SAM ，會因您使用的 CI/CD 系統而略有不同。

下列主題提供設定 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 Pipeline](https://support.atlassian.com/bitbucket-cloud/docs/get-started-with-bitbucket-pipelines/) 以自動化 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 工作流程會使用一系列 GitHub 動作設定 Ubuntu 主機，然後執行 AWS SAM CLI命令來建置和部署 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)。