

Amazon CodeCatalyst は新規のお客様には提供されなくなりました。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、「[CodeCatalyst から移行する方法](migration.md)」を参照してください。

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

# チュートリアル: Amazon S3 にアーティファクトをアップロードする
<a name="build-deploy"></a>

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

**Topics**
+ [前提条件](#build-deploy-tut-prereqs)
+ [ステップ 1: AWS ロールを作成する](#build-deploy-tut-role)
+ [ステップ 1: Amazon S3 バケットを作成する](#build-deploy-tut-artifact)
+ [ステップ 3: ソースレポジトリを作成する](#deploy-tut-lambda-cfn-source)
+ [ステップ 4: ワークフローを作成する](#build-deploy-tut-workflow.title)
+ [ステップ 5: 結果の検証](#build-deploy.s3.verify)
+ [クリーンアップ](#deploy-tut-lambda-cfn-clean-up)

## 前提条件
<a name="build-deploy-tut-prereqs"></a>

開始するには、以下が必要です。
+ 接続された AWS アカウントを持つ CodeCatalyst **スペース** が必要です。詳細については、「[スペースを作成する](spaces-create.md)」を参照してください。
+ スペースには、次の名前の空のプロジェクトが必要です。

  ```
  codecatalyst-artifact-project
  ```

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

  詳細については、「[Amazon CodeCatalyst での空のプロジェクトの作成](projects-create.md#projects-create-empty)」を参照してください。
+ プロジェクトには、以下と呼ばれる CodeCatalyst **[環境]** が必要です。

  ```
  codecatalyst-artifact-environment
  ```

  この環境を次のように設定します。
  + **[開発]** などの任意のタイプを選択します。
  +  AWS アカウントに を接続します。
  + **[デフォルトの IAM ロール]** で、任意のロールを選択します。後で別のロールを指定します。

  詳細については、「[AWS アカウント と VPCs へのデプロイ](deploy-environments.md)」を参照してください。

## ステップ 1: AWS ロールを作成する
<a name="build-deploy-tut-role"></a>

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

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

IAM ロールの詳細については、「 *AWS AWS Identity and Access Management ユーザーガイド*」の[「IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)」を参照してください。

**ビルドロールを作成するには**

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

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

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

   1. ナビゲーションペインで、**ポリシー** を選択してください。

   1. **[Create policy]** (ポリシーを作成) を選択します。

   1. **JSON** タブを選択します。

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

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

------
#### [ JSON ]

****  

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

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

      ```
      "Resource": "*"
      ```

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

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

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

      ```
      codecatalyst-s3-build-policy
      ```

   1. [**Create policy**] (ポリシーの作成) を選択します。

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

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

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

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

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

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

   1. [**次へ**] を選択します。

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

   1. [**次へ**] を選択します。

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

      ```
      codecatalyst-s3-build-role
      ```

   1. **[ロールの説明]** には、次のように入力します。

      ```
      CodeCatalyst build role
      ```

   1. [**ロールの作成**] を選択してください。

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

## ステップ 1: Amazon S3 バケットを作成する
<a name="build-deploy-tut-artifact"></a>

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

**Amazon S3 バケットを作成するには**

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

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

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

   ```
   codecatalyst-artifact-bucket
   ```

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

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

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

   ```
   codecatalyst-artifact-bucket
   ```

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

## ステップ 3: ソースレポジトリを作成する
<a name="deploy-tut-lambda-cfn-source"></a>

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

ソースリポジトリの詳細については、「[ソースリポジトリを作成する](source-repositories-create.md)」を参照してください。

**ソースリポジトリを作成するには**

1. [https://codecatalyst.aws/](https://codecatalyst.aws/) で CodeCatalyst コンソールを開きます。

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

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

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

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

   ```
   codecatalyst-artifact-source-repository
   ```

1. **[作成]** を選択します。

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

## ステップ 4: ワークフローを作成する
<a name="build-deploy-tut-workflow.title"></a>

このステップでは、連続して実行される次の構成要素で構成されるワークフローを作成します。
+ トリガー – このトリガーは、ソースリポジトリに変更をプッシュすると、ワークフローを自動的に開始します。詳細については、「[トリガーを使用したワークフロー実行の自動的な開始](workflows-add-trigger.md)」を参照してください。
+ ビルドアクション「`GenerateFiles`」 - トリガー時に、`GenerateFiles` アクションは 2 つのファイル「`Hello.txt`」と「`Goodbye.txt`」を作成し、出力アーティファクト「`codecatalystArtifact`」にパッケージ化します。
+ 別のビルドアクション「`Upload`」- `GenerateFiles` アクションが完了すると、`Upload` アクションは AWS CLI コマンド `aws s3 sync` を実行して、`codecatalystArtifact` とソースリポジトリ内のファイルを Amazon S3 バケットにアップロードします。 AWS CLI は CodeCatalyst コンピューティングプラットフォームにプリインストールおよび事前設定されているため、インストールまたは設定する必要はありません。

  CodeCatalyst コンピューティングプラットフォームでパッケージ化されたソフトウェアの詳細については、「[ランタイム環境イメージの指定](build-images.md)」を参照してください。コマンドの詳細については、`aws s3 sync`「 コマンド*AWS CLI リファレンス*」の AWS CLI[「同期](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html)」を参照してください。

ビルドアクションの詳細については、「[ワークフローを使用したビルド](build-workflow-actions.md)」を参照してください。

**ワークフローを作成するには**

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

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

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

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

   ```
   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
   ```

   上記のコードで、以下を置き換えます。
   + [[前提条件](#build-deploy-tut-prereqs)] で作成した環境の名前を持つ *[codecatalyst-artifact-environment]*。
   + [前提条件](#build-deploy-tut-prereqs) で作成したアカウント接続の名前を持つ *[codecatalyst-account-connection]*。
   + [ステップ 1: AWS ロールを作成する](#build-deploy-tut-role) で作成したビルドロールの名前を持つ、*[codecatalyst-s3-build-role]*。
   + [ステップ 1: Amazon S3 バケットを作成する](#build-deploy-tut-artifact) で作成した Amazon S3 の名前を持つ *[codecatalyst-artifact-bucket]*。

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

1. (任意) **[検証]** を選択して、コミットする前に YAML コードが有効であることを確認します。

1. **[コミット]** を選択します。

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

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

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

      ```
      add initial workflow file
      ```

   1. **[リポジトリ]** で、**[codecatalyst-artifact-source-repository]** を選択します。

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

   1. **[コミット]** を選択します。

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

**ワークフロー実行の進行状況を確認するには**

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

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

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

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

1. **[アップロード]** アクションが完了したら、以下を実行します。
   + ワークフローの実行が成功したら、次の手順に進みます。
   + ワークフローの実行が失敗した場合は、**[ログ]** を選択して問題をトラブルシューティングします。

## ステップ 5: 結果の検証
<a name="build-deploy.s3.verify"></a>

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

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

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

## クリーンアップ
<a name="deploy-tut-lambda-cfn-clean-up"></a>

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

**CodeCatalyst でクリーンアップするには**

1. [https://codecatalyst.aws/](https://codecatalyst.aws/) で CodeCatalyst コンソールを開きます。

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

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

**でクリーンアップするには AWS**

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

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

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

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

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

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

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

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