国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

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

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

Nov 05, 2024 am 02:19 AM

Amazon Simple Storage Service (S3) は、ウェブベースのファイルストレージの業(yè)界標(biāo)準(zhǔn)になっています。最大 99.999999999% の耐久性とセキュリティを?qū)g現(xiàn)するように設(shè)計(jì)されています。また、柔軟なストレージ クラス、データ管理、分析機(jī)能も備えています。

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

AWS と Go の入門

適切な権限とパラメータを使用して AWS S3 バケットを設(shè)定するのは、困難な場(chǎng)合があります。バケットを作成し、IAM ユーザーを作成し、バケット上で操作を?qū)g行する権限を IAM ユーザーに発行し、環(huán)境內(nèi)にアクセス キーを設(shè)定する必要があります。

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

Beginner

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

Beginner

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

プロファイルのセキュリティ認(rèn)証情報(bào)セクションに移動(dòng)し、ユーザーを作成します。

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 バケットを使用してファイルのアップロード、ダウンロード、管理を開(kāi)始できます。

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"
)

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

[default]
aws_access_key_id = <aws_access_key_id here>
aws_secret_access_key = <aws_secret_access_key here>

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

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

go mod tidy
go get github.com/aws/aws-sdk-go

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

Beginner

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

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 関數(shù)は &s3.GetObjectInput インスタンス內(nèi)のファイル パラメーターを受け取ります。 io.Copy 関數(shù)を使用して、ファイル ストリームを任意の宛先にコピーできるようになりました。

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 関數(shù)を使用してプログラムを?qū)g行すると、ファイルは指定した宛先パスにダウンロードされる必要があります。

Beginner

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

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

S3 バケットからファイルを削除するには、AWS SDK の DeleteObject 関數(shù)を使用してファイルを削除します。削除する 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 関數(shù)は、アップロードおよびダウンロードの例のように、セッションを作成することから始まります。 s3Client.DeleteObject は DeleteObjectInput 構(gòu)造體で呼び出され、ここで Bucket パラメーターと Key パラメーターを指定します。

WaitUntilObjectNotExists 関數(shù)を使用して、ファイルが存在しないことを確認(rèn)できます。

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 関數(shù)を?qū)g行すると、Makefile が S3 バケットに存在しないことがわかります。

Beginner

結(jié)論

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

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

以上がAmazon Sith Go でのファイル管理の初心者ガイドの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

デフォルトでGoの靜的リンクの意味は何ですか? デフォルトでGoの靜的リンクの意味は何ですか? Jun 19, 2025 am 01:08 AM

プログラムをデフォルトでスタンドアロンのバイナリにコンパイルします。主な理由は靜的リンクです。 1.よりシンプルな展開(kāi):依存関係ライブラリの追加インストールは、Linux分布全體で直接実行できます。 2。バイナリサイズの大きい:すべての依存関係を含むと、ファイルサイズが増加しますが、構(gòu)築フラグまたは圧縮ツールを通じて最適化できます。 3.予測(cè)可能性とセキュリティの高まり:外部ライブラリバージョンの変更によってもたらされたリスクを避け、安定性を高めます。 4.制限された操作の柔軟性:共有ライブラリのホットアップデートはできません。依存関係の脆弱性を修正するには、再コンパイルと展開(kāi)が必要です。これらの機(jī)能により、CLIツール、マイクロサービス、その他のシナリオに適していますが、ストレージが制限されているか、集中管理に依存している環(huán)境でトレードオフが必要です。

Cのような手動(dòng)メモリ管理なしでメモリの安全性をどのように保証しますか? Cのような手動(dòng)メモリ管理なしでメモリの安全性をどのように保証しますか? Jun 19, 2025 am 01:11 AM

guensuresmemorysafetywithoutwithoutmanagemationgarbagecolectrection、nopointerariThmetic、safeconcurrency、andruntimechecks.first、go’sgarbagecollectorectivative -sunusedmemory、rieksanddanglingpointers.second、itdidilowsepointe

GOでバッファーチャネルを作成するにはどうすればよいですか? (例えば、make(chan int、10)) GOでバッファーチャネルを作成するにはどうすればよいですか? (例えば、make(chan int、10)) Jun 20, 2025 am 01:07 AM

GOでバッファチャネルを作成するには、Make関數(shù)の容量パラメーターを指定するだけです。バッファチャネルは、指定された容量を超えない限り、受信機(jī)がない場(chǎng)合に送信操作が一時(shí)的にデータを保存できるようにします。たとえば、ch:= make(chanint、10)は、最大10個(gè)の整數(shù)値を保存できるバッファチャネルを作成します。バッファーされていないチャネルとは異なり、データは送信時(shí)にすぐにブロックされませんが、データはレシーバーによって奪われるまで一時(shí)的にバッファーに保存されます。それを使用する場(chǎng)合、注意してください。1。メモリの無(wú)駄や頻繁なブロックを避けるために、容量設(shè)定は妥當(dāng)でなければなりません。 2。バッファは、バッファーにメモリの問(wèn)題が無(wú)期限に蓄積されないようにする必要があります。 3.信號(hào)は、リソースを保存するために、chantruct {}タイプを渡すことができます。一般的なシナリオには、並行性の數(shù)、生産者消費(fèi)者モデル、および差別化の制御が含まれます

