チュートリアル: AWS CLI を使用して AWS CodeStar にプロジェクトを作成する - AWS CodeStar

2024 年 7 月 31 日をもって、Amazon Web Services (AWS) は AWS CodeStar プロジェクトの作成と閲覧のサポートを終了します。2024 年 7 月 31 日以降、AWS CodeStar コンソールにアクセスしたり、新しいプロジェクトを作成したりできなくなります。ただし、AWS CodeStar によって作成された AWS リソース (ソースリポジトリ、パイプライン、ビルドなど) は、この変更の影響を受けず、引き続き機能します。AWS CodeStarこの廃止による接続および AWS CodeStar 通知への影響はありません。

 

作業の追跡、コードの開発、アプリケーションのビルド、テスト、デプロイをご希望の場合、Amazon CodeCatalyst に、合理化された導入プロセスと、ソフトウェアプロジェクトを管理するための追加機能が用意されています。Amazon CodeCatalyst の機能価格について詳しくは、リンク先をご覧ください。

チュートリアル: AWS CLI を使用して AWS CodeStar にプロジェクトを作成する

このチュートリアルでは、AWS CLI を使用してサンプルソースコードとサンプルのツールチェーンテンプレートを含む AWS CodeStar プロジェクトを作成する方法を示します。AWS CodeStar は、AWS CloudFormation ツールチェーンテンプレートで指定された AWS インフラストラクチャと IAM リソースをプロビジョニングします。このプロジェクトでは、ツールチェーンのリソースを管理して、ソースコードの構築とデプロイを行います。

AWS CodeStar は AWS CloudFormation を使用してサンプルコードの構築とデプロイを行います。このサンプルコードでは、AWS Lambda をホストとし、Amazon API Gateway からアクセスすることができるウェブサービスが作成されます。

前提条件:

  • AWS CodeStar のセットアップ のステップを完了します。

  • Amazon S3 ストレージバケットを作成済みである必要があります。このチュートリアルでは、サンプルのソースコードとツールチェーンテンプレートをこの場所にアップロードします。

注記

このチュートリアルに関するコスト (例: AWS CodeStar が使用する AWS サービス) については、AWS アカウントに請求される場合があります。詳細については、「AWS CodeStar の料金」を参照してください。

ステップ 1: サンプルソースコードのダウンロードと確認

このチュートリアルでは、ダウンロード可能な zip ファイルがあります。Lambda コンピューティングプラットフォームの Node.js サンプルアプリケーションのサンプルソースコードが含まれます。ソースコードをリポジトリに配置したら、フォルダとファイルは次のように表示されます:

tests/ app.js buildspec.yml index.js package.json README.md template.yml

以下のプロジェクト要素はサンプルソースコードで表されます。

  • tests/: このプロジェクトの CodeBuild プロジェクト用にユニットテストの設定。このフォルダには、サンプルコードが含まれていますが、プロジェクトの作成には必要ありません。

  • app.js: プロジェクトのアプリケーションソースコード。

  • buildspec.yml: CodeBuild リソース構築ステージの構築手順。このファイルは、CodeBuild リソースを含むツールチェーンテンプレートで必要です。

  • package.json: アプリケーションソースコードの依存関係情報。

  • README.md: AWS CodeStar のすべてのプロジェクトに含まれるプロジェクトの readme ファイル。このファイルはサンプルコードに含まれていますが、プロジェクトの作成には必要ありません。

  • template.yml: AWS CodeStar のすべてのプロジェクトに含まれるインフラストラクチャテンプレートファイル、または SAM テンプレートファイル。これは、このチュートリアルで後にアップロードするツールチェーン template.yml とは異なります。このファイルはサンプルコードに含まれていますが、プロジェクトの作成には必要ありません。

ステップ 2: サンプルツールチェーンテンプレートのダウンロード

このチュートリアルのサンプルツールチェーンテンプレートでは、リポジトリ (CodeCommit)、パイプライン (CodePipeline)、ビルドコンテナ (CodeBuild) を作成し、AWS CloudFormation を使用してソースコードを Lambda プラットフォームにデプロイします。これらのリソースに加えて、IAM ロール (ランタイム環境のアクセス許可の絞り込みに使用) や、Amazon S3 バケット (CodePipeline によりデプロイメントアーティファクトの保存に使用)、CloudWatch Events ルール (コードをリポジトリにプッシュする際にパイプラインのデプロイのトリガーに使用) もあります。AWS IAM ベストプラクティスに合わせるには、この例で定義されているツールチェーンロールのポリシーを絞り込みます。

