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

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

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

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

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

重要

この手順でパイプラインに追加するアクションの多くは、パイプラインを作成する前に作成する必要がある AWS リソースです。ソースアクションの 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. [Create pipeline] を選択します。[Choose pipeline settings (パイプラインの設定の選択)] ページで、[パイプライン名] にパイプラインの名前を入力します。

  4. [サービスロール] で、[新しいサービスロール] を選択して、CodePipeline の IAM でのサービスロールの作成を許可します。

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

  6. リポジトリの []ソースステージを追加するページで,ソースプロバイダーで、GitHub

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

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

  9. [ブランチ] で、GitHub ブランチを選択します。

  10. ソースアクションの残りはデフォルトのままにしておきます。[Next] (次へ) をクリックします。

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

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

    2. [Create project] (プロジェクトの作成) を選択します。

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

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

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

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

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

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

    9. [Next] (次へ) をクリックします。

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

  13. [Create pipeline] を選択します。ソースとビルドステージを示す図が表示されます。

  14. パッケージ化されたアプリケーションの保存先の 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. [Review policy] (ポリシーの確認) を選択します。

    8. [Save changes] (変更を保存) をクリックします。

ステップ 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. [Deploy‬] (デプロイ) をクリックします。

  4. [AWS CloudFormation スタックを表示する] をクリックして、AWS CloudFormation コンソールを開きます。

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

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

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

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

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

  3. [Edit] を選択します。

  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 で確認します。