システムプログラミングタスクにGOにどのように使用できますか? システムプログラミングタスクにGOにどのように使用できますか? Jun 19, 2025 am 01:10 AM

GOは、Cなどのコンパイルされた言語(yǔ)のパフォーマンスと、最新言語(yǔ)の使いやすさとセキュリティを組み合わせているため、システムプログラミングに最適です。 1.ファイルとディレクトリの操作に関して、GOのOSパッケージは、ファイルとディレクトリが存在するかどうかの作成、削除、名前変更、チェックをサポートします。 OS.ReadFileを使用して、バックアップスクリプトまたはログ処理ツールの書き込みに適した1行のコードでファイル全體を読み取ります。 2。プロセス管理の観點(diǎn)から、OS/EXECパッケージのexec.command関數(shù)は、外部コマンドを?qū)g行し、出力をキャプチャし、環(huán)境変數(shù)を設(shè)定し、入力と出力フローをリダイレクトし、自動(dòng)化ツールと展開(kāi)スクリプトに適したプロセスライフサイクルを制御できます。 3。ネットワークと並行性の観點(diǎn)から、ネットパッケージはTCP/UDPプログラミング、DNSクエリ、オリジナルセットをサポートします。

GOの機(jī)能的オプションパターンは何ですか、そしてそれらはいつコンストラクターの設(shè)計(jì)に役立ちますか? GOの機(jī)能的オプションパターンは何ですか、そしてそれらはいつコンストラクターの設(shè)計(jì)に役立ちますか? Jun 14, 2025 am 12:21 AM

functionaloptionsingoareadesignsigntocreateflexibleandmaintainableconstructorswithmanyoptionalparameters.insteadofusinglongparameterlistsorconctructorovers、thispatternpassessessunctions.thatmodififythisthififysconfiguration.thiscuration.

GOの構(gòu)造インスタンスでメソッドを呼び出すにはどうすればよいですか? GOの構(gòu)造インスタンスでメソッドを呼び出すにはどうすればよいですか? Jun 24, 2025 pm 03:17 PM

GO言語(yǔ)では、構(gòu)造メソッドを呼び出すには、最初に構(gòu)造と受信機(jī)を結(jié)合する方法を定義し、ポイント番號(hào)を使用してアクセスする必要があります。構(gòu)造の長(zhǎng)方形を定義した後、メソッドは値受信機(jī)またはポインターレシーバーを介して宣言できます。 1。func(rrectangle)領(lǐng)域()intなどの値受信機(jī)を使用し、rect.area()を介して直接呼び出します。 2.構(gòu)造を変更する必要がある場(chǎng)合は、FUNC(r*長(zhǎng)方形)setWidth(...)などのポインターレシーバーを使用し、GOはポインターと値の変換を自動(dòng)的に処理します。 3.構(gòu)造を埋め込むと、埋め込まれた構(gòu)造の方法が改善され、外側(cè)の構(gòu)造を介して直接呼び出すことができます。 4。GOは、Getter/Setterを使用する必要はありません。

GOのインターフェイスとは何ですか?また、それらを定義するにはどうすればよいですか? GOのインターフェイスとは何ですか?また、それらを定義するにはどうすればよいですか? Jun 22, 2025 pm 03:41 PM

Goでは、インターフェイスは、実裝を指定せずに動(dòng)作を定義するタイプです。インターフェイスはメソッドシグネチャで構(gòu)成され、これらのメソッドを?qū)g裝する任意のタイプは、インターフェイスを自動(dòng)的に満たします。たとえば、speak()メソッドを含むスピーカーインターフェイスを定義する場(chǎng)合、メソッドを?qū)g裝するすべてのタイプをスピーカーと見(jiàn)なすことができます。インターフェイスは、一般的な関數(shù)、抽象的な実裝の詳細(xì)、およびテストで模擬オブジェクトの使用に適しています。インターフェイスの定義は、インターフェイスキーワードを使用し、メソッドシグネチャをリストし、インターフェイスを?qū)g裝するためにタイプを明示的に宣言することはありません。一般的なユースケースには、ログ、フォーマット、さまざまなデータベースまたはサービスの抽象化、および通知システムが含まれます。たとえば、犬とロボットの両方のタイプは、話す方法を?qū)g裝し、それらを同じannoに渡すことができます

IOパッケージを使用して、GOの入力ストリームと出力ストリームを使用するにはどうすればよいですか? IOパッケージを使用して、GOの入力ストリームと出力ストリームを使用するにはどうすればよいですか? Jun 20, 2025 am 11:25 AM

thegoiopackageProvidesInterfacesLikerEaderAnderandRitoHandlei/ooperationsUniformlyAcrossources.1.io.Reader'SreadMethodenablessablesSreadingSuourCessuchasfilesorhtttttttttts

See all articles