Maison développement back-end Golang Utilisation d'AWS Elastic File System (EFS) dans Go : un guide complet

Utilisation d'AWS Elastic File System (EFS) dans Go : un guide complet

Jun 17, 2023 pm 02:19 PM
go语言 aws efs

Avec l'application généralisée de la technologie du cloud computing et des applications conteneurisées, de plus en plus d'entreprises commencent à migrer leurs applications des serveurs physiques traditionnels vers des environnements cloud pour le déploiement et l'exploitation. L'utilisation de systèmes de stockage hautes performances dans des environnements cloud est un problème très important, et AWS Elastic File System (EFS) est un puissant système de fichiers distribué qui peut offrir une haute disponibilité, des performances élevées, sans serveur et une évolutivité.

EFS peut accéder et partager des fichiers en temps réel à partir de plusieurs instances EC2 et évolue automatiquement pour répondre aux besoins de capacité et de performances. Dans cet article, nous examinerons en profondeur comment utiliser AWS Elastic File System (EFS) dans Go.

Paramètres d'environnement

Avant d'utiliser EFS, vous devez d'abord configurer le bon environnement. Nous avons besoin d'un compte AWS, d'AWS SDK for Go et de paramètres régionaux Go.

Installer AWS SDK for Go

Vous pouvez installer AWS SDK for Go avec la commande suivante :

$ go get github.com/aws/aws-sdk-go/aws
$ go get github.com/aws/aws-sdk-go/aws/session
Copier après la connexion

Pour vérifier que le AWS SDK est correctement installé, vous pouvez écrire le programme de test suivant :

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))
    }
}
Copier après la connexion

Si tout se passe bien, la sortie contiendra la liste AWS des compartiments S3.

Créer un système de fichiers EFS

Avant d'utiliser EFS, vous devez créer un système de fichiers. Créez un système de fichiers EFS en suivant ces étapes :

  1. Connectez-vous à la console AWS.
  2. Sélectionnez EFS (Elastic File System) dans la liste des services.
  3. Cliquez sur le bouton Créer un système de fichiers.
  4. Dans la page Créer un système de fichiers, sélectionnez votre VPC et votre sous-réseau (vous devez sélectionner l'un des sous-réseaux publics pour qu'EFS connecte toutes les instances EC2).
  5. Dans la section Groupe de sécurité, sélectionnez un groupe de sécurité qui doit autoriser tout le trafic entrant et sortant de l'instance EC2.
  6. Dans la section Système de fichiers et mode de performances, sélectionnez l'option Par défaut.
  7. Cliquez sur Créer un système de fichiers.

Lors de la création d'un système de fichiers, le système créera automatiquement un groupe de sécurité dédié à EFS pour vous permettre d'autoriser tout le trafic de données depuis le VPC. Vous pouvez remplacer cette option par vos propres règles de groupe de sécurité.

Installer le pilote EFS

Afin d'intégrer votre application Go à EFS, vous devez installer le pilote AWS EFS. Sur Amazon Linux ou RHEL, vous pouvez installer le pilote EFS en suivant ces étapes :

  1. Exécutez la commande suivante pour installer les dépendances du pilote EFS :
$ sudo yum install gcc libstdc++-devel gcc-c++ fuse fuse-devel automake openssl-devel git
Copier après la connexion
  1. Téléchargez et créez le pilote EFS :
$ git clone https://github.com/aws-efs-utils/efs-utils
$ cd efs-utils
$ ./build-deb.sh
Copier après la connexion
  1. Installez le Pilote EFS Procédure :
$ sudo yum install ./build/amazon-efs-utils*rpm
Copier après la connexion
  1. Confirmez que le pilote EFS est correctement installé. Cela peut être vérifié avec la commande suivante :
$ sudo mount -t efs fs-XXXXX:/ /mnt/efs
Copier après la connexion

où fs-XXXXX est l'ID de votre système de fichiers EFS. S'il n'y a aucun message d'erreur dans la sortie, l'installation a réussi.

