チュートリアル: Amazon S3 にアーティファクトをアップロードする
このチュートリアルでは、いくつかの [ビルドアクション] を含む Amazon CodeCatalyst ワークフローを使用して、Amazon S3 バケットにアーティファクトをアップロードする方法について説明します。これらのアクションは、ワークフローの開始時に連続して実行されます。最初のビルドアクションは、 Hello.txt
と Goodbye.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 ロール] を参照してください。
ビルドロールを作成するには
-
ロールのポリシーを以下の手順で作成します。
-
AWS にサインインします。
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、ポリシー を選択します。
-
[ポリシーの作成] を選択します。
-
[JSON] タブを選択します。
-
既存のコードを削除します。
-
次のコードを貼り付けます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": "*" } ] }
注記
ロールがワークフローアクションの実行に初めて使用されるときは、リソースポリシーステートメントでワイルドカードを使用し、利用可能になった後にリソース名でポリシーの範囲を絞り込みます。
"Resource": "*"
-
[Next: Tags] (次へ: タグ) を選択します。
-
[次へ: レビュー] を選択します。
-
[名前] に次のように入力します。
codecatalyst-s3-build-policy
-
[ポリシーの作成] を選択します。
これで、アクセス許可ポリシーが作成されました。
-
-
次のようにビルドロールを作成します。
-
ナビゲーションペインで ロール を選択してから、ロールを作成する を選択します。
-
[カスタム信頼ポリシー] を選択します。
-
既存のカスタム信頼ポリシーを削除します。
-
次の信頼ポリシーを追加します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
[Next] を選択します。
-
[アクセス許可ポリシー] で
codecatalyst-s3-build-policy
を検索し、チェックボックスをオンにします。 -
[Next] を選択します。
-
[ロール名] には、次のように入力します。
codecatalyst-s3-build-role
-
[ロールの説明] には、次のように入力します。
CodeCatalyst build role
-
[ロールの作成] を選択します。
これで、信頼ポリシーとアクセス許可ポリシーを使用してビルドロールが作成されました。
-
ステップ 1: Amazon S3 バケットを作成する
このステップでは、Hello.txt
および Goodbye.txt
アーティファクトをアップロードする Amazon S3 バケットを作成します。
Amazon S3 バケットを作成するには
https://console.aws.amazon.com/s3/
で Amazon S3 コンソールを開きます。 -
メインペインで、[バケットを作成] を選択します。
-
[バケット名] に、次のように入力します。
codecatalyst-artifact-bucket
-
[AWS リージョン] で、リージョンを選択します。このチュートリアルは、[米国西部 (オレゴン) us-west-2] を選択していることを前提としています。Amazon S3 がサポートしているリージョンについては、「AWS 全般のリファレンス」の「Amazon Simple Storage Service エンドポイントとクォータ」を参照してください。
-
ページ下部にある [バケットを作成] ボタンを選択します。
-
作成したバケットの名前をコピーします。例:
codecatalyst-artifact-bucket
これで、米国西部 (オレゴン) us-west-2 リージョンで codecatalyst-artifact-bucket
という名前のバケットが作成されました。
ステップ 3: ソースレポジトリを作成する
このステップでは、CodeCatalyst に空のソースリポジトリを作成します。このリポジトリは、チュートリアルのワークフロー定義ファイルを保存するために使用されます。
ソースリポジトリの詳細については、「ソースリポジトリを作成する」を参照してください。
ソースリポジトリを作成するには
https://codecatalyst.aws/
で CodeCatalyst コンソールを開きます。 -
プロジェクト「
codecatalyst-artifact-project
」に移動します。 -
ナビゲーションペインで [コード] を選択してから、[ソースリポジトリ] を選択します。
-
[リポジトリの追加] を選択し、[リポジトリの作成] を選択します。
-
[リポジトリ名] に次のように入力します。
codecatalyst-artifact-source-repository
-
[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 コマンドリファレンス」の「同期」を参照してください。
ビルドアクションの詳細については、「ワークフローを使用したビルド」を参照してください。
ワークフローを作成するには
-
ナビゲーションペインで [CI/CD]、[ワークフロー] の順に選択します。
-
[ワークフローを作成] を選択します。
-
YAML サンプルコードを削除します。
-
次の 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
上記のコードで、以下を置き換えます。
-
[前提条件] で作成した環境の名前を持つ
[codecatalyst-artifact-environment]
。 -
前提条件 で作成したアカウント接続の名前を持つ
[codecatalyst-account-connection]
。 -
ステップ 1: AWS ロールの作成 で作成したビルドロールの名前を持つ、
[codecatalyst-s3-build-role]
。 -
ステップ 1: Amazon S3 バケットを作成する で作成した Amazon S3 の名前を持つ
[codecatalyst-artifact-bucket]
。
このファイルのプロパティの詳細については、「ビルドおよびテストアクション YAML」を参照してください。
-
-
(オプション) [検証] を選択して、コミットする前に YAML コードが有効であることを確認します。
-
[Commit] (コミット) を選択します。
-
[ワークフローをコミット] ダイアログボックスで、次のように入力します。
-
[ワークフローファイル名] の場合、デフォルトの「
codecatalyst-artifact-workflow
」のままにします。 -
[コミットメッセージ] には、次のように入力します。
add initial workflow file
-
[リポジトリ] で、[codecatalyst-artifact-source-repository] を選択します。
-
[ブランチ名] で、[main] を選択します。
-
[Commit] (コミット) を選択します。
これでワークフローが作成されました。ワークフローの先頭で定義されているトリガーにより、ワークフローの実行が自動的に開始されます。具体的には、
codecatalyst-artifact-workflow.yaml
ファイルをソースリポジトリにコミット (およびプッシュ) すると、トリガーによってワークフローの実行が開始します。 -
ワークフロー実行の進行状況を確認するには
-
ナビゲーションペインで [CI/CD]、[ワークフロー] の順に選択します。
-
先ほど作成したワークフロー「
codecatalyst-artifact-workflow
」を選択します。 -
[GenerateFiles] を選択すると、最初のビルドアクションの進行状況が表示されます。
-
[アップロード] を選択して、2 番目のビルドアクションの進行状況を確認します。
-
[アップロード] アクションが完了したら、以下を実行します。
-
ワークフローの実行が成功したら、次の手順に進みます。
-
ワークフローの実行が失敗した場合は、[ログ] を選択して問題をトラブルシューティングします。
-
ステップ 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 でクリーンアップするには
https://codecatalyst.aws/
で CodeCatalyst コンソールを開きます。 -
codecatalyst-artifact-source-repository
ソースリポジトリを削除します。 -
codecatalyst-artifact-workflow
ワークフローを選択します。
AWS でクリーンアップするには
-
Amazon S3 で次のようにクリーンアップします。
https://console.aws.amazon.com/s3/
で Amazon S3 コンソールを開きます。 -
codecatalyst-artifact-bucket
バケットのファイルを削除します。 -
codecatalyst-artifact-bucket
バケットを削除します。
-
IAM で次のようにクリーンアップします。
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
codecatalyst-s3-build-policy
を削除します。 -
codecatalyst-s3-build-role
を削除します。