チュートリアル: Amazon S3 にアーティファクトをアップロードする - Amazon CodeCatalyst

チュートリアル: Amazon S3 にアーティファクトをアップロードする

このチュートリアルでは、いくつかの [ビルドアクション] を含む Amazon CodeCatalyst ワークフローを使用して、Amazon S3 バケットにアーティファクトをアップロードする方法について説明します。これらのアクションは、ワークフローの開始時に連続して実行されます。最初のビルドアクションは、 Hello.txtGoodbye.txt の 2 つのファイルを生成し、それらをビルドアーティファクトにバンドルします。2 番目のビルドアクションは、アーティファクトを Amazon S3 にアップロードします。コミットをソースリポジトリにプッシュするたびに実行されるようにワークフローを設定します。

前提条件

開始するには、以下が必要です。

  • 接続された AWS アカウントを持つ CodeCatalyst スペース が必要です。詳細については、「スペースを作成する」を参照してください。

  • スペースには、次の名前の空のプロジェクトが必要です。

    codecatalyst-artifact-project

    このプロジェクトを作成するには、[ゼロから開始] オプションを使用します。

    詳細については、「Amazon CodeCatalyst での空のプロジェクトの作成」を参照してください。

  • プロジェクトには、以下と呼ばれる CodeCatalyst 環境が必要です。

    codecatalyst-artifact-environment

    この環境を次のように設定します。

    • [開発] などの任意のタイプを選択します。

    • AWS アカウントに接続します。

    • [デフォルトの IAM ロール] で、任意のロールを選択します。後で別のロールを指定します。

    詳細については、「AWS アカウント と VPC へのデプロイ」を参照してください。

ステップ 1: AWS ロールの作成

このステップでは、後でワークフローのビルドアクションに割り当てる IAM AWS ロールを作成します。このロールは、AWS アカウントにアクセスし、アーティファクトが保存される Amazon S3 に書き込むアクセス許可を CodeCatalyst ビルドアクションに付与します。ロールは、[ビルドロール] と呼ばれます。

注記

別のチュートリアル用に作成したビルドロールが既にある場合は、このチュートリアルでも使用できます。以下の手順で示されているアクセス許可と信頼ポリシーがあることを確認してください。

IAM ロールの詳細については、「AWS AWS Identity and Access Management IAM ユーザーガイド」の [IAM ロール] を参照してください。

ビルドロールを作成するには
  1. ロールのポリシーを以下の手順で作成します。

    1. AWS にサインインします。

    2. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

    3. ナビゲーションペインで、ポリシー を選択します。

    4. [ポリシーの作成] を選択します。

    5. [JSON] タブを選択します。

    6. 既存のコードを削除します。

    7. 次のコードを貼り付けます。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": "*" } ] }
      注記

      ロールがワークフローアクションの実行に初めて使用されるときは、リソースポリシーステートメントでワイルドカードを使用し、利用可能になった後にリソース名でポリシーの範囲を絞り込みます。

      "Resource": "*"
    8. [Next: Tags] (次へ: タグ) を選択します。

    9. [次へ: レビュー] を選択します。

    10. [名前] に次のように入力します。

      codecatalyst-s3-build-policy
    11. [ポリシーの作成] を選択します。

      これで、アクセス許可ポリシーが作成されました。

  2. 次のようにビルドロールを作成します。

    1. ナビゲーションペインで ロール を選択してから、ロールを作成する を選択します。

    2. [カスタム信頼ポリシー] を選択します。

    3. 既存のカスタム信頼ポリシーを削除します。

    4. 次の信頼ポリシーを追加します。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    5. [Next] を選択します。

    6. [アクセス許可ポリシー]codecatalyst-s3-build-policy を検索し、チェックボックスをオンにします。

    7. [Next] を選択します。

    8. [ロール名] には、次のように入力します。

      codecatalyst-s3-build-role
    9. [ロールの説明] には、次のように入力します。

      CodeCatalyst build role
    10. [ロールの作成] を選択します。

    これで、信頼ポリシーとアクセス許可ポリシーを使用してビルドロールが作成されました。

