如何使用 Terraform 將文件上傳到 S3

Terraform 是一個開源的基礎設施即代碼工具,由 HashiCorp 創建。 它是一種用於在雲中安全高效地構建、更改和版本控制基礎架構的工具。 基礎設施即代碼工具允許開發人員以一種使供應自動化、更快和可重複的方式對基礎設施進行編碼。

Amazon S3 是一種對象存儲,您可以使用它隨時隨地從 Web 上的任何位置存儲和檢索任意數量的數據。

在本教程中,我將向您展示如何使用 terraform 將文件從筆記本電腦/PC 上傳到 AWS S3 存儲桶。

要求

  1. AWS 賬戶和身份訪問管理 (IAM) 用戶具有一對訪問密鑰。
  2. Terraform 安裝在您的系統中。

第 1 步:提供訪問密鑰

創建文件名 provider.tf 並粘貼以下代碼行。 添加用戶時會生成訪問密鑰和秘密密鑰 我是. 確保用戶至少具有以下權限 AmazonS3FullAccess. 選擇您要工作的地區。

提供商“aws”{ access_key =“ACCESS_KEY_HERE”secret_key =“SECRET_KEY_HERE”區域=“us-east-1”}

第 2 步:創建存儲桶

在同一目錄中打開另一個文件“s3bucket.tf”並創建我們的第一個存儲桶“b1”,將其命名為“s3-terraform-b​​ucket”。 如果提供的名稱 bucket ‘s3-terraform-b​​ucket’ 在全球 AWS 區域中不是唯一的,您可能會收到錯誤消息。 另一個重要的事情是 訪問控制列表 它提供對您的存儲桶的精細訪問,使其成為私有或公共的。 您可以提供標籤作為您的選擇。

此外,上傳位於“myfiles”目錄中的文件。 定義 資源 作為 aws_s3_bucket_object。 要引用您剛剛在上面定義的存儲桶,請從存儲桶 id b1 中獲取它。 鑰匙 是您選擇的對象的名稱。 標籤 用於查找文件是否已使用 md5 sum 從上次上傳後更改。

# Create a bucket
resource "aws_s3_bucket" "b1" {

bucket = "s3-terraform-bucket-lab"

acl = "private" # or can be "public-read"

tags = {

Name = "My bucket"

Environment = "Dev"

}

}

# Upload an object
resource "aws_s3_bucket_object" "object" {

bucket = aws_s3_bucket.b1.id

key = "profile"

acl = "private" # or can be "public-read"

source = "myfiles/yourfile.txt"

etag = filemd5("myfiles/yourfile.txt")

}

步驟 2.1:上傳多個文件(可選)

如果你想上傳一個目錄的所有文件,那麼你需要使用’for_each’循環。

resource "aws_s3_bucket_object" "object1" {
for_each = fileset("myfiles/", "*")
bucket = aws_s3_bucket.b1.id
key = each.value
source = "myfiles/${each.value}"
etag = filemd5("myfiles/${each.value}")
}

第 3 步:執行

地形 計劃命令 用於創建執行計劃。 Terraform 執行刷新,除非明確禁用,然後確定需要哪些操作才能實現配置文件中指定的所需狀態。

最後執行 地形應用 並查看輸出。

terraform plan
terraform apply

登錄到您的 AWS 控制台並轉到 S3 服務。 您可以在那裡看到一個存儲桶 s3-terraform -bucket 以及您在其中上傳的文件。

AWS S3 存儲桶 – ‘s3-terraform-b​​ucket-lab’

結論

我們已經到了本文的結尾。 在本指南中,我們向您介紹了在 AWS s3 中創建存儲桶、使用 terraform 添加單個或多個文件所需的步驟。