

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

# を使用してスターター 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 構文を使用し、複数のアカウントとリージョンにまたがるアーティファクトの管理、およびアプリケーションのデプロイに必要な最小限の許可の使用などのベストプラクティスを組み込みます。 AWS SAM CLI は現在、[AWS CodePipeline](https://aws.amazon.com/codepipeline)、[Jenkins](https://www.jenkins.io/)、[GitLab CI/CD](https://docs.gitlab.com/ee/ci/)、[GitHub Actions](https://github.com/features/actions)、および [Bitbucket Pipelines](https://support.atlassian.com/bitbucket-cloud/docs/get-started-with-bitbucket-pipelines/) 向けのスターター CI/CD パイプライン設定の生成をサポートしています。

以下は、スターターパイプライン設定を生成するために実行する必要があるおおまかなタスクです。

1. **インフラストラクチャリソースの作成** – パイプラインには、必要なアクセス許可を持つ IAM ユーザーとロール、Amazon S3 バケット、オプションで Amazon ECR リポジトリなど、特定の AWS リソースが必要です。

1. **Git リポジトリを CI/CD システムに接続する** - CI/CD システムは、どの Git リポジトリがパイプラインの実行をトリガーするのかを知る必要があります。使用している Git リポジトリと CI/CD システムの組み合わせによっては、このステップが必要ない場合があります。

1. **パイプライン設定を生成する** - このステップは、2 つのデプロイステージが含まれるスターターパイプライン設定を生成します。

1. **パイプライン設定を Git リポジトリにコミットする** - このステップは、CI/CD システムがパイプライン設定を認識しており、変更のコミット時に実行されることを確実にするために必要です。

スターターパイプライン設定を生成して Git リポジトリにコミットしたら、そのリポジトリにコード変更がコミットされるたびにパイプラインがトリガーされ、自動的に実行されます。

これらのステップの順序と各ステップの詳細は、CI/CD システムに応じて異なります。
+ を使用している場合は AWS CodePipeline、「」を参照してください[AWS CodePipeline での のスターターパイプラインの生成 AWS SAM](serverless-generating-example-ci-cd-codepipeline.md)。
+ Jenkins、GitLab CI/CD、GitHub Actions、または Bitbucket Pipelines を使用している場合は、[AWS SAM を使用して Jenkins、GitLab CI/CD、GitHub Actions、Bitbucket Pipelines のスターターパイプラインを生成する](serverless-generating-example-ci-cd-others.md)を参照してください。

# AWS CodePipeline での のスターターパイプラインの生成 AWS SAM
<a name="serverless-generating-example-ci-cd-codepipeline"></a>

のスターターパイプライン設定を生成するには AWS CodePipeline、次のタスクをこの順序で実行します。

1. インフラストラクチャリソースを作成する

1. パイプライン設定を生成する

1. パイプライン設定を Git にコミットする

1. Git リポジトリを CI/CD システムに接続する

**注記**  
以下の手順は、`sam pipeline bootstrap` と `sam pipeline init` の 2 つの AWS SAM CLI コマンドを活用します。コマンドが 2 つあるのは、管理者 (IAM ユーザーやロールなどのインフラストラクチャ AWS リソースをセットアップするためのアクセス許可が必要なユーザー) が、開発者 (個々のパイプラインをセットアップするためのアクセス許可のみを必要とするが、必要なインフラストラクチャ AWS リソースは必要ないユーザー) よりも多くのアクセス許可を持っているユースケースを処理するためです。

## ステップ 1: インフラストラクチャリソースを作成する
<a name="generating-example-step-1"></a>

を使用するパイプラインには、必要なアクセス許可を持つ IAM ユーザーやロール、Amazon S3 バケット、オプションで Amazon ECR リポジトリなど、特定の AWS リソース AWS SAM が必要です。パイプラインのデプロイステージごとに、一連のインフラストラクチャリソースが必要です。

このセットアップには、以下のコマンドを実行できます。

```
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>
```

GitHub または Bitbucket を使用している場合は、上記の **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>