ステップ 1: Amazon S3 バケットを作成する

このステップでは、Hello.txt および Goodbye.txt アーティファクトをアップロードする Amazon S3 バケットを作成します。

Amazon S3 バケットを作成するには
  1. https://console.aws.amazon.com/s3/ で Amazon S3 コンソールを開きます。

  2. メインペインで、[バケットを作成] を選択します。

  3. [バケット名] に、次のように入力します。

    codecatalyst-artifact-bucket
  4. [AWS リージョン] で、リージョンを選択します。このチュートリアルは、[米国西部 (オレゴン) us-west-2] を選択していることを前提としています。Amazon S3 がサポートしているリージョンについては、「AWS 全般のリファレンス」の「Amazon Simple Storage Service エンドポイントとクォータ」を参照してください。

  5. ページ下部にある [バケットを作成] ボタンを選択します。

  6. 作成したバケットの名前をコピーします。例:

    codecatalyst-artifact-bucket

これで、米国西部 (オレゴン) us-west-2 リージョンで codecatalyst-artifact-bucket という名前のバケットが作成されました。

ステップ 3: ソースレポジトリを作成する

このステップでは、CodeCatalyst に空のソースリポジトリを作成します。このリポジトリは、チュートリアルのワークフロー定義ファイルを保存するために使用されます。

ソースリポジトリの詳細については、「ソースリポジトリを作成する」を参照してください。

ソースリポジトリを作成するには
  1. https://codecatalyst.aws/ で CodeCatalyst コンソールを開きます。

  2. プロジェクト「codecatalyst-artifact-project」に移動します。

  3. ナビゲーションペインで [コード] を選択してから、[ソースリポジトリ] を選択します。

  4. [リポジトリの追加] を選択し、[リポジトリの作成] を選択します。

  5. [リポジトリ名] に次のように入力します。

    codecatalyst-artifact-source-repository
  6. [Create] (作成) を選択します。

これで、codecatalyst-artifact-source-repository というリポジトリが作成されました。

ステップ 4: ワークフローを作成する

このステップでは、連続して実行される次の構成要素で構成されるワークフローを作成します。

  • トリガー – このトリガーは、ソースリポジトリに変更をプッシュすると、ワークフローを自動的に開始します。詳細については、「トリガーを使用したワークフロー実行の自動的な開始」を参照してください。

  • ビルドアクション「GenerateFiles」 - トリガー時に、GenerateFiles アクションは 2 つのファイル「Hello.txt」と「Goodbye.txt」を作成し、アーティファクト「codecatalystArtifact」にパッケージ化します。

  • 別のビルドアクション「Upload」 - GenerateFiles アクションが完了すると、Upload アクションは AWS CLI コマンド aws s3 sync を実行して、codecatalystArtifact とソースリポジトリ内のファイルを Amazon S3 バケットにアップロードします。AWS CLI は CodeCatalyst コンピューティングプラットフォームに事前インストールおよび事前設定されているため、インストールや設定を行う必要はありません。

    CodeCatalyst コンピューティングプラットフォームでパッケージ化されたソフトウェアの詳細については、「ランタイム環境イメージの指定」を参照してください。AWS CLI の aws s3 sync コマンドの詳細については、「AWS CLI コマンドリファレンス」の「同期」を参照してください。

ビルドアクションの詳細については、「ワークフローを使用したビルド」を参照してください。