サンプルAWS CloudFormation テンプレートをYAMLの形式でダウンロードして解凍します。

チュートリアルの後半で create-project コマンドを実行すると、このテンプレートによって、次のカスタマイズされたツールチェーンリソースが AWS CloudFormation で作成されます。このチュートリアルで作成されるリソースの詳細については、『AWS CloudFormation ユーザーガイド』の次のトピックを参照してください。

  • AWS::CodeCommit::Repository AWS CloudFormation リソースで CodeCommit リポジトリを作成します。

  • AWS::CodeBuild::Project AWS CloudFormation リソースで CodeBuild 構築プロジェクトを作成します。

  • AWS::CodeDeploy::Application AWS CloudFormation リソースで CodeDeploy アプリケーションを作成します。

  • AWS::CodePipeline::Pipeline AWS CloudFormation リソースで CodePipeline パイプラインを作成します。

  • AWS::S3::Bucket AWS CloudFormation リソースでパイプラインのアーティファクトバケットを作成します。

  • AWS::S3::BucketPolicy AWS CloudFormation リソースで、パイプラインのアーティファクトバケットのアーティファクトバケットポリシーを作成します。

  • AWS::IAM::Role AWS CloudFormation リソースは、AWS CodeStar に CodeBuild ビルドプロジェクトを管理する権限を与える CodeBuild IAM ワーカーロールを作成します。

  • AWS::IAM::Role AWS CloudFormation リソースは、AWS CodeStar にパイプラインを作成するためのアクセス許可を与える CodePipeline IAM ワーカーロールを作成します。

  • AWS::IAM::Role AWS CloudFormation リソースで、リソーススタックを作成する AWS CodeStar アクセス許可を付与する AWS CloudFormation IAM ワーカーのロールを作成します。

  • AWS::IAM::Role AWS CloudFormation リソースで、リソーススタックを作成する AWS CodeStar アクセス許可を付与する AWS CloudFormation IAM ワーカーのロールを作成します。

  • AWS::IAM::Role AWS CloudFormation リソースで、リソーススタックを作成する AWS CodeStar アクセス許可を付与する AWS CloudFormation IAM ワーカーのロールを作成します。

  • AWS::Events::Rule AWS CloudFormation リソースは、リポジトリのプッシュイベントを監視するCloudWatch Events ルールを作成します。

  • AWS::IAM::Role AWS CloudFormationリソースは、CloudWatch Events IAM ロールを作成します。

ステップ 3:AWS CloudFormation のツールチェーンテンプレートのテスト

ツールチェーンテンプレートをアップロードする前に、AWS CloudFormation のツールチェーンテンプレートをテストし、エラーがある場合にはトラブルシューティングすることができます。

  1. 更新したテンプレートをローカルコンピュータに保存し、AWS CloudFormation コンソールを開きます。[Create Stack] (スタックの作成) を選択します。新しいリソースがリストに表示されています。

  2. スタックの作成エラーがないかどうかスタックを確認します。

  3. テストが完了したら、スタックを削除します。

    注記

    AWS CloudFormation に作成したスタックとすべてのリソースを削除します。削除しない場合は、プロジェクトを作成すると、リソース名が既に使用されているというエラーが表示される場合があります。

ステップ 4: ソースコードとツールチェーンテンプレートのアップロード

AWS CodeStar プロジェクトを作成するには、まずソースコードを .zip ファイルにし、Amazon S3 に置きます。AWS CodeStar はこの内容でリポジトリを初期化します。AWS CLI にプロジェクトを作成するコマンドを実行する際、入力ファイルでこの場所を指定します。

さらに、toolchain.yml ファイルをアップロードして、Amazon S3 に置きます。AWS CLI にプロジェクトを作成するコマンドを実行する際、入力ファイルでこの場所を指定します。

ソースコードとツールチェーンテンプレートをアップロードするには
  1. 以下のサンプルファイル構造は、圧縮およびアップロードされるソースファイルとツールチェーンテンプレートを示します。サンプルコードには、template.yml ファイルを含みます。このファイルは、toolchain.yml ファイルとは異なる点にご注意ください。

    ls src toolchain.yml ls src/ README.md app.js buildspec.yml index.js package.json template.yml tests
  2. ソースコードファイルの .zip ファイルを作成します。

    cd src; zip -r "../src.zip" *; cd ../
  3. cp コマンドを使用して、パラメータとしてファイルを含めます。

    以下のコマンドにより、.zip ファイルおよび toolchain.yml が Amazon S3 にアップロードされます。

    aws s3 cp src.zip s3://MyBucket/src.zip aws s3 cp toolchain.yml s3://MyBucket/toolchain.yml
