チュートリアル: サーバーレスアプリケーションを に発行するパイプラインを作成する AWS Serverless Application Repository - AWS CodePipeline

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

チュートリアル: サーバーレスアプリケーションを に発行するパイプラインを作成する AWS Serverless Application Repository

を使用して AWS CodePipeline 、 AWS SAM サーバーレスアプリケーションを に継続的に配信できます AWS Serverless Application Repository。

このチュートリアルでは、 でホストされているサーバーレスアプリケーションを構築して AWS Serverless Application Repository に自動的に公開するようにパイプラインを作成 GitHub および設定する方法を示します。パイプラインでは、 をソースプロバイダー GitHub として使用し、 をビルドプロバイダー CodeBuild として使用します。サーバーレスアプリケーションを に発行するには AWS Serverless Application Repository、アプリケーションを ( から AWS Serverless Application Repository) デプロイし、そのアプリケーションによって作成された Lambda 関数をパイプラインの呼び出しアクションプロバイダーとして関連付けます。その後、コードを記述せずに AWS Serverless Application Repository、アプリケーションの更新を に継続的に配信できます。

重要

この手順でパイプラインに追加するアクションの多くは、ソースアクションの pipeline. AWS resources を作成する前に作成する必要がある AWS リソースが、パイプラインを作成するのと同じ AWS リージョンに常に作成されている必要があります。例えば、米国東部 (オハイオ) リージョンにパイプラインを作成する場合、 CodeCommit リポジトリは米国東部 (オハイオ) リージョンにある必要があります。

パイプラインを作成するときに、クロスリージョンアクションを追加できます。クロスリージョンアクションの AWS リソースは、アクションを実行する予定の AWS リージョンと同じリージョンにある必要があります。詳細については、「CodePipeline にクロスリージョンアクションを追加する」を参照してください。

開始する前に

このチュートリアルでは、以下のことを前提としています。

ステップ 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-bucket bucketname --output-template-file packaged-template.yml artifacts: files: - packaged-template.yml

ステップ 2: パイプラインを作成して設定する

サーバーレスアプリケーションを公開 AWS リージョン する にパイプラインを作成するには、次の手順に従います。

  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/codepipeline/ で CodePipeline コンソールを開きます。

  2. 必要に応じて、サーバーレスアプリケーションを公開 AWS リージョン する に切り替えます。

  3. パイプラインの作成 を選択します。[Choose pipeline settings (パイプラインの設定の選択)] ページで、[パイプライン名] にパイプラインの名前を入力します。

  4. このチュートリアルの目的では、[パイプラインタイプ] で、[V1] を選択します。[V2] を選択することもできますが、パイプラインタイプは特性と価格が異なることに注意してください。詳細については、「パイプラインのタイプ」を参照してください。

  5. 「サービスロール」で「新しいサービスロール」を選択し、 CodePipeline が IAM でサービスロールを作成できるようにします。

  6. [詳細設定] をデフォルト設定のままにし、[次へ] を選択します。

  7. 「ソースステージの追加」ページの「ソースプロバイダー」で、「」を選択しますGitHub

  8. 接続 で、既存の接続を選択するか、新規の接続を作成します。 GitHub ソースアクションの接続を作成または管理するには、「」を参照してくださいGitHub 接続

  9. リポジトリ で、 GitHub ソースリポジトリを選択します。

  10. ブランチ で、 GitHub ブランチを選択します。

  11. 出典アクションについては、残りのデフォルトのままにしておきます。[次へ] を選択します。

  12. [Add build stage (ビルドステージの追加)] ページで、ビルドステージを追加します。

    1. [ビルドプロバイダ] で、[AWS CodeBuild] を選択します。[リージョン] で、パイプラインリージョンを使用します。

    2. [プロジェクトを作成] を選択します。

    3. [プロジェクト名] に、このビルドプロジェクトの名前を入力します。

    4. [環境イメージ] で、[Managed image (マネージド型イメージ)] を選択します。[Operating system] で、[Ubuntu] を選択します。

    5. [ランタイム] と [ランタイムバージョン] で、サーバーレスアプリケーションに必要なランタイムとバージョンを選択します。

    6. [サービスロール] で、[New service role (新しいサービスロール)] を選択します。

    7. [ビルド仕様] で、[Use a buildspec file (ビルド仕様ファイルの使用)] を選択します。

    8. 「続行 CodePipeline」を選択します。これにより、 CodePipeline コンソールが開き、リポジトリbuildspec.yml内の を設定に使用する CodeBuild プロジェクトが作成されます。ビルドプロジェクトは、サービスロールを使用して AWS のサービス アクセス許可を管理します。このステップには数分かかる場合があります。

    9. [次へ] を選択します。

  13. [Add deploy stage (デプロイステージの追加)] ページで、[Skip deploy stage (デプロイステージのスキップ)] を選択し、[スキップ] を選択して警告メッセージを受け入れます。[次へ] を選択します。

  14. [パイプラインの作成] を選択します。ソースとビルドステージを示す図が表示されます。

  15. パッケージ化されたアプリケーションが保存されている S3 バケットへのアクセス許可を CodeBuild サービスロールに付与します。

    1. 新しいパイプラインの [ビルド] ステージで、[CodeBuild] を選択します。

    2. [Build details (ビルドの詳細)] タブを選択します。

    3. 環境 で、 CodeBuild サービスロールを選択して IAM コンソールを開きます。

    4. CodeBuildBasePolicy の選択を展開し、[Edit policy (ポリシーの編集)] を選択します。

    5. [JSON] を選択します。

    6. 新しいポリシーステートメントを以下の内容で追加します。ステートメントにより CodeBuild 、 はパッケージ化されたアプリケーションが保存されている S3 バケットにオブジェクトを配置できます。bucketname は、実際の S3 バケット名に置き換えます。

      { "Effect": "Allow", "Resource": [ "arn:aws:s3:::bucketname/*" ], "Action": [ "s3:PutObject" ] }
    7. [ポリシーの確認] を選択します。

    8. [変更の保存] をクリックします。

