チュートリアル: 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. [パイプラインの作成] を選択します。[Choose pipeline settings (パイプラインの設定の選択)] ページで、[パイプライン名] にパイプラインの名前を入力します。

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

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

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

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

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

  14. CodeBuild サービスロールに、パッケージ化されたアプリケーションの保存先の S3 バケットにアクセスする許可を与えます。

    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. [編集] を選択します。

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