ホームページ  >  記事  >  バックエンド開発  >  Go での AWS Elastic File System (EFS) の使用: 完全ガイド

Go での AWS Elastic File System (EFS) の使用: 完全ガイド

PHPz
PHPzオリジナル
2023-06-17 14:19:371676ブラウズ

クラウド コンピューティング テクノロジとコンテナ化されたアプリケーションの普及に伴い、アプリケーションを従来の物理サーバーからクラウド環境に移行して展開および運用する企業が増えています。クラウド環境で高性能ストレージ システムを使用することは非常に重要な問題であり、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 ファイル システムを作成します。

  1. AWS コンソールにログインします。
  2. サービスリストで EFS (Elastic File System) を選択します。
  3. [ファイル システムの作成]ボタンをクリックします。
  4. [ファイル システムの作成] ページで、VPC とサブネットを選択します (EFS がすべての EC2 インスタンスに接続できるようにするには、パブリック サブネットの 1 つを選択する必要があります)。
  5. [セキュリティ グループ] セクションで、EC2 インスタンスからのすべてのインバウンドおよびアウトバウンド トラフィックを許可するセキュリティ グループを選択します。
  6. [ファイル システムとパフォーマンス モード]セクションで、デフォルトのオプションを選択します。
  7. [ファイル システムの作成]
  8. をクリックします。
  9. ファイル システムを作成すると、VPC からのすべてのデータ トラフィックを許可する EFS 固有のセキュリティ グループが自動的に作成されます。このオプションは独自のセキュリティ グループ ルールで上書きできます。

EFS ドライバーをインストールする

Go アプリケーションを EFS と統合するには、AWS EFS ドライバーをインストールする必要があります。 Amazon Linux または RHEL では、次の手順に従って EFS ドライバーをインストールできます:

次のコマンドを実行して EFS ドライバーの依存関係をインストールします:
  1. $ sudo yum install gcc libstdc++-devel gcc-c++ fuse fuse-devel automake openssl-devel git
EFS ドライバーをダウンロードしてビルドします:
  1. $ git clone https://github.com/aws-efs-utils/efs-utils
    $ cd efs-utils
    $ ./build-deb.sh
EFS ドライバーをインストールします:
  1. $ sudo yum install ./build/amazon-efs-utils*rpm
EFS ドライバーが正しくインストールされていることを確認します。これは、次のコマンドで確認できます:
  1. $ sudo mount -t efs fs-XXXXX:/ /mnt/efs
  2. ここで、fs-XXXXX は EFS ファイル システムの ID です。出力にエラー メッセージがなければ、インストールは成功しています。

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 サイトの他の関連記事を参照してください。

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