」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何將檔案上傳至 AWS Ssando Golang

如何將檔案上傳至 AWS Ssando Golang

發佈於2024-11-08
瀏覽:238

Como Realizar Upload de Arquivos no AWS Ssando Golang

透過 Golang 將文件上傳到 S3 是在 AWS 上管理文件時最常見的操作之一。此功能允許開發人員以安全且可擴展的方式將文件、圖像、影片和其他類型的文件上傳到雲端儲存。在本文中,我們將探討如何使用 Go 語言和 AWS S3 API 執行此整合。接下來,您將了解配置環境並成功上傳的主要步驟。

準備開發環境

在開始上傳檔案之前,您需要設定您的開發環境。確保您有:

  1. 有效的 AWS 帳戶。
  2. 您的 AWS 帳戶的存取憑證(存取金鑰和金鑰)。
  3. Go SDK 已安裝。
  4. 官方AWS SDK for Go套件

要安裝適用於 Go 的 AWS 開發工具包,只需執行以下命令:

go get -u github.com/aws/aws-sdk-go/aws

現在 SDK 已安裝,您可以開始編寫 AWS S3 整合程式碼了。

了解如何使用 Lambdas 生命週期 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中將具有的金鑰(名稱)。該函數開啟檔案並使用 AWS S3 SDK for Go PutObject 函數將其傳送到儲存桶。

處理權限

在上傳到 AWS S3 時,確保正確配置您的權限非常重要。 AWS 使用 IAM(身分和存取管理)策略系統來管理對其資源的存取權限。確保程式碼中使用的 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 的更多內容。


