ホームページ  >  記事  >  バックエンド開発  >  Go での AWS Batch の使用: 完全ガイド

Go での AWS Batch の使用: 完全ガイド

王林
王林オリジナル
2023-06-17 15:21:07933ブラウズ

Go での AWS Batch の使用: 完全ガイド

AWS Batch は、バッチ コンピューティング ワークロードを簡単にスケジュールして実行できる、フルマネージドのコンピューティング リソース ホスティング サービスです。 AWS Batch は多くのプログラミング言語をサポートしていますが、この記事では AWS Batch を Go 言語で使用する方法について説明します。

このガイドでは、Go SDK を使用して AWS Batch API と対話し、ジョブ定義を作成、設定、実行する方法、および AWS Batch の包括的な機能を使用してジョブとコンピューティングを管理する方法を紹介します。環境。

Go SDK を使用した AWS Batch API の操作

Go SDK を使用して AWS Batch API と簡単に操作できます。まず、Go プロジェクトに「aws-sdk-go」依存関係をインポートする必要があります。次のコマンドを使用して依存関係をインストールできます:

go get -u github.com/aws/aws-sdk-go

依存関係をインポートした後、Go コードで AWS Batch クライアントを設定する必要があります。次のコードを使用して、米国西部 (オレゴン) をリージョンとしてクライアントを作成できます:

import (
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/batch"
)

sess := session.Must(session.NewSessionWithOptions(session.Options{
    Config: aws.Config{
        Region: aws.String("us-west-2"),
    },
}))

svc := batch.New(sess)

ジョブ定義の作成

AWS Batch を使用する前に、ジョブ定義を作成する必要があります。ジョブ定義は、ジョブの実行方法を説明するパラメーターのセットです。イメージ名、コンテナー コマンド、環境変数などのいくつかのパラメーターを定義して、ジョブの要件を定義できます。

次のコード例は、Go でジョブ定義を作成する方法を示しています:

import (
    "github.com/aws/aws-sdk-go/service/batch"
    "github.com/aws/aws-sdk-go/service/batch/batchiface"
)

func createJobDefinition(svc batchiface.BatchAPI, family string, containerName string, image string) (*batch.RegisterJobDefinitionOutput, error) {
    input := &batch.RegisterJobDefinitionInput{
        JobDefinitionName: aws.String(family),
        Type:              aws.String(batch.JobDefinitionTypeContainer),
        ContainerProperties: &batch.ContainerProperties{
            Image:   aws.String(image),
            Vcpus:   aws.Int64(1),
            Memory:  aws.Int64(2000),
            Command: []*string{aws.String("echo"), aws.String("Hello World!")},
        },
    }
    return svc.RegisterJobDefinition(input)
}

このコードは、イメージ、CPU、ジョブに関する情報を含むコンテナ ジョブ定義を AWS Batch に作成します。メモリ要件、実行するコマンドなど。

コンピューティング環境の作成と構成

コンピューティング環境は、バッチ ジョブが実行されるインフラストラクチャであり、コンピューティング リソースとスタックの記述で構成されます。 AWS Batch コンソールを使用するか、Go SDK を使用してコンピューティング環境を作成できます。

次のコード例は、Go でコンピューティング環境を作成する方法を示しています:

func createComputeEnvironment(svc batchiface.BatchAPI, name string, instanceType string, minvCpus int64, maxvCpus int64, desiredvCpus int64, subnets []string, securityGroups []string) (*batch.CreateComputeEnvironmentOutput, error) {
    input := &batch.CreateComputeEnvironmentInput{
        ComputeEnvironmentName: aws.String(name),
        Type:                  aws.String("EC2"),
        ServiceRole:           aws.String("AWSBatchServiceRole"),
        ComputeResources: &batch.ComputeResource{
            Type: aws.String("EC2"),
            Ec2Configuration: &batch.Ec2Configuration{
                ImageIdOverride: aws.String("ami-035b3c7efe6d061d5"),
            },
            Subnets:        aws.StringSlice(subnets),
            SecurityGroupIds: aws.StringSlice(securityGroups),
            InstanceTypes:  []*string{aws.String(instanceType)},
            MinvCpus:       aws.Int64(minvCpus),
            MaxvCpus:       aws.Int64(maxvCpus),
            DesiredvCpus:   aws.Int64(desiredvCpus),
        },
    }
    return svc.CreateComputeEnvironment(input)
}

このコードは、AWS Batch でコンピューティング環境を作成します。コンピューティング環境は、バッチ ジョブを実行するように構成された一連のインスタンスで構成されます。

ジョブの実行

AWS Batch でジョブを開始するには、ジョブ定義からジョブを作成し、AWS Batch に送信します。次のコード例は、Go でジョブを開始する方法を示しています。

func submitJob(svc batchiface.BatchAPI, jobDefinitionArn string, jobName string) (*batch.SubmitJobOutput, error) {
    input := &batch.SubmitJobInput{
        JobDefinition: aws.String(jobDefinitionArn),
        JobName:       aws.String(jobName),
    }
    return svc.SubmitJob(input)
}

このコードは、ジョブ定義を含み、ジョブの名前を指定するジョブを送信します。

ジョブとコンピューティング環境の管理

ジョブとコンピューティング環境の作成と実行に加えて、AWS Batch API を使用してジョブとコンピューティング環境を管理することもできます。次のコード例は、Go でコンピューティング環境を削除する方法を示しています。

func deleteComputeEnvironment(svc batchiface.BatchAPI, name string) (*batch.DeleteComputeEnvironmentOutput, error) {
    input := &batch.DeleteComputeEnvironmentInput{
        ComputeEnvironment: aws.String(name),
    }
    return svc.DeleteComputeEnvironment(input)
}

このコードは、コンピューティング環境を削除し、コンピューティング環境内のすべてのリソースをクリアします。

結論

このガイドでは、ジョブ定義の作成方法、コンピューティング環境、ジョブの実行方法など、Go 言語で AWS Batch を使用する方法に関する完全なガイドを紹介しました。 。 AWS Batch は、コンピューティング リソースを簡単に管理および拡張するための強力で使いやすいプラットフォームを提供します。拡張性が高く、柔軟性があり、管理が簡単なバッチ コンピューティング ソリューションをお探しの場合は、AWS Batch が最適です。

以上がGo での AWS Batch の使用: 完全ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。