Golang 経由で S3 にファイルをアップロードは、AWS でファイルを管理する場合に最も一般的な操作の 1 つです。この機能により、開発者はドキュメント、画像、ビデオ、その他の種類のファイルを安全かつスケーラブルな方法でクラウド ストレージにアップロードできます。この記事では、Go 言語と AWS S3 API を使用してこの統合を実行する方法を検討します。次に、環境を構成して正常にアップロードするための主な手順を理解します。
ファイルのアップロードを開始する前に、開発環境を構成する必要があります。以下のものがあることを確認してください:
AWS SDK for Go をインストールするには、次のコマンドを実行するだけです:
go get -u github.com/aws/aws-sdk-go/aws
SDK がインストールされたので、AWS S3 統合コードの作成を開始する準備が整いました。
この作業を自動化するために Lambda を使用して s3 をライフサイクルする方法を参照してください: https://devopsmind.com.br/aws-pt-br/automacao-aws-s3-lifecycle-lambda/
S3 にアップロード中
AWS S3 クライアントの構成
アップロードの最初のステップは、AWS S3 クライアントを構成することです。このクライアントを使用すると、AWS サービスと対話し、バケットとオブジェクトを管理できます。次のコードは、資格情報を使用してクライアントを構成する方法を示しています:
import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3" ) func createS3Client() *s3.S3 { sess := session.Must(session.NewSession(&aws.Config{ Region: aws.String("us-west-2"), })) return s3.New(sess) }
このコードでは、AWS セッションを作成し、S3 クライアントを構成します。リージョンを S3 バケットが構成されている場所に置き換えることを忘れないでください。
アップロード機能の作成
AWS S3 クライアントを構成した後、ファイルのアップロードを担当する関数を作成します。この関数は、ローカル システムからファイルを読み取り、特定のバケット内の S3 に送信します:
import ( "fmt" "os" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3" ) func uploadFileToS3(bucketName, filePath, key string) error { file, err := os.Open(filePath) if err != nil { return err } defer file.Close() sess := session.Must(session.NewSession(&aws.Config{ Region: aws.String("us-west-2"), })) uploader := s3.New(sess) _, err = uploader.PutObject(&s3.PutObjectInput{ Bucket: aws.String(bucketName), Key: aws.String(key), Body: file, }) if err != nil { return fmt.Errorf("falha no upload para o S3: %v", err) } fmt.Println("Upload realizado com sucesso!") return nil }
ここで、uploadFileToS3 関数は、バケット名、ローカル ファイル パス、ファイルが S3 に持つキー (名前) の 3 つのパラメータを受け取ります。この関数はファイルを開き、AWS S3 SDK for Go PutObject 関数を使用してバケットに送信します。
権限の処理
AWS S3 へのアップロードを操作する場合は、アクセス許可が正しく構成されていることを確認することが重要です。 AWS は、IAM (Identity and Access Management) ポリシー システムを使用して、リソースへのアクセス許可を管理します。コードで使用されている IAM ユーザーまたはロールに、S3 へのアップロード操作を実行するための十分な権限があることを確認してください。 IAM 権限の詳細については、AWS の公式ドキュメントを参照してください。
実際の使用例
S3 バケットへの画像の送信
ユーザーが画像をアップロードして S3 バケットに保存できるサービスを作成するとします。コードは次のようになります:
func main() { err := uploadFileToS3("meu-bucket", "caminho/para/imagem.png", "imagem.png") if err != nil { fmt.Println("Erro ao fazer upload:", err) return } fmt.Println("Upload concluído com sucesso!") }
この例では、イメージ imagem.png が my-bucket バケットにアップロードされます。 S3 上のファイルへのパスとその名前は、uploadFileToS3.
関数のパラメータによって定義されます。結論
Golang を使用して AWS S3 にファイルをアップロードするのは、適切なツールを使用すれば簡単な作業です。 AWS SDK for Go を使用すると、アプリケーションを S3 サービスと簡単に統合でき、堅牢でスケーラブルなファイル ストレージ ソリューションを提供できます。基本を学習したので、ファイルのダウンロード、バケット内のオブジェクトの一覧表示など、他の機能を含めるように実装を拡張できます。 Golang を使用して AWS との統合の可能性をさらに探求し続け、Golang と AWS S3 に関するコンテンツをさらにチェックしてください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3