ホームページ バックエンド開発 Golang Amazon Sith Go でのファイル管理の初心者ガイド

Amazon Sith Go でのファイル管理の初心者ガイド

Nov 05, 2024 am 02:19 AM

Amazon Simple Storage Service (S3) は、ウェブベースのファイルストレージの業界標準になっています。最大 99.999999999% の耐久性とセキュリティを実現するように設計されています。また、柔軟なストレージ クラス、データ管理、分析機能も備えています。

Go でプロジェクトのサーバー側アプリを構築していて、ストレージ オプションが必要ですか?この記事では、あなたが AWS の初心者であることを前提として、Go アプリのストレージとして S3 を使用するプロセスについて説明します。

AWS と Go の入門

適切な権限とパラメータを使用して AWS S3 バケットを設定するのは、困難な場合があります。バケットを作成し、IAM ユーザーを作成し、バケット上で操作を実行する権限を IAM ユーザーに発行し、環境内にアクセス キーを設定する必要があります。

まず、Amazon AWS アカウントを作成し、まだお持ちでない場合はサインインします。次に、このように S3 を検索します。

Beginner

次に、「バケットの作成」をクリックします。プロジェクトの仕様に従ってバケットを構成するように求められます。

Beginner

バケットを作成したので、次のステップは、S3 バケットへのアクセス許可を発行する IAM ユーザーを設定することです。

プロファイルのセキュリティ認証情報セクションに移動し、ユーザーを作成します。

Beginner

次に、ユーザーのアクセス キーを作成し、アクセス キーと秘密キーを取得します。

Beginner

コンピューターのルート ディレクトリに、.aws フォルダーと、拡張子のない credentials という名前のファイルを作成します。次に、次のようにキーを追加します:

[default]
aws_access_key_id = <aws_access_key_id here>
aws_secret_access_key = <aws_secret_access_key here>
ログイン後にコピー
ログイン後にコピー

次に、これらの権限をユーザーに発行して、S3 アップロードを許可します。

Beginner

最後に、Go プロジェクトを初期化し、AWS Go SDK をインストールします。

go mod tidy
go get github.com/aws/aws-sdk-go
ログイン後にコピー
ログイン後にコピー

これでセットアップは完了です。AWS S3 バケットを使用してファイルのアップロード、ダウンロード、管理を開始できます。

S3 バケットへのファイルのアップロード

まず、AWS SDK パッケージから必要なパッケージをインポートする必要があります。

これらのモジュールを main.go ファイル、または使用しているファイルの先頭に追加します。

package main

import (
    "bytes"
    "fmt"
    "io"
    "os"

    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/s3"
)
ログイン後にコピー
ログイン後にコピー

ファイルをアップロードするには、新しいセッションを作成し、ファイルを開き、セッション インスタンスを使用してファイルをアップロードする必要があります。

[default]
aws_access_key_id = <aws_access_key_id here>
aws_secret_access_key = <aws_secret_access_key here>
ログイン後にコピー
ログイン後にコピー

UploadFile 関数は、バケット名、AWS リージョン、ファイルキー、ACL (アクセス制御リスト) を取得し、指定されたファイルを指定されたキーで S3 にアップロードします。

session.NewSession 関数は新しい AWS セッションを作成し、s3.New は新しい S3 セッションを作成します。 PutObject 関数は、ファイル Bucket、Key、ファイル本体、および ACL を含む PutObjectInput への参照を受け取ります。

go mod tidy
go get github.com/aws/aws-sdk-go
ログイン後にコピー
ログイン後にコピー

パラメータを指定して UploadFile 関数を呼び出したとき、ファイルが S3 バケットにアップロードされたことがわかります。

Beginner

AWS S3 コンソールでファイル名をクリックすると、いつでもファイルの詳細を参照できます。

S3 バケットからのファイルのダウンロード

これで、指定したキーを使用してファイルの取得を試みることができます。

package main

import (
    "bytes"
    "fmt"
    "io"
    "os"

    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/s3"
)
ログイン後にコピー
ログイン後にコピー

クライアント インスタンスを作成した後、GetObject 関数は &s3.GetObjectInput インスタンス内のファイル パラメーターを受け取ります。 io.Copy 関数を使用して、ファイル ストリームを任意の宛先にコピーできるようになりました。

func UploadFile(bucket, region, filePath, key, acl string) error {
    sess, err := session.NewSession(&aws.Config{
        Region: aws.String(region),
    })
    if err != nil {
        return fmt.Errorf("error creating session: %w", err)
    }
    file, err := os.Open(filePath)
    if err != nil {
        return fmt.Errorf("error opening file: %w", err)
    }
    defer file.Close()

    var buf bytes.Buffer
    if _, err := io.Copy(&buf, file); err != nil {
        return fmt.Errorf("error reading file: %w", err)
    }

    _, err = s3.New(sess).PutObject(&s3.PutObjectInput{
        Bucket: aws.String(bucket), 
        Key:    aws.String(key),          
        Body:   bytes.NewReader(buf.Bytes()), 
        ACL: aws.String(acl),     
    })
    if err != nil {
        return fmt.Errorf("error uploading file: %w", err)
    }

    fmt.Println("File uploaded successfully:", filePath, "to key:", key)
    return nil
}
ログイン後にコピー

DownloadFile 関数を使用してプログラムを実行すると、ファイルは指定した宛先パスにダウンロードされる必要があります。

Beginner

宛先パスのキーにもキーを指定する必要があります。

S3 バケットからのファイルの削除

S3 バケットからファイルを削除するには、AWS SDK の DeleteObject 関数を使用してファイルを削除します。削除する S3 バケット名とファイル キーを指定する必要があります。

