

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

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

# アクション間でのコンピューティングの共有する
<a name="compute-sharing"></a>

デフォルトでは、ワークフロー内のアクションは [[フリート]](workflows-working-compute.md#compute.fleets) 内の個別のインスタンスで実行されます。この動作では、入力の状態を分離し、予測可能なアクションを実行できます。デフォルトの動作では、ファイルや変数などのコンテキストをアクション間で共有するための明示的な設定が必要です。

コンピューティング共有は、同じインスタンスでワークフロー内のすべてのアクションを実行できる機能です。コンピューティング共有を使用すると、インスタンスのプロビジョニングに費やす時間が短縮されるため、ワークフローの実行時間が短縮されます。ワークフロー設定を追加することなく、アクション間でファイル (アーティファクト) を共有することもできます。

ワークフローがコンピューティング共有を使用して実行されると、デフォルトまたは指定されたフリートのインスタンスは、そのワークフロー内のすべてのアクションの期間中予約されます。ワークフローの実行が完了すると、インスタンス予約が解放されます。

**Topics**
+ [共有コンピューティングでの複数のアクションの実行](#how-to-compute-share)
+ [コンピューティング共有に関する考慮事項](#compare-compute-sharing)
+ [コンピューティング共有の有効化](#compute-sharing-steps)
+ [例](#compute-sharing-examples)

## 共有コンピューティングでの複数のアクションの実行
<a name="how-to-compute-share"></a>

ワークフローレベルで定義 YAML の `Compute` 属性を使用して、アクションのフリート共有プロパティとコンピューティング共有プロパティの両方を指定できます。CodeCatalyst のビジュアルエディタを使用してコンピューティングプロパティを設定することもできます。フリートを指定するには、既存のフリートの名前を設定し、コンピューティングタイプを **[EC2]** に設定し、コンピューティング共有をオンにします。

**注記**  
コンピューティング共有は、コンピューティングタイプが **[EC2]** に設定されている場合のみサポートされ、Windows Server 2022 オペレーティングシステムではサポートされていません。コンピューティングフリート、コンピューティングタイプ、プロパティの詳細については、「[コンピューティングイメージとランタイムイメージの構成](workflows-working-compute.md)」を参照してください。

**注記**  
無料利用枠にいて、ワークフロー定義 YAML で `Linux.x86-64.XLarge` または `Linux.x86-64.2XLarge` フリートを手動で指定すると、アクションは引き続きデフォルトのフリート (`Linux.x86-64.Large`) で実行されます。コンピューティングの可用性と料金の詳細については、「[階層オプション の表](https://codecatalyst.aws/explore/pricing)」を参照してください。

コンピューティング共有を有効にすると、ワークフローソースを含むフォルダがアクション間で自動的にコピーされます。ワークフロー定義 (YAML ファイル) 全体で出力アーティファクトを設定し、入力アーティファクトとして参照する必要はありません。ワークフロー作成者は、コンピューティング共有を使用しない場合と同様に、入力と出力を使用して環境変数をワイヤアップする必要があります。ワークフローソース外のアクション間でフォルダを共有する場合は、ファイルキャッシュを検討してください。詳細については、「[アクション間でのアーティファクトとファイルの共有](workflows-working-artifacts.md)」および「[ワークフロー実行間のファイルのキャッシュ](workflows-caching.md)」を参照してください。

ワークフロー定義ファイルが存在するソースリポジトリは、ラベル「`WorkflowSource`」によって識別されます。コンピューティング共有を使用している間、ワークフローソースは、それを参照する最初のアクションでダウンロードされ、ワークフロー実行のその後のアクションで自動的に使用可能になります。ファイルの追加、変更、削除など、アクションによってワークフローソースを含むフォルダに加えられた変更は、ワークフロー内の後続のアクションにも表示されます。コンピューティング共有を使用せずに、任意のワークフローアクションのワークフローソースフォルダにあるファイルを参照できます。詳細については、「[ソースリポジトリファイルの参照](workflows-sources-reference-files.md)」を参照してください。

**注記**  
コンピューティング共有ワークフローでは、並列アクションを設定できないように、アクションの厳密なシーケンスを指定する必要があります。出力アーティファクトはシーケンス内の任意のアクションで設定できますが、入力アーティファクトはサポートされていません。

## コンピューティング共有に関する考慮事項
<a name="compare-compute-sharing"></a>

ワークフローの実行を高速化し、同じインスタンスを使用するワークフロー内のアクション間でコンテキストを共有するために、コンピューティング共有を使用してワークフローを実行できます。コンピューティング共有の使用がシナリオに適しているかどうかを判断するには、以下を考慮してください。


|   | コンピューティング共有 | コンピューティング共有なし | 
| --- | --- | --- | 
|  コンピューティングタイプ  |  Amazon EC2  |  Amazon EC2、AWS Lambda  | 
|  インスタンスのプロビジョニング  |  同じインスタンスで実行されるアクション  |  別のインスタンスで実行されるアクション  | 
|  オペレーティングシステム  |  Amazon Linux 2  |  Amazon Linux 2、Windows Server 2022 (ビルドアクションのみ)  | 
|  ファイルの参照  |  `$CATALYST_SOURCE_DIR_WorkflowSource`, `/sources/WorkflowSource/`  |  `$CATALYST_SOURCE_DIR_WorkflowSource`, `/sources/WorkflowSource/`  | 
|  Workflow 構造  |  アクションはシーケンシャルにしか実行できません  |  アクションは並列で実行できます  | 
|  ワークフローアクション間のデータへのアクセス  |  キャッシュされたワークフローソースにアクセスする (`WorkflowSource`)  |  共有アーティファクトのアクセス出力 (追加の設定が必要)  | 

## コンピューティング共有の有効化
<a name="compute-sharing-steps"></a>

次の手順に従って、ワークフローのコンピューティング共有を有効にします。

------
#### [ Visual ]

**ビジュアルエディタを使用してコンピューティング共有を有効にするには**

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

1. プロジェクトを選択します。

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

1. ワークフローの名前を選択します。

1. **[編集]** を選択します。

1. **[ビジュアル]** を選択します。

1. **[ワークフロー]** プロパティを選択します。

1. **[コンピューティングタイプ]** ドロップダウンメニューから **[EC2]** を選択します。

1. (オプション) **[コンピューティングフリート - オプション]** ドロップダウンメニューから、ワークフローアクションの実行に使用するフリートを選択します。オンデマンドフリートを選択するか、プロビジョニングされたフリートを作成して選択できます。詳細については、「[プロビジョニングされたフリートの作成](projects-create-compute-resource.md)」および「[アクションへのフリートまたはコンピューティングの割り当て](workflows-assign-compute-resource.md)」を参照してください。

1. トグルを切り替えてコンピューティング共有を有効にし、ワークフロー内のアクションを同じフリートで実行します。

1. (オプション) ワークフローの実行モードを選択します。詳細については、「[実行のキュー動作の構成](workflows-configure-runs.md)」を参照してください。

1. **[コミット]** を選択し、コミットメッセージを入力し、再度 **[コミット]** を選択します。

------
#### [ YAML ]

**YAML エディタを使用してコンピューティング共有を有効にするには**

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

1. プロジェクトを選択します。

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

1. ワークフローの名前を選択します。

1. **[編集]** を選択します。

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

1. コンピューティング共有をオンにして、`SharedInstance` フィールドを `TRUE` に、`Type` を `EC2` に設定します。`Fleet` をワークフローアクションの実行に使用するコンピューティングフリートに設定します。オンデマンドフリートを選択するか、プロビジョニングされたフリートを作成して選択できます。詳細については、「[プロビジョニングされたフリートの作成](projects-create-compute-resource.md)」および「[アクションへのフリートまたはコンピューティングの割り当て](workflows-assign-compute-resource.md)」を参照してください。

   ワークフロー YAML で、次のようなコードを追加します。

   ```
     Name: MyWorkflow
     SchemaVersion: "1.0"
     Compute: # Define compute configuration.
       Type: EC2
       Fleet: MyFleet # Optionally, choose an on-demand or provisioned fleet.
       SharedInstance: true # Turn on compute sharing. Default is False.
     Actions:
       BuildFirst:
         Identifier: aws/build@v1
         Inputs:
           Sources:
             - WorkflowSource
         Configuration:
           Steps:
             - Run: ...
             ...
   ```

1. (オプション) **[検証]** を選択して、コミットする前にワークフローの YAML コードを検証します。

1. **[コミット]** を選択し、コミットメッセージを入力し、再度 **[コミット]** を選択します。

------

## 例
<a name="compute-sharing-examples"></a>

**Topics**
+ [例: Amazon S3 Publish](#compute-share-s3)

### 例: Amazon S3 Publish
<a name="compute-share-s3"></a>

次のワークフロー例は、Amazon S3 Publish アクションを 2 つの方法で実行する方法を示しています。まず入力アーティファクトを使用し、次にコンピューティング共有を使用します。コンピューティング共有では、キャッシュされた `WorkflowSource` にアクセスできるため、入力アーティファクトは必要ありません。さらに、ビルドアクションの出力アーティファクトが不要になりました。S3 Publish アクションは、明示的 `DependsOn` プロパティを使用してシーケンシャルアクションを維持するように設定されています。S3 Publish アクションを実行するには、ビルドアクションが正常に実行されている必要があります。
+ コンピューティング共有なしでは、入力アーティファクトを使用し、出力を後続のアクションと共有する必要があります。

  ```
  Name: S3PublishUsingInputArtifact
  SchemaVersion: "1.0"
  Actions:
    Build:
      Identifier: aws/build@v1
      Outputs:
        Artifacts:
          - Name: ArtifactToPublish
            Files: [output.zip]
      Inputs:
        Sources:
          - WorkflowSource
      Configuration:
        Steps:
          - Run: ./build.sh # Build script that generates output.zip
    PublishToS3:
      Identifier: aws/s3-publish@v1
      Inputs:
        Artifacts:
        - ArtifactToPublish
      Environment:
        Connections:
          - Role: codecatalyst-deployment-role
            Name: dev-deployment-role
        Name: dev-connection
      Configuration:
        SourcePath: output.zip
        DestinationBucketName: amzn-s3-demo-bucket
  ```
+ `SharedInstance` を `TRUE` に設定してコンピューティング共有を使用する場合、同じインスタンスで複数のアクションを実行し、単一のワークフローソースを指定してアーティファクトを共有できます。入力アーティファクトは必須ではなく、指定できません。

  ```
  Name: S3PublishUsingComputeSharing
  SchemaVersion: "1.0"
  Compute: 
    Type: EC2
    Fleet: dev-fleet
    SharedInstance: TRUE
  Actions:
    Build:
      Identifier: aws/build@v1
      Inputs:
        Sources:
          - WorkflowSource
      Configuration:
        Steps:
          - Run: ./build.sh # Build script that generates output.zip
    PublishToS3:
      Identifier: aws/s3-publish@v1
      DependsOn: 
        - Build
      Environment:
        Connections:
          - Role: codecatalyst-deployment-role
            Name: dev-deployment-role
        Name: dev-connection
      Configuration:
        SourcePath: output.zip
        DestinationBucketName: amzn-s3-demo-bucket
  ```