デフォルトでは、 は で`main`ブランチ AWS CodePipeline を使用します 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 「 ワークショップの完了*」の「 [で CI/CD AWS CodePipeline](https://catalog.workshops.aws/complete-aws-sam/en-US/module-4-cicd)」を参照してください。

# AWS SAM を使用して Jenkins、GitLab CI/CD、GitHub Actions、Bitbucket Pipelines のスターターパイプラインを生成する
<a name="serverless-generating-example-ci-cd-others"></a>

Jenkins、GitLab CI/CD、GitHub Actions、Bitbucket Pipelines 向けのスターターパイプライン設定を生成するには、以下のタスクをこの順序どおりに実行します。

1. インフラストラクチャリソースを作成する

1. Git リポジトリを CI/CD システムに接続する

1. 認証情報オブジェクトを作成する

1. パイプライン設定を生成する

1. パイプライン設定を Git リポジトリにコミットする

**注記**  
以下の手順は、`sam pipeline bootstrap` と `sam pipeline init` の 2 つの AWS SAM CLI コマンドを活用します。コマンドが 2 つあるのは、管理者 (IAM ユーザーやロールなどのインフラストラクチャ AWS リソースをセットアップするためのアクセス許可を必要とするユーザー) が、開発者 (個々のパイプラインをセットアップするためのアクセス許可のみを必要とするが、必要なインフラストラクチャ AWS リソースは必要ないユーザー) よりも多くのアクセス許可を持っているユースケースを処理するためです。

## ステップ 1: インフラストラクチャリソースを作成する
<a name="generating-example-step-1"></a>

を使用するパイプラインには、必要なアクセス許可を持つ IAM ユーザーやロール、Amazon S3 バケット、オプションで Amazon ECR リポジトリなど、特定の AWS リソース AWS SAM が必要です。パイプラインのデプロイステージごとに、一連のインフラストラクチャリソースが必要です。

このセットアップには、以下のコマンドを実行できます。

```
sam pipeline bootstrap
```

**注記**  
上記のコマンドは、パイプラインのデプロイステージごとに実行します。

パイプラインのデプロイステージごとにパイプラインユーザーの AWS 認証情報 (キー ID とシークレットキー) をキャプチャする必要があります。これは、以降のステップで必要になるためです。

## ステップ 2: Git リポジトリを CI/CD システムに接続する
<a name="generating-example-step-2"></a>

構築とデプロイのために CI/CD システムがアプリケーションソースコードにアクセスできるようにするには、Git リポジトリを CI/CD システムに接続する必要があります。

**注記**  
以下の組み合わせのいずれかを使用している場合は接続が自動的に行われるため、このステップを省略できます。  
GitHub Actions と GitHub リポジトリ
GitLab CI/CD と GitLab リポジトリ
Bitbucket リポジトリを持つ Bitbucket Pipelines

Git リポジトリを CI/CD システムに接続するには、以下のいずれかを実行します。
+ Jenkins を使用している場合は、「ブランチソースの追加」について [Jenkins ドキュメント](https://www.jenkins.io/doc/book/pipeline/multibranch/)を参照してください。
+ GitLab CI/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 とシークレットキーの両方を保存する単一の「認証情報」を作成します。[Building a Jenkins Pipeline with AWS SAM](https://aws.amazon.com/blogs/compute/building-a-jenkins-pipeline-with-aws-sam/) ブログの「**Configure Jenkins**」セクションにある手順に従ってください。次のステップでは「認証情報 ID」が必要になります。
+ GitLab CI/CD を使用している場合は、2 つの「保護された変数」(キー ID とシークレットキーごとに 1 つずつ) を作成します。[GitLab ドキュメント](https://docs.gitlab.com/ee/ci/variables/)にある手順に従ってください。次のステップでは 2 つの「変数キー」が必要になります。
+ GitHub Actions を使用している場合は、2 つの「暗号化された秘密」(キーとシークレットキーごとに 1 つずつ) を作成します。[GitHub ドキュメント](https://docs.github.com/en/actions/reference/encrypted-secrets)にある手順に従ってください。次のステップでは 2 つの「シークレット名」が必要になります。
+ Bitbucket Pipelines を使用している場合は、2 つの「セキュア変数」(キー ID とシークレットキーごとに 1 つずつ) を作成します。[変数とシークレット](https://support.atlassian.com/bitbucket-cloud/docs/variables-and-secrets)にある手順に従ってください。次のステップでは 2 つの「シークレット名」が必要になります。

## ステップ 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>

GitHub Actions を使用して CI/CD パイプラインを設定する実践的な例については、「包括的な AWS SAM ワークショップ」の「[GitHub を使用した CI/CD](https://s12d.com/sam-ws-en-gh)」を参照してください。