ワークフローを作成するには
  1. ナビゲーションペインで [CI/CD][ワークフロー] の順に選択します。

  2. [ワークフローを作成] を選択します。

  3. YAML サンプルコードを削除します。

  4. 次の YAML コードを追加します。

    注記

    次の YAML コードでは、必要に応じて Connections: セクションを省略できます。このセクションを省略する場合は、環境の [デフォルト IAM ロール] フィールドで指定されたロールに、ステップ 1: AWS ロールの作成 で記述されているアクセス許可と信頼ポリシーが含まれていることを確認する必要があります。デフォルトの IAM ロールを使用して環境を設定する方法の詳細については、「環境を作成する」を参照してください。

    Name: codecatalyst-artifact-workflow SchemaVersion: 1.0 Triggers: - Type: Push Branches: - main Actions: GenerateFiles: Identifier: aws/build@v1 Configuration: Steps: # Create the output files. - Run: echo "Hello, World!" > "Hello.txt" - Run: echo "Goodbye!" > "Goodbye.txt" Outputs: Artifacts: - Name: codecatalystArtifact Files: - "**/*" Upload: Identifier: aws/build@v1 DependsOn: - GenerateFiles Environment: Name: codecatalyst-artifact-environment Connections: - Name: codecatalyst-account-connection Role: codecatalyst-s3-build-role Inputs: Artifacts: - codecatalystArtifact Configuration: Steps: # Upload the output artifact to the S3 bucket. - Run: aws s3 sync . s3://codecatalyst-artifact-bucket

    上記のコードで、以下を置き換えます。

    このファイルのプロパティの詳細については、「ビルドおよびテストアクション YAML」を参照してください。

  5. (オプション) [検証] を選択して、コミットする前に YAML コードが有効であることを確認します。

  6. [Commit] (コミット) を選択します。

  7. [ワークフローをコミット] ダイアログボックスで、次のように入力します。

    1. [ワークフローファイル名] の場合、デフォルトの「codecatalyst-artifact-workflow」のままにします。

    2. [コミットメッセージ] には、次のように入力します。

      add initial workflow file
    3. [リポジトリ] で、[codecatalyst-artifact-source-repository] を選択します。

    4. [ブランチ名] で、[main] を選択します。

    5. [Commit] (コミット) を選択します。

    これでワークフローが作成されました。ワークフローの先頭で定義されているトリガーにより、ワークフローの実行が自動的に開始されます。具体的には、codecatalyst-artifact-workflow.yaml ファイルをソースリポジトリにコミット (およびプッシュ) すると、トリガーによってワークフローの実行が開始します。

ワークフロー実行の進行状況を確認するには
  1. ナビゲーションペインで [CI/CD][ワークフロー] の順に選択します。

  2. 先ほど作成したワークフロー「codecatalyst-artifact-workflow」を選択します。

  3. [GenerateFiles] を選択すると、最初のビルドアクションの進行状況が表示されます。

  4. [アップロード] を選択して、2 番目のビルドアクションの進行状況を確認します。

  5. [アップロード] アクションが完了したら、以下を実行します。

    • ワークフローの実行が成功したら、次の手順に進みます。

    • ワークフローの実行が失敗した場合は、[ログ] を選択して問題をトラブルシューティングします。

ステップ 5: 結果の検証

ワークフローを実行したら、Amazon S3 サービスに移動し、[codecatalyst-artifact-bucket] バケットを確認します。これで、次のファイルとフォルダが含まれるようになりました。

. |— .aws/ |— .git/ |Goodbye.txt |Hello.txt |REAME.md

Goodbye.txt および Hello.txt ファイルは、codecatalystArtifact アーティファクトの一部であったため、アップロードされました。.aws/.git/README.md ファイルはソースリポジトリにあったため、アップロードされました。

クリーンアップ

CodeCatalyst および AWS でクリーンアップして、これらのサービスに課金されないようにします。

CodeCatalyst でクリーンアップするには
  1. https://codecatalyst.aws/ で CodeCatalyst コンソールを開きます。

  2. codecatalyst-artifact-source-repository ソースリポジトリを削除します。

  3. codecatalyst-artifact-workflow ワークフローを選択します。

AWS でクリーンアップするには
  1. Amazon S3 で次のようにクリーンアップします。

    1. https://console.aws.amazon.com/s3/ で Amazon S3 コンソールを開きます。

    2. codecatalyst-artifact-bucket バケットのファイルを削除します。

    3. codecatalyst-artifact-bucket バケットを削除します。

  2. IAM で次のようにクリーンアップします。

    1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

    2. codecatalyst-s3-build-policy を削除します。

    3. codecatalyst-s3-build-role を削除します。