ステップ 3: 発行アプリケーションをデプロイする

以下のステップに従って、 AWS Serverless Application Repositoryの公開を実行する Lambda 関数を含むアプリケーションをデプロイします。このアプリケーションは aws-serverless-codepipeline-serverlessrepo-publish です。

注記

アプリケーションをパイプライン AWS リージョン と同じ にデプロイする必要があります。

  1. アプリケーションのページに移動し、[デプロイ] を選択します。

  2. [I acknowledge that this app creates custom IAM roles (このアプリケーションがカスタム IAM ロールを作成することを承認します)] を選択します。

  3. デプロイを選択します。

  4. AWS CloudFormation スタックの表示 を選択して、 AWS CloudFormation コンソールを開きます。

  5. [リソース] セクションを展開します。ServerlessRepoPublishタイプ の が表示されますAWS::Lambda::Function。このリソースの物理 ID を書き留めます。次のステップで使用します。この物理 ID は、 CodePipeline で新しい発行アクションを作成するときに使用します。

ステップ 4: 発行アクションを作成する

以下のステップに従って、パイプラインの発行アクションを作成します。

  1. https://console.aws.amazon.com/codepipeline/ で CodePipeline コンソールを開きます。

  2. 左のナビゲーションセクションで、編集するパイプラインを選択します。

  3. [編集] を選択します。

  4. 現在のパイプラインの最後のステージが終わったら、[+ Add stage (+ ステージの追加)] を選択します。[Stage name (ステージ名)] に名前 (Publish など) を入力し、[Add stage (ステージの追加)] を選択します。

  5. 新しいステージで、[+ Add action group (+ アクショングループの追加)] を選択します。

  6. アクション名を入力します。[アクションプロバイダ] の [呼び出し] で、[AWS Lambda] を選択します。

  7. 入力アーティファクト から、 を選択しますBuildArtifact

  8. [関数名] で、前のステップで書き留めた Lambda 関数の物理 ID を選択します。

  9. アクションの [保存] を選択します。

  10. ステージの [完了] を選択します。

  11. 右上の [保存] を選択します。

  12. パイプラインを確認するには、 でアプリケーションを変更します GitHub。例えば、 AWS SAM テンプレートファイルの Metadataセクションでアプリケーションの説明を変更します。変更をコミットして GitHub ブランチにプッシュします。これにより、パイプラインの実行がトリガーされます。パイプラインが完了したら、アプリケーションが更新されて変更が反映されていることを AWS Serverless Application Repository で確認します。