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

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

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

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

重要

パイプライン作成の一環として、CodePipeline は、ユーザーが指定した S3 アーティファクトバケットをアーティファクトとして使用します (これは S3 ソースアクションで使用するバケットとは異なります)。S3 アーティファクトバケットがパイプラインのアカウントとは異なるアカウントにある場合は、S3 アーティファクトバケットが によって所有 AWS アカウント されており、安全で信頼できることを確認してください。

このチュートリアルでは、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. [ようこそ] ページ、[開始方法] ページ、または [パイプライン] ページで、[パイプラインの作成] を選択します。

  4. [ステップ 1: 作成オプションを選択する] ページの [作成オプション] で、[カスタムパイプラインを構築する] オプションを選択します。[Next (次へ)] を選択します。

  5. [パイプラインの作成] を選択します。[ステップ 2: パイプラインの設定を選択する] ページで、[パイプライン名] にパイプラインの名前を入力します。

  6. [パイプラインタイプ] で、[V2] を選択します。詳細については、「パイプラインのタイプ」を参照してください。[Next (次へ)] を選択します。

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

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

  9. [ステップ 3: ソースステージを追加する] ページの [ソースプロバイダー] で、[GitHub] を選択します。

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

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

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

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

  14. ステップ 4: ビルドステージの追加ページで、ビルドステージを追加します。

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

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

    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 (次へ)] を選択します。

  15. ステップ 5: テストステージを追加し、テストステージをスキップを選択し、もう一度スキップを選択して警告メッセージを受け入れます。

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

  16. ステップ 6: デプロイステージの追加ページで、デプロイステージをスキップを選択し、もう一度スキップを選択して警告メッセージを受け入れます。[Next (次へ)] を選択します。

  17. ステップ 7: 確認で、パイプラインの作成を選択します。ステージを示す図が表示されます。

  18. パッケージ化されたアプリケーションの保存先の 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. [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. [デプロイ] を選択します。

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

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

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

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

  1. CodePipeline コンソール (https://console.aws.amazon.com/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 で確認します。