Amazon Simple Storage Service (S3) は、ウェブベースのファイルストレージの業界標準になっています。最大 99.999999999% の耐久性とセキュリティを実現するように設計されています。また、柔軟なストレージ クラス、データ管理、分析機能も備えています。
Go でプロジェクトのサーバー側アプリを構築していて、ストレージ オプションが必要ですか?この記事では、あなたが AWS の初心者であることを前提として、Go アプリのストレージとして S3 を使用するプロセスについて説明します。
AWS と Go の入門
適切な権限とパラメータを使用して AWS S3 バケットを設定するのは、困難な場合があります。バケットを作成し、IAM ユーザーを作成し、バケット上で操作を実行する権限を IAM ユーザーに発行し、環境内にアクセス キーを設定する必要があります。
まず、Amazon AWS アカウントを作成し、まだお持ちでない場合はサインインします。次に、このように S3 を検索します。
次に、「バケットの作成」をクリックします。プロジェクトの仕様に従ってバケットを構成するように求められます。
バケットを作成したので、次のステップは、S3 バケットへのアクセス許可を発行する IAM ユーザーを設定することです。
プロファイルのセキュリティ認証情報セクションに移動し、ユーザーを作成します。
次に、ユーザーのアクセス キーを作成し、アクセス キーと秘密キーを取得します。
コンピューターのルート ディレクトリに、.aws フォルダーと、拡張子のない credentials という名前のファイルを作成します。次に、次のようにキーを追加します:
[default] aws_access_key_id = <aws_access_key_id here> aws_secret_access_key = <aws_secret_access_key here> </aws_secret_access_key></aws_access_key_id>
次に、これらの権限をユーザーに発行して、S3 アップロードを許可します。
最後に、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> </aws_secret_access_key></aws_access_key_id>
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 バケットにアップロードされたことがわかります。
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 関数を使用してプログラムを実行すると、ファイルは指定した宛先パスにダウンロードされる必要があります。
宛先パスのキーにもキーを指定する必要があります。
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 バケットに存在しないことがわかります。
結論
IAM ユーザー用に S3 バケットを設定し (root でも機能します)、S3 バケットからファイルをアップロード、ダウンロード、削除する方法を学習しました。
AWS S3 バケットを使用して実行できる機能は他にもたくさんあります。この記事が、プロジェクトのユースケースに応じてさらに先に進むための基礎となれば幸いです。
以上がAmazon Sith Go でのファイル管理の初心者ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

goooffersbustfeaturesforsecurecoding、butdevelopersmustimplementsecuritybestpracticive.1)usego'scryptageforsecuredathing.2)surncurrencywithranciationwithranizationprimitivestopreventraceconditions.3)sanitexe zeexerinputeterinpuptoravoidsqlinj

Goのエラーインターフェイスは、TypeErrorInterface {error()String}として定義され、エラー()メソッドを実装する任意のタイプをエラーと見なすことができます。使用の手順は次のとおりです。1。iferr!= nil {log.printf( "anerroroccurred:%v"、err)return}などのエラーを基本的にチェックおよびログエラー。 2。TypeMyErrorStruct {MSGSTRINGDETAILSTRING}などのより多くの情報を提供するカスタムエラータイプを作成します。 3.エラーラッパー(GO1.13以降)を使用して、元のエラーメッセージを失うことなくコンテキストを追加する、

Effectivitive Handleerrorsinconconconcurentgoprograms、usechannelstocommunicateerrors、Implienterrorwatchers、Sunidertimeouts、usebufferedchannels、およびprovideclearerrormess.1)usechannelstopasserrors fromgoroutineStothemainctunction.2)Anerrorwatcherを実装します

GO言語では、インターフェイスの実装が暗黙的に実行されます。 1)暗黙的な実装:タイプにインターフェイスによって定義されたすべてのメソッドが含まれている限り、インターフェイスは自動的に満たされます。 2)空のインターフェイス:すべてのタイプのインターフェイス{}タイプが実装されており、中程度の使用はタイプの安全性の問題を回避できます。 3)インターフェイス分離:コードの保守性と再利用性を向上させるために、小型ではあるが焦点を絞ったインターフェイスを設計します。 4)テスト:インターフェイスは、依存関係をあざけることでユニットテストに役立ちます。 5)エラー処理:エラーは、インターフェイスを介して均一に処理できます。

go'sinterfacesAriemplictlictlictlymentedは、Javaandc#とは異なり、whorequireexplicitimplementation.1)ingo、anytypewithedsodsodsautodsodsodsodsodsodsodsodsodsodsodsodsodsimplication antersface、促進性と柔軟性

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

開発者は、次のベストプラクティスに従う必要があります。1。ゴルチンを慎重に管理して、リソースの漏れを防ぎます。 2。同期にチャネルを使用しますが、過剰使用を避けます。 3。同時プログラムのエラーを明示的に処理します。 4. GomaxProcsを理解して、パフォーマンスを最適化します。これらのプラクティスは、リソースの効果的な管理、適切な同期の実装、適切なエラー処理、パフォーマンスの最適化を確保し、それによりソフトウェアの効率と保守性を向上させるため、効率的で堅牢なソフトウェア開発には重要です。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

ホットトピック