Utilisation d'EFS

Après avoir installé le pilote EFS et créé le système de fichiers EFS, vous pouvez connecter votre application Go au système de fichiers EFS. Voici quelques bonnes pratiques pour utiliser EFS :

Dans les programmes, utilisez le système de fichiers EFS via la bibliothèque standard du système d'exploitation. Dans l'environnement du langage Go, vous pouvez utiliser le package syscall ou le package os pour vous connecter au système de fichiers EFS.

Voici un exemple d'extrait de programme pour se connecter à 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)
    }
}
Copier après la connexion

Dans l'extrait de code ci-dessus, nous avons utilisé un appel système pour monter le système de fichiers EFS et répertorier les fichiers qu'il contient. À la fin du programme, nous avons utilisé un appel système pour démonter le système de fichiers.

Étant donné qu'EFS est une API RESTful, il prend en charge toutes les opérations standard du système de fichiers telles que la création, la lecture, l'écriture et la suppression de fichiers. Dans l'environnement du langage Go, vous pouvez utiliser les fonctions du package os pour effectuer ces opérations.

Voici un exemple de programme pour créer un fichier sur 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.")
    }
}
Copier après la connexion

Dans l'exemple ci-dessus, nous utilisons la fonction Create du package os pour créer un nouveau fichier sur le système de fichiers EFS. Ce fichier doit être fermé avant la fin du programme.

Conclusion

AWS Elastic File System (EFS) est un puissant système de fichiers distribué qui offre haute disponibilité, performances, sans serveur et évolutivité. Dans l'environnement du langage Go, vous pouvez utiliser le package syscall ou le package os dans la bibliothèque standard pour vous connecter au système de fichiers EFS et utiliser toutes ses fonctions. Grâce aux conseils de cet article, vous devriez déjà connaître quelques bonnes pratiques pour utiliser EFS, afin de pouvoir utiliser pleinement les fonctions d'EFS dans l'environnement linguistique Go.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Apr 02, 2025 pm 02:06 PM

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Apr 02, 2025 pm 02:03 PM

La différence entre l'impression de chaîne dans le langage go: la différence dans l'effet de l'utilisation de fonctions println et string () est en Go ...

Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Apr 02, 2025 pm 04:54 PM

Le problème de l'utilisation de Redessstream pour implémenter les files d'attente de messages dans le langage GO consiste à utiliser le langage GO et redis ...

Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Apr 02, 2025 pm 05:09 PM

Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Lorsque vous utilisez Goland pour le développement du langage GO, de nombreux développeurs rencontreront des balises de structure personnalisées ...

Quelle est la différence entre la structure de définition des mots clés `var` et« type »dans le langage Go? Quelle est la différence entre la structure de définition des mots clés `var` et« type »dans le langage Go? Apr 02, 2025 pm 12:57 PM

Deux façons de définir les structures dans le langage GO: la différence entre les mots clés VAR et le type. Lorsque vous définissez des structures, GO Language voit souvent deux façons d'écrire différentes: d'abord ...

Quelles bibliothèques de GO sont développées par de grandes entreprises ou fournies par des projets open source bien connus? Quelles bibliothèques de GO sont développées par de grandes entreprises ou fournies par des projets open source bien connus? Apr 02, 2025 pm 04:12 PM

Quelles bibliothèques de GO sont développées par de grandes entreprises ou des projets open source bien connus? Lors de la programmation en Go, les développeurs rencontrent souvent des besoins communs, ...

Lorsque vous utilisez SQL.Open, pourquoi ne signale pas une erreur lorsque DSN passe vide? Lorsque vous utilisez SQL.Open, pourquoi ne signale pas une erreur lorsque DSN passe vide? Apr 02, 2025 pm 12:54 PM

Lorsque vous utilisez SQL.Open, pourquoi le DSN ne signale-t-il pas une erreur? En langue go, sql.open ...

See all articles