func main() {
    bucket := "cloudboxbucket"  
    region := "eu-north-1"      
    filePath := "Makefile"     
    key := "Makefile"           
    acl := "private"         

    if err := UploadFile(bucket, region, filePath, key, acl); err != nil {
        fmt.Println("Error uploading file:", err)
    }
}
ログイン後にコピー

DeleteFile 関数は、アップロードおよびダウンロードの例のように、セッションを作成することから始まります。 s3Client.DeleteObject は DeleteObjectInput 構造体で呼び出され、ここで Bucket パラメーターと Key パラメーターを指定します。

WaitUntilObjectNotExists 関数を使用して、ファイルが存在しないことを確認できます。

func DownloadFile(bucket, region, key, destPath string) error {
    sess, err := session.NewSession(&aws.Config{
        Region: aws.String(region),
    })
    if err != nil {
        return fmt.Errorf("error creating session: %w", err)
    }

    s3Client := s3.New(sess)

    output, err := s3Client.GetObject(&s3.GetObjectInput{
        Bucket: aws.String(bucket),
        Key:    aws.String(key),
    })
    if err != nil {
        return fmt.Errorf("error downloading file: %w", err)
    }
    defer output.Body.Close()

    destFile, err := os.Create(destPath)
    if err != nil {
        return fmt.Errorf("error creating destination file: %w", err)
    }
    defer destFile.Close()

    if _, err := io.Copy(destFile, output.Body); err != nil {
        return fmt.Errorf("error saving file: %w", err)
    }

    fmt.Println("File downloaded successfully:", key, "to", destPath)
    return nil
}
ログイン後にコピー

DeleteFile 関数を実行すると、Makefile が S3 バケットに存在しないことがわかります。

Beginner

結論

IAM ユーザー用に S3 バケットを設定し (root でも機能します)、S3 バケットからファイルをアップロード、ダウンロード、削除する方法を学習しました。

AWS S3 バケットを使用して実行できる機能は他にもたくさんあります。この記事が、プロジェクトのユースケースに応じてさらに先に進むための基礎となれば幸いです。

以上がAmazon Sith Go でのファイル管理の初心者ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Golang vs. Python:パフォーマンスとスケーラビリティ Golang vs. Python:パフォーマンスとスケーラビリティ Apr 19, 2025 am 12:18 AM

Golangは、パフォーマンスとスケーラビリティの点でPythonよりも優れています。 1)Golangのコンピレーションタイプの特性と効率的な並行性モデルにより、高い並行性シナリオでうまく機能します。 2)Pythonは解釈された言語として、ゆっくりと実行されますが、Cythonなどのツールを介してパフォーマンスを最適化できます。

Golang and C:Concurrency vs. Raw Speed Golang and C:Concurrency vs. Raw Speed Apr 21, 2025 am 12:16 AM

Golangは並行性がCよりも優れていますが、Cは生の速度ではGolangよりも優れています。 1)Golangは、GoroutineとChannelを通じて効率的な並行性を達成します。これは、多数の同時タスクの処理に適しています。 2)Cコンパイラの最適化と標準ライブラリを介して、極端な最適化を必要とするアプリケーションに適したハードウェアに近い高性能を提供します。

ゴーを始めましょう:初心者のガイド ゴーを始めましょう:初心者のガイド Apr 26, 2025 am 12:21 AM

goisidealforforbeginnersandsutable forcloudnetworkservicesduetoitssimplicity、andconcurrencyfeatures.1)installgofromtheofficialwebsiteandverify with'goversion'.2)

Golang vs. C:パフォーマンスと速度の比較 Golang vs. C:パフォーマンスと速度の比較 Apr 21, 2025 am 12:13 AM

Golangは迅速な発展と同時シナリオに適しており、Cは極端なパフォーマンスと低レベルの制御が必要なシナリオに適しています。 1)Golangは、ごみ収集と並行機関のメカニズムを通じてパフォーマンスを向上させ、高配列Webサービス開発に適しています。 2)Cは、手動のメモリ管理とコンパイラの最適化を通じて究極のパフォーマンスを実現し、埋め込みシステム開発に適しています。

Golangの影響:速度、効率、シンプルさ Golangの影響:速度、効率、シンプルさ Apr 14, 2025 am 12:11 AM

speed、効率、およびシンプル性をspeedsped.1)speed:gocompilesquilesquicklyandrunseffictient、理想的なlargeprojects.2)効率:等系dribribraryreducesexexternaldedenciess、開発効果を高める3)シンプルさ:

Golang vs. Python:重要な違​​いと類似点 Golang vs. Python:重要な違​​いと類似点 Apr 17, 2025 am 12:15 AM

GolangとPythonにはそれぞれ独自の利点があります。Golangは高性能と同時プログラミングに適していますが、PythonはデータサイエンスとWeb開発に適しています。 Golangは同時性モデルと効率的なパフォーマンスで知られていますが、Pythonは簡潔な構文とリッチライブラリエコシステムで知られています。

GolangとC:パフォーマンスのトレードオフ GolangとC:パフォーマンスのトレードオフ Apr 17, 2025 am 12:18 AM

GolangとCのパフォーマンスの違いは、主にメモリ管理、コンピレーションの最適化、ランタイム効率に反映されています。 1)Golangのゴミ収集メカニズムは便利ですが、パフォーマンスに影響を与える可能性があります。

パフォーマンスレース:ゴラン対c パフォーマンスレース:ゴラン対c Apr 16, 2025 am 12:07 AM

GolangとCにはそれぞれパフォーマンス競争において独自の利点があります。1)Golangは、高い並行性と迅速な発展に適しており、2)Cはより高いパフォーマンスと微細な制御を提供します。選択は、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

See all articles