

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS SAM アプリケーションのデプロイを自動化する
<a name="serverless-deploying-modify-pipeline"></a>

では AWS SAM、 AWS SAM アプリケーションのデプロイを自動化する方法は、使用している CI/CD システムによって異なります。このため、このセクションの例では、 AWS SAM ビルドコンテナイメージでのサーバーレスアプリケーションの構築を自動化するようにさまざまな CI/CD システムを設定する方法を示しています。これらのビルドコンテナイメージにより、 を使用してサーバーレスアプリケーションを簡単に構築およびパッケージ化できます AWS SAM CLI。

既存の CI/CD パイプラインが AWS SAM を使用してサーバーレスアプリケーションをデプロイするための手順は、使用している CI/CD システムによって若干異なります。

以下のトピックでは、 AWS SAM ビルドコンテナイメージ内にサーバーレスアプリケーションを構築するように CI/CD システムを設定する例を示します。

**Topics**
+ [を使用して でデプロイ AWS CodePipeline する AWS SAM](deploying-using-codepipeline.md)
+ [Bitbucket Pipelines を使用して でデプロイする AWS SAM](deploying-using-bitbucket.md)
+ [Jenkins を使用して でデプロイする AWS SAM](deploying-using-jenkins.md)
+ [GitLab CI/CD を使用した でのデプロイ AWS SAM](deploying-using-gitlab.md)
+ [GitHub Actions を使用した でのデプロイ AWS SAM](deploying-using-github.md)

# を使用して でデプロイ AWS CodePipeline する AWS SAM
<a name="deploying-using-codepipeline"></a>

 AWS SAM アプリケーションのビルドとデプロイを自動化するように[AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)パイプラインを設定するには、 CloudFormation テンプレートと`buildspec.yml`ファイルに以下を実行する行が含まれている必要があります。

1. 使用可能なイメージから必要なランタイムがあるビルドコンテナイメージを参照する。以下の例は、`public.ecr.aws/sam/build-nodejs20.x` ビルドコンテナイメージを使用します。

1. 必要な AWS SAM コマンドラインインターフェイス (CLI) コマンドを実行するようにパイプラインステージを設定します。以下の例は、**sam build** と **sam deploy** (必要なオプション付き) の 2 つの AWS SAM CLI コマンドを実行します。

この例では、 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 Pipelines を使用して でデプロイする AWS SAM
<a name="deploying-using-bitbucket"></a>

 AWS SAM アプリケーションのビルドとデプロイを自動化するように [Bitbucket Pipeline](https://support.atlassian.com/bitbucket-cloud/docs/get-started-with-bitbucket-pipelines/) を設定するには、 `bitbucket-pipelines.yml` ファイルに以下を実行する行が含まれている必要があります。

1. 使用可能なイメージから必要なランタイムがあるビルドコンテナイメージを参照する。以下の例は、`public.ecr.aws/sam/build-nodejs20.x` ビルドコンテナイメージを使用します。

1. 必要な AWS SAM コマンドラインインターフェイス (CLI) コマンドを実行するようにパイプラインステージを設定します。以下の例は、**sam build** と **sam deploy** (必要なオプション付き) の 2 つの AWS SAM CLI コマンドを実行します。

この例では、 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>

 AWS SAM アプリケーションのビルドとデプロイを自動化するように [Jenkins](https://www.jenkins.io/) パイプラインを設定するには、 に以下を行う行が含まれている`Jenkinsfile`必要があります。

1. 使用可能なイメージから必要なランタイムがあるビルドコンテナイメージを参照する。以下の例は、`public.ecr.aws/sam/build-nodejs20.x` ビルドコンテナイメージを使用します。

1. 必要な AWS SAM コマンドラインインターフェイス (CLI) コマンドを実行するようにパイプラインステージを設定します。以下の例は、**sam build** と **sam deploy** (必要なオプション付き) の 2 つの AWS SAM CLI コマンドを実行します。

この例では、 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>

 AWS SAM アプリケーションのビルドとデプロイを自動化するように [GitLab](https://about.gitlab.com) パイプラインを設定するには、 `gitlab-ci.yml` ファイルに以下を実行する行が含まれている必要があります。

1. 使用可能なイメージから必要なランタイムがあるビルドコンテナイメージを参照する。以下の例は、`public.ecr.aws/sam/build-nodejs20.x` ビルドコンテナイメージを使用します。

1. 必要な AWS SAM コマンドラインインターフェイス (CLI) コマンドを実行するようにパイプラインステージを設定します。以下の例は、**sam build** と **sam deploy** (必要なオプション付き) の 2 つの AWS SAM CLI コマンドを実行します。

この例では、 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 Actions を使用した でのデプロイ AWS SAM
<a name="deploying-using-github"></a>

 AWS SAM アプリケーションのビルドとデプロイを自動化するように [GitHub](https://github.com/) パイプラインを設定するには、まずホストに AWS SAM コマンドラインインターフェイス (CLI) をインストールする必要があります。このセットアップには、GitHub ワークフローの [GitHub Actions](https://github.com/features/actions) を使用できます。

次の GitHub ワークフローの例では、一連の GitHub Actions を使用して 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)」を参照してください。