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

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

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

近年、クラウド コンピューティング テクノロジーの発展に伴い、多くの企業が自社のデータを保存および管理するためにクラウド ストレージ サービスに注目し始めています。その中でも、AWS S3 (Amazon Web Services Simple Storage Service) が人気です。 AWS の中核サービスの 1 つとして、S3 は高可用性、高性能、スケーラブルで安全なストレージ サービスを提供します。この記事では、Go で AWS S3 を使用する方法について詳しく説明します。

  1. AWS SDK for Go のインストール

AWS S3 の使用を開始する前に、プロジェクトに AWS SDK for Go をインストールする必要があります。次のコマンドを使用してインストールできます。

go get -u github.com/aws/aws-sdk-go/aws
go get -u github.com/aws/aws-sdk-go/aws/session
go get -u github.com/aws/aws-sdk-go/service/s3

これらのコマンドは、必要な依存関係を GitHub からダウンロードし、プロジェクトに保存します。

  1. AWS SDK の設定

AWS S3 を使用する前に、S3 にアクセスするための AWS SDK 認証情報を設定する必要があります。 AWS コンソールで IAM ユーザーを作成し、そのユーザーのセキュリティ認証情報 (アクセス キーとシークレット アクセス キー) を生成できます。次に、これらの認証情報をコンピューターにアップロードします (通常は ~/.aws/credentials ファイル内)。

[default]
aws_access_key_id = Access_Key
aws_secret_access_key = Secret_Access_Key

セキュリティ上の理由から、これらの認証情報を環境変数に保存するか、他の手段を使用してこれらの認証情報を管理して漏洩を防ぐことができることに注意してください。

  1. 基本操作

AWS SDK と AWS S3 の設定が完了したので、いくつかの基本操作の実行を開始しましょう。

(1) S3 インスタンスの作成:

sess, err := session.NewSession(&aws.Config{
    Region: aws.String(region)},
)
s3Svc := s3.New(sess)

(2) S3 バケットの一覧表示:

result, err := s3Svc.ListBuckets(nil)
if err != nil {
    log.Fatalf("failed to list buckets, %v", err)
}

for _, bucket := range result.Buckets {
    fmt.Printf("%s : %s
", aws.StringValue(bucket.Name), bucket.CreationDate)
}

(3) 新しいバケットの作成:

_, err := s3Svc.CreateBucket(&s3.CreateBucketInput{
    Bucket: aws.String(bucketName),
})
if err != nil {
    log.Fatalf("failed to create bucket %s, %v", bucketName, err)
}

( 4) ファイルのアップロード:

file, err := os.Open(filename)
if err != nil {
    log.Fatalf("failed to open file %q, %v", filename, err)
}

defer func() {
    if err = file.Close(); err != nil {
        log.Fatalf("failed to close file %q, %v", filename, err)
    }
}()

_, err = s3Svc.PutObject(&s3.PutObjectInput{
    Body:   file,
    Bucket: aws.String(bucketName),
    Key:    aws.String(filepath.Base(filename)),
})
if err != nil {
    log.Fatalf("failed to upload file %q to bucket %q, %v", filename, bucketName, err)
}

(5) ファイルのダウンロード:

file, err := os.Create(filename)
if err != nil {
    log.Fatalf("failed to create file %q, %v", filename, err)
}

defer func() {
    if err = file.Close(); err != nil {
        log.Fatalf("failed to close file %q, %v", filename, err)
    }
}()

result, err := s3Svc.GetObject(&s3.GetObjectInput{
    Bucket: aws.String(bucketName),
    Key:    aws.String(objectName),
})
if err != nil {
    log.Fatalf("failed to download file %q from bucket %q, %v", objectName, bucketName, err)
}

if _, err = io.Copy(file, result.Body); err != nil {
    log.Fatalf("failed to download file %q from bucket %q, %v", objectName, bucketName, err)
}
  1. 結論

この記事では、Go の使い方を学習しました。言語 AWS S3 を使用します。データを AWS クラウド環境に保存する場合でも、アプリケーションで S3 サービスを使用する場合でも、S3 に接続して基本的な操作を実行する方法を知っておくと役立ちます。 AWS SDK for Go の機能を使用すると、S3 を Go アプリケーションのバックエンドストレージとして簡単に使用できます。この強力なストレージ サービスを使用して、より高度な操作とデータの管理を開始できるようになりました。

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

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