版本聲明 本文轉載於:https://dev.to/fernandomullerjr/como-realizar-upload-de-arquivos-no-aws-s3-usando-golang-1gec?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 整合與端到端(E 測試:了解它們的差異以及何時使用它們
    整合與端到端(E 測試:了解它們的差異以及何時使用它們
    在软件开发中,测试在确保应用程序到达最终用户之前的可靠性和性能方面发挥着至关重要的作用。由于可用的测试方法多种多样,因此了解哪种方法适合您的需求非常重要。两种广泛使用的测试方法是集成测试和端到端(E2E)测试。两者都旨在验证系统是否正常工作,但他们从不同的角度进行验证。在这篇文章中,我们将探讨集成...
    程式設計 發佈於2024-11-08
  • 初級後端開發人員尋求無償工作以獲得經驗
    初級後端開發人員尋求無償工作以獲得經驗
    大家好, 我叫 Harith,是初級後端開發人員。我對使用 Python 和 Django 框架進行 Web 開發非常感興趣。我希望透過為開源專案做出貢獻來獲得更多實務經驗。 我提供什麼: 願意在沒有任何報酬的情況下參與項目,因為我的主要目標是提高我的技能和拓寬我的知識。 了解 Django 和...
    程式設計 發佈於2024-11-08
  • 如何在 Python 中檢查清單是否共用任何項目?
    如何在 Python 中檢查清單是否共用任何項目?
    在Python 中測試清單是否共用任何項目簡介在Python 中處理多個清單時,通常需要確定是否有元素重疊在這些列表之間。這是各種數據分析和操作任務的基本操作。 簡答在 Python 中測試列表重疊的建議方法是利用 not set(a).isdisjoint(b ) 表達。它為此任務提供了一種普遍有...
    程式設計 發佈於2024-11-08
  • Node.js 中與 WebSockets 和 Socket.IO 的即時通信
    Node.js 中與 WebSockets 和 Socket.IO 的即時通信
    现代 Web 应用程序通常需要实时通信,无论是聊天系统、实时更新、协作编辑还是通知。传统的 HTTP 通信不足以满足实时应用程序的需要,因为它依赖于请求-响应模式。这就是 WebSockets 发挥作用的地方,它允许服务器和客户端之间进行全双工通信。 在本文中,我们将探讨: WebSocket 是什...
    程式設計 發佈於2024-11-08
  • 如何解決使用 JavaScript 更改 iframe src 的問題
    如何解決使用 JavaScript 更改 iframe src 的問題
    使用 JavaScript 更改 iframe src:疑難排解點擊單選按鈕時更改 iframe 的 src 屬性時遇到問題。要糾正此問題,必須檢查代碼以確定確切的原因。一個可能的問題是括號的錯誤使用。 在您的程式碼中,該行:document.getElementById['calendar'].s...
    程式設計 發佈於2024-11-08
  • 為什麼 `window.onscroll` 在 iPhone/iPad 上不起作用?
    為什麼 `window.onscroll` 在 iPhone/iPad 上不起作用?
    在iPhone/iPad 上使用滾動事件捕獲事件嘗試在iPad 上捕獲滾動事件時,故障排除工作揭示了常見的方法例如window.onscroll 和document.onscroll 無法觸發所需的反應。 瞭解 iOS 上的事件處理裝置iPhoneOS 事件處理機制與傳統桌面瀏覽器不同。在連續的一指...
    程式設計 發佈於2024-11-08
  • 癮君子 # 何時使用效果、Angular DI 功能、請求快取等
    癮君子 # 何時使用效果、Angular DI 功能、請求快取等
    ?嘿,Angular Addict 夥伴 這是 Angular Addicts Newsletter 的第 30 期,這是一本每月精選的引起我注意的 Angular 資源合集。 (這裡是第29期、28期、27期) ?發佈公告 ?Nx 19.8 更新 ...
    程式設計 發佈於2024-11-08
  • 從開發人員到審閱者:初級開發人員審閱資料庫查詢的清單
    從開發人員到審閱者:初級開發人員審閱資料庫查詢的清單
    作為開發人員,提供高品質的程式碼至關重要,這些程式碼不僅具有功能性,而且還針對效能進行了最佳化。在開發人員領域的三年裡,我從實務開發人員轉變為審閱者角色。我在審核過程中關注的關鍵領域之一是資料庫查詢優化。 為什麼關注資料庫查詢? 資料庫查詢可以顯著影響應用程式的效能。編寫得好的查詢可以有效地獲取...
    程式設計 發佈於2024-11-08
  • Mockito 是最好的 Java 模擬框架嗎?  對其優缺點的綜合評估。
    Mockito 是最好的 Java 模擬框架嗎? 對其優缺點的綜合評估。
    最佳 Java 模擬框架:Mockito在 Java 中,製作模擬物件對於有效的單元測試至關重要。鑑於選擇過多,為此目的確定最佳框架可能會令人畏懼。本文評估了最突出的選擇之一 Mockito,重點介紹了它的優點和缺點。 Mockito 因其用戶友好的語法而脫穎而出,使其易於開發人員使用。其簡化方法針...
    程式設計 發佈於2024-11-08
  • 如何可靠地取得目前運行的Python檔案的路徑?
    如何可靠地取得目前運行的Python檔案的路徑?
    如何取得目前執行的Python檔案的路徑問題:確定目前運行的Python檔案的路徑可能很麻煩,特別是當遇到在特定場景下證明不可靠的方法時​​。其中包括從另一個腳本或在 IDLE 或 Mac OS X v10.6 等特定環境中啟動執行的實例。 解決方案:通用取得目前執行的Python 的文件路徑文件,...
    程式設計 發佈於2024-11-08
  • Stack Overflow 如何建立這些豐富的彈出訊息?
    Stack Overflow 如何建立這些豐富的彈出訊息?
    複製 Stack Overflow 的彈出訊息功能您可能已經注意到 Stack Overflow 上出現的時尚且內容豐富的彈出訊息。這些訊息為用戶提供了有價值的通知和指導,您可能想知道如何在自己的網站上實現類似的功能。 Stack Overflow 利用 HTML、CSS 和 JavaScript ...
    程式設計 發佈於2024-11-08
  • 為什麼 Python 中沒有元組理解?
    為什麼 Python 中沒有元組理解?
    理解 Python 中元組推導式的缺失在 Python 程式語言中,列表推導式和字典推導式提供了產生結構化資料的有效方法。然而,缺乏元組理解是一個異常現象。本文深入探討了這項遺漏背後的原因。 元組不變性是原因的假設並不成立。元組確實是不可變的,但這個屬性並不妨礙它們在推導式中建構。 問題的關鍵在於 ...
    程式設計 發佈於2024-11-08
  • 如何使用 VLC 模組在 Python 中播放 MP3 歌曲?
    如何使用 VLC 模組在 Python 中播放 MP3 歌曲?
    使用 Python 播放 MP3 歌曲使用正確的工具,在 Python 中播放 MP3 歌曲可以非常簡單。 錯誤的做法:嘗試使用wave模組開啟MP3文件,如下圖所示不建議:import wave w = wave.open("e:/LOCAL/Betrayer/Metalik Klini...
    程式設計 發佈於2024-11-08
  • 如何為Apache PHP應用程式配置環境變數?
    如何為Apache PHP應用程式配置環境變數?
    Apache PHP 應用程式的環境變數配置開發依賴環境變數的PHP 應用程式時,必須清楚了解如何配置環境變數使用Apache 時設定這些變數。本文旨在提供有關配置可在 PHP 中存取的環境變數的指導,確保 Web 應用程式的正確運作。 具體來說,為同一伺服器中的各個網域配置單獨的環境變數是常見的要...
    程式設計 發佈於2024-11-08
  • 如何從 Activity 存取 ViewPager 片段方法?
    如何從 Activity 存取 ViewPager 片段方法?
    從 Activity 存取 ViewPager Fragment 方法從 Activity 存取 ViewPager Fragment 方法許多行動應用程式使用片段,即代表模組化螢幕部分的獨立元件。使用視圖分頁器管理多個片段可實現流暢的導覽和頁面動畫。有時,開發人員需要在片段中執行特定操作以回應外部...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3