アクション間でのコンピューティングの共有 - Amazon CodeCatalyst

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

アクション間でのコンピューティングの共有

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

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

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

共有コンピューティングで複数のアクションを実行する

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

注記

コンピューティング共有は、コンピューティングタイプが EC2 に設定されている場合にのみサポートされ、Windows Server 2022 オペレーティングシステムではサポートされていません。コンピューティングフリート、コンピューティングタイプ、プロパティの詳細については、「」を参照してくださいワークフローのコンピューティング環境とランタイム環境の Docker イメージの設定

注記

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

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

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

注記

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

コンピューティング共有に関する考慮事項

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

コンピューティング共有 コンピューティング共有なし

コンピューティングタイプ

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

共有アーティファクトのアクセス出力 (追加の設定が必要)

コンピューティング共有を有効にする

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

Visual
ビジュアルエディタを使用してコンピューティング共有を有効にするには
  1. https://codecatalyst.aws/ で CodeCatalyst コンソールを開きます。

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

  3. ナビゲーションペインで CI/CD を選択し、ワークフロー を選択します。

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

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

  6. ビジュアル を選択します。

  7. ワークフロープロパティ を選択します。

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

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

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

  11. (オプション) ワークフローの実行モードを選択します。詳細については、「実行のキューイング動作の設定」を参照してください。

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

YAML
YAML エディタを使用してコンピューティング共有を有効にするには
  1. https://codecatalyst.aws/ で CodeCatalyst コンソールを開きます。

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

  3. ナビゲーションペインで CI/CD を選択し、ワークフロー を選択します。

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

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

  6. YAML を選択します。

  7. コンピューティング共有をオンにして、 SharedInstance フィールドを にTRUETypeを に設定しますEC2。ワークフローアクションの実行に使用するコンピューティングフリートFleetに設定します。オンデマンドフリートを選択するか、プロビジョニングされたフリートを作成して選択できます。詳細については、「プロビジョニングされたフリートの作成」および「プロビジョニングされたフリートまたはオンデマンドコンピューティングをアクションに割り当てる」を参照してください。

    ワークフロー 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: ... ...
  8. (オプション) 検証 を選択して、コミットする前にワークフローの YAML コードを検証します。

  9. コミット を選択し、コミットメッセージを入力し、もう一度コミット を選択します。

例: Amazon S3 Publish

次のワークフロー例は、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: dev-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: dev-bucket