Amazon S3 バケットを設定してソースコードを共有するには
  • ソースコードとツールチェーンを Amazon S3 に保存するため、Amazon S3 バケットポリシーとオブジェクト ACL を使用して、他の IAM ユーザーや AWS アカウントが、サンプルからプロジェクトを作成できるようにします。AWS CodeStar では、カスタムプロジェクトを作成するすべてのユーザーが、使用するツールチェーンとソースにアクセスすることができます。

    すべてのユーザーがサンプルを使用できるようにするためには、以下のコマンドを実行します:

    aws s3api put-object-acl --bucket MyBucket --key toolchain.yml --acl public-read aws s3api put-object-acl --bucket MyBucket --key src.zip --acl public-read

ステップ 5: AWS CodeStar でプロジェクトを作成する

プロジェクトを作成するには、以下の手順に従います。

重要

AWS CLI の任意の AWS リージョンを設定していることを確認します。プロジェクトは、AWS CLI に設定されている AWS リージョンに作成されます。

  1. create-project コマンドを実行し、--generate-cli-skeleton パラメータを含めます。

    aws codestar create-project --generate-cli-skeleton

    JSON 形式のデータが出力に表示されます。ローカルコンピュータ上の場所にあるファイル (例:input.json )または AWS CLI がインストールされているインスタンス にデータをコピーします。コピーされたデータを次のように変更して、結果を保存します。この入力ファイルは、MyProject という名前のプロジェクトに、myBucket という名前のバケットで設定されています。

    • roleArn パラメータを指定していることを確認します。カスタムテンプレートの場合は、このチュートリアルのサンプルテンプレートのように、ロールを指定する必要があります。このロールは、「ステップ 2: サンプルツールチェーンテンプレートのダウンロード」で指定されたすべてのリソースを作成するためのアクセス許可を持っている必要があります。

    • stackParametersProjectId パラメータを指定していることを確認します。このチュートリアルのサンプルテンプレートでは、このパラメータを使用する必要があります。

    { "name": "MyProject", "id": "myproject", "description": "Sample project created with the CLI", "sourceCode": [ { "source": { "s3": { "bucketName": "MyBucket", "bucketKey": "src.zip" } }, "destination": { "codeCommit": { "name": "myproject" } } } ], "toolchain": { "source": { "s3": { "bucketName": "MyBucket", "bucketKey": "toolchain.yml" } }, "roleArn": "role_ARN", "stackParameters": { "ProjectId": "myproject" } } }
  2. 保存したばかりのファイルがあるディレクトリに移動し、create-project コマンドをもう一度実行します。--cli-input-json パラメータを指定します。

    aws codestar create-project --cli-input-json file://input.json
  3. 成功すると、次のようなデータが出力に表示されます:

    { "id": "project-ID", "arn": "arn" }
    • この出力には、新しいプロジェクトに関する情報が含まれています:

      • id 値はプロジェクト ID を表します。

      • arn 値は、プロジェクトの ARN を表します。

  4. プロジェクトの作成ステータスを確認するには、describe-project コマンドを使用します。--id パラメータを指定します。

    aws codestar describe-project --id <project_ID>

    次のようなデータが出力に表示されます。

    { "name": "MyProject", "id": "myproject", "arn": "arn:aws:codestar:us-east-1:account_ID:project/myproject", "description": "", "createdTimeStamp": 1539700079.472, "stackId": "arn:aws:cloudformation:us-east-1:account_ID:stack/awscodestar-myproject/stack-ID", "status": { "state": "CreateInProgress" } }
    • この出力には、新しいプロジェクトに関する情報が含まれています:

      • id 値は一意のプロジェクト ID を表します。

      • state 値は、プロジェクトの作成ステータス (例: CreateInProgress または CreateComplete) を表します。

プロジェクトが作成される間、コマンドライン またはお好みの IDE からプロジェクトリポジトリに‭ ‬[add team members]‭‬ (チームメンバーの追加)、または‭ ‬[configure access]‭‬ (アクセスの設定) を行うことができます。