チュートリアル: AWS でプロジェクトを作成する CodeStar とAWS CLI - AWS CodeStar

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

チュートリアル: AWS でプロジェクトを作成する CodeStar とAWS CLI

このチュートリアルでは、の使用方法を説明します。AWS CLIAWS を作成するには CodeStar サンプルソースコードとサンプルツールチェーンテンプレートを使用したプロジェクト。AWS CodeStar を規定するAWSで指定したインフラストラクチャと IAM リソースAWS CloudFormationツールチェーンテンプレート。このプロジェクトでは、ツールチェーンのリソースを管理して、ソースコードの構築とデプロイを行います。

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

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

このチュートリアルのサンプルツールチェーンテンプレートでは、リポジトリ (CodeCommit)、パイプライン (CodePipeline)、ビルドコンテナ (CodeBuild) を作成し、AWS CloudFormation を使用してソースコードを Lambda プラットフォームにデプロイします。これらのリソースに加えて、IAM ロール (ランタイム環境のアクセス許可の絞り込みに使用) や、Amazon S3 バケット (CodePipeline によりデプロイメントアーティファクトの保存に使用) もあります。 CloudWatch コードをリポジトリにプッシュするときにパイプラインのデプロイをトリガーするために使用されるイベントルール。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リソースの作成 CodeBuild AWS を与える IAM ワーカーロール CodeStar を管理するためのアクセス許可 CodeBuild ビルドプロジェクト。

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

  • -AWS::IAM::Role AWS CloudFormationリソースの作成AWS CloudFormationAWS を与える IAM ワーカーロール CodeStar リソーススタックを作成するためのアクセス許可。

  • -AWS::IAM::Role AWS CloudFormationリソースの作成AWS CloudFormationAWS を与える IAM ワーカーロール CodeStar リソーススタックを作成するためのアクセス許可。

  • -AWS::IAM::Role AWS CloudFormationリソースの作成AWS CloudFormationAWS を与える IAM ワーカーロール CodeStar リソーススタックを作成するためのアクセス許可。

  • -AWS::Events::Rule AWS CloudFormationリソースの作成 CloudWatch プッシュイベント用リポジトリをモニタリングするイベントルール。

  • -AWS::IAM::Role AWS CloudFormationリソースの作成 CloudWatch イベント 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]‭‬ (アクセスの設定) を行うことができます。