翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: サーバーレスアプリケーションを に発行するパイプラインを作成する AWS Serverless Application Repository
AWS CodePipeline を使用して、 AWS SAM サーバーレスアプリケーションを に継続的に配信できます AWS Serverless Application Repository。
重要
パイプラインの作成の一環として、お客様が提供する S3 アーティファクトバケットがアーティファクト CodePipeline に によって使用されます。(これは S3 ソースアクションに使用されるバケットとは異なります)。S3 アーティファクトバケットがパイプラインのアカウントとは異なるアカウントにある場合は、S3 アーティファクトバケットが によって所有 AWS アカウント されており、安全で信頼できることを確認してください。
このチュートリアルでは、 でホストされているサーバーレスアプリケーションを構築して AWS Serverless Application Repository に自動的に GitHub 公開するようにパイプラインを作成して設定する方法を示します。パイプラインは、 をソースプロバイダー GitHub として、 をビルドプロバイダー CodeBuild として使用します。サーバーレスアプリケーションを に発行するには AWS Serverless Application Repository、アプリケーションを
重要
この手順でパイプラインに追加するアクションの多くには、パイプラインを作成する前に作成する必要がある AWS リソースが含まれています。ソースアクションの AWS リソースは、パイプラインを作成するのと同じ AWS リージョンで常に作成する必要があります。例えば、米国東部 (オハイオ) リージョンでパイプラインを作成する場合、 CodeCommit リポジトリは米国東部 (オハイオ) リージョンにある必要があります。
パイプラインの作成時にクロスリージョンアクションを追加できます。クロスリージョンアクションの AWS リソースは、アクションを実行する予定のリージョンと同じ AWS リージョンにある必要があります。詳細については、「でクロスリージョンアクションを追加する CodePipeline」を参照してください。
開始する前に
このチュートリアルでは、以下のことを前提としています。
-
AWS Serverless Application Model (AWS SAM) と AWS Serverless Application Repository をよく理解していること。
-
サーバーレスアプリケーションは、 AWS Serverless Application Repository を使用して に発行 GitHub した でホストされています AWS SAM CLI。にサンプルアプリケーションを公開するには AWS Serverless Application Repository、「 AWS Serverless Application Repository デベロッパーガイド」の「クイックスタート: アプリケーションの公開」を参照してください。独自のアプリケーションを に発行するには AWS Serverless Application Repository、「 AWS Serverless Application Model デベロッパーガイド」の「 を使用したアプリケーションの発行 AWS SAM CLI」を参照してください。
ステップ 1: buildspec.yml ファイルを作成する
次の内容のbuildspec.yml
ファイルを作成し、サーバーレスアプリケーションの GitHub リポジトリに追加します。置換 template.yml
アプリケーションの AWS SAM テンプレートと bucketname
パッケージ化されたアプリケーションが保存されている S3 バケット。
version: 0.2 phases: install: runtime-versions: python: 3.8 build: commands: - sam package --template-file
template.yml
--s3-bucketbucketname
--output-template-file packaged-template.yml artifacts: files: - packaged-template.yml
ステップ 2: パイプラインを作成して設定する
以下の手順に従って、サーバーレスアプリケーションを公開する AWS リージョン にパイプラインを作成します。
にサインイン AWS Management Console し、 で CodePipeline コンソールを開きますhttps://console.aws.amazon.com/codepipeline/
。 -
必要に応じて、サーバーレスアプリケーションを公開する AWS リージョン に切り替えます。
-
パイプラインの作成 を選択します。[Choose pipeline settings (パイプラインの設定の選択)] ページで、[パイプライン名] にパイプラインの名前を入力します。
-
パイプラインタイプ で、V2 を選択します。詳細については、「パイプラインのタイプ」を参照してください。[Next (次へ)] を選択します。
-
サービスロール で、 CodePipeline でサービスロールの作成を許可する新しいサービスロールを選択しますIAM。
-
[詳細設定] をデフォルト設定のままにし、[次へ] を選択します。
-
ソースステージの追加ページで、ソースプロバイダー で を選択しますGitHub。
-
接続 で、既存の接続を選択するか、新規の接続を作成します。 GitHub ソースアクションの接続を作成または管理する方法については、「」を参照してくださいGitHub 接続。
-
リポジトリ で、 GitHub ソースリポジトリを選択します。
-
ブランチ で、 GitHub ブランチを選択します。
-
出典アクションについては、残りのデフォルトのままにしておきます。[Next (次へ)] を選択します。
-
[Add build stage (ビルドステージの追加)] ページで、ビルドステージを追加します。
-
[ビルドプロバイダ] で、[AWS CodeBuild] を選択します。[リージョン] で、パイプラインリージョンを使用します。
-
[プロジェクトを作成] を選択します。
-
[プロジェクト名] に、このビルドプロジェクトの名前を入力します。
-
[環境イメージ] で、[Managed image (マネージド型イメージ)] を選択します。[Operating system] で、[Ubuntu] を選択します。
-
[ランタイム] と [ランタイムバージョン] で、サーバーレスアプリケーションに必要なランタイムとバージョンを選択します。
-
[サービスロール] で、[New service role (新しいサービスロール)] を選択します。
-
[ビルド仕様] で、[Use a buildspec file (ビルド仕様ファイルの使用)] を選択します。
-
CodePipeline「」を選択します。これにより CodePipeline コンソールが開き、 リポジトリ
buildspec.yml
で を使用して設定を行う CodeBuild プロジェクトが作成されます。ビルドプロジェクトでは、サービスロールを使用して AWS のサービス のアクセス許可を管理します。このステップには数分かかる場合があります。 -
[Next (次へ)] を選択します。
-
-
[Add deploy stage (デプロイステージの追加)] ページで、[Skip deploy stage (デプロイステージのスキップ)] を選択し、[スキップ] を選択して警告メッセージを受け入れます。[Next (次へ)] を選択します。
-
[パイプラインの作成] を選択します。ソースとビルドステージを示す図が表示されます。
-
パッケージ化されたアプリケーションが保存されている S3 バケットにアクセスするアクセス許可を CodeBuild サービスロールに付与します。
-
新しいパイプラインの構築ステージで、 を選択しますCodeBuild。
-
[Build details (ビルドの詳細)] タブを選択します。
-
環境 で、 CodeBuild サービスロールを選択してIAMコンソールを開きます。
-
CodeBuildBasePolicy
の選択を展開し、[Edit policy (ポリシーの編集)] を選択します。 -
を選択しますJSON。
-
新しいポリシーステートメントを以下の内容で追加します。ステートメントでは CodeBuild 、パッケージ化されたアプリケーションが保存されている S3 バケットにオブジェクトを配置できます。置換
bucketname
S3 バケットの名前。{ "Effect": "Allow", "Resource": [ "arn:aws:s3:::
bucketname
/*" ], "Action": [ "s3:PutObject" ] } -
[ポリシーの確認] を選択します。
-
[Save changes] (変更の保存) をクリックします。
-
ステップ 3: 発行アプリケーションをデプロイする
以下のステップに従って、 AWS Serverless Application Repositoryの公開を実行する Lambda 関数を含むアプリケーションをデプロイします。このアプリケーションは aws-serverless-codepipeline-serverlessrepo-publish です。
注記
アプリケーションをパイプライン AWS リージョン と同じ にデプロイする必要があります。
-
アプリケーション
のページに移動し、[デプロイ] を選択します。 -
「このアプリがカスタムIAMロール を作成する」を選択します。
-
[デプロイ] を選択します。
-
AWS CloudFormation スタックの表示を選択して AWS CloudFormation コンソールを開きます。
-
[リソース] セクションを展開します。が表示されます。これはServerlessRepoPublish、AWS::Lambda::Function タイプのものです。このリソースの物理 ID を書き留めます。次のステップで使用します。この物理 ID は、 で新しいパブリッシュアクションを作成するときに使用します CodePipeline。
ステップ 4: 発行アクションを作成する
以下のステップに従って、パイプラインの発行アクションを作成します。
-
で CodePipeline コンソールを開きますhttps://console.aws.amazon.com/codepipeline/
。 -
左のナビゲーションセクションで、編集するパイプラインを選択します。
-
[編集] を選択します。
-
現在のパイプラインの最後のステージが終わったら、[+ Add stage (+ ステージの追加)] を選択します。[Stage name (ステージ名)] に名前 (
Publish
など) を入力し、[Add stage (ステージの追加)] を選択します。 -
新しいステージで、[+ Add action group (+ アクショングループの追加)] を選択します。
-
アクション名を入力します。[アクションプロバイダ] の [呼び出し] で、[AWS Lambda] を選択します。
-
入力アーティファクト から、 を選択しますBuildArtifact。
-
[関数名] で、前のステップで書き留めた Lambda 関数の物理 ID を選択します。
-
アクションの [保存] を選択します。
-
ステージの [完了] を選択します。
-
右上の [保存] を選択します。
-
パイプラインを確認するには、 でアプリケーションを変更します GitHub。例えば、 AWS SAM テンプレートファイルの
Metadata
セクションでアプリケーションの説明を変更します。変更をコミットし、 GitHub ブランチにプッシュします。これにより、パイプラインの実行がトリガーされます。パイプラインが完了したら、アプリケーションが更新されて変更が反映されていることを AWS Serverless Application Repositoryで確認します。