クラウド コンピューティング テクノロジとコンテナ化されたアプリケーションの普及に伴い、アプリケーションを従来の物理サーバーからクラウド環境に移行して展開および運用する企業が増えています。クラウド環境で高性能ストレージ システムを使用することは非常に重要な問題であり、AWS Elastic File System (EFS) は、高可用性、高性能、サーバーレス、スケーラビリティを提供できる強力な分散ファイル システムです。
EFS は、複数の EC2 インスタンスからリアルタイムでファイルにアクセスして共有でき、容量とパフォーマンスのニーズに合わせて自動的にスケールします。この記事では、Go で AWS Elastic File System (EFS) を使用する方法を詳しく説明します。
環境設定
EFS を使用する前に、まず正しい環境を設定する必要があります。 AWS アカウント、AWS SDK for Go、Go ロケールが必要です。
AWS SDK for Go をインストールする
次のコマンドを使用して AWS SDK for Go をインストールできます:
$ go get github.com/aws/aws-sdk-go/aws $ go get github.com/aws/aws-sdk-go/aws/session
AWS SDK が正しくインストールされているかどうかを確認するには、次の手順を実行します。次のテスト プログラムを作成します。
package main import ( "fmt" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" ) func main() { // Specify the AWS Region to use. sess, err := session.NewSessionWithOptions(session.Options{ Config: aws.Config{ Region: aws.String("us-west-2"), }, }) if err != nil { fmt.Println(err) return } // Create an S3 service client. s3 := NewS3(sess) // Verify the client by listing all buckets buckets, err := s3.ListBuckets(nil) if err != nil { fmt.Println(err) return } fmt.Println("Buckets:") for _, b := range buckets.Buckets { fmt.Printf("* %s created on %s ", aws.StringValue(b.Name), aws.TimeValue(b.CreationDate)) } }
すべてがうまくいけば、出力には AWS S3 バケットのリストが含まれます。
EFS ファイル システムの作成
EFS を使用する前に、ファイル システムを作成する必要があります。次の手順に従って EFS ファイル システムを作成します。
EFS ドライバーをインストールする
Go アプリケーションを EFS と統合するには、AWS EFS ドライバーをインストールする必要があります。 Amazon Linux または RHEL では、次の手順に従って EFS ドライバーをインストールできます:
次のコマンドを実行して EFS ドライバーの依存関係をインストールします:$ sudo yum install gcc libstdc++-devel gcc-c++ fuse fuse-devel automake openssl-devel git
$ git clone https://github.com/aws-efs-utils/efs-utils $ cd efs-utils $ ./build-deb.sh
$ sudo yum install ./build/amazon-efs-utils*rpm
$ sudo mount -t efs fs-XXXXX:/ /mnt/efs
EFS の使用
EFS ドライバーをインストールして EFS ファイル システムを作成した後、Go アプリケーションを EFS ファイル システムに接続できます。 EFS を使用するためのベスト プラクティスをいくつか示します。
プログラムでは、オペレーティング システムの標準ライブラリを通じて EFS ファイル システムを使用します。 Go 言語環境では、syscall パッケージまたは os パッケージを使用して EFS ファイル システムに接続できます。
以下は、EFS に接続するためのサンプル プログラムの一部です:
package main import ( "fmt" "os" "syscall" ) func main() { // Mount EFS. if err := syscall.Mount("fs-XXXXX.efs.us-west-2.amazonaws.com:/", "/mnt/efs", "nfs4", 0, "rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2"); err != nil { fmt.Println("Unable to mount EFS file system:", err) os.Exit(1) } // List the files in the EFS file system. if files, err := os.ReadDir("/mnt/efs"); err != nil { fmt.Println("Unable to read files in EFS:", err) } else { fmt.Println("Files in EFS:") for _, file := range files { fmt.Println(file.Name()) } } // Unmount EFS when done. if err := syscall.Unmount("/mnt/efs", 0); err != nil { fmt.Println("Unable to unmount EFS file system:", err) os.Exit(1) } }
上記のコードの一部では、システム コールを使用して EFS ファイル システムをマウントし、その中のファイルを一覧表示します。プログラムの最後に、システム コールを使用してファイル システムをアンマウントしました。
EFS は RESTful API であるため、ファイルの作成、読み取り、書き込み、削除など、すべての標準的なファイル システム操作をサポートします。 Go言語環境では、osパッケージの機能を利用してこれらの操作を実行できます。
次は、EFS 上にファイルを作成するサンプル プログラムです:
package main import ( "fmt" "os" ) func main() { // Create a new file in EFS. if file, err := os.Create("/mnt/efs/myfile.txt"); err != nil { fmt.Println("Unable to create file:", err) os.Exit(1) } else { defer file.Close() fmt.Println("File created successfully.") } }
上の例では、OS パッケージの Create 関数を使用して、EFS ファイル システム上に新しいファイルを作成します。 。プログラムが終了する前に、このファイルを閉じる必要があります。
結論
AWS Elastic File System (EFS) は、高可用性、パフォーマンス、サーバーレス、スケーラビリティを提供する強力な分散ファイル システムです。 Go 言語環境では、標準ライブラリの syscall パッケージまたは os パッケージを使用して EFS ファイル システムに接続し、そのすべての機能を使用できます。この記事のガイダンスを通じて、EFS を使用するためのいくつかのベスト プラクティスをすでに習得しているはずです。これにより、Go 言語環境で EFS の機能を最大限に活用できるようになります。
以上がGo での AWS Elastic File System (EFS) の使用: 完全ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。