??本站以分享各種運(yùn)維經(jīng)驗(yàn)和運(yùn)維所需要的技能為主
《python》:python零基礎(chǔ)入門學(xué)習(xí)
《shell》:shell學(xué)習(xí)
《terraform》持續(xù)更新中:terraform_Aws學(xué)習(xí)零基礎(chǔ)入門到最佳實(shí)戰(zhàn)
《k8》暫未更新
《docker學(xué)習(xí)》暫未更新
《ceph學(xué)習(xí)》ceph日常問題解決分享
《日志收集》ELK+各種中間件
《運(yùn)維日?!烦掷m(xù)更新中
下面繼續(xù)開始我們的terraform的學(xué)習(xí),這次是學(xué)習(xí)創(chuàng)建s3.
使用 Terraform創(chuàng)建 S3 存儲桶事件
實(shí)驗(yàn)步驟
前提條件
安裝 Terraform:?地址
下載倉庫代碼模版
本實(shí)驗(yàn)代碼位于?
task_sns_s3
?文件夾中。變量文件?
variables.tf
在上面的代碼中,您將聲明,
aws_access_key
,aws_secret_key
和?區(qū)域變量
。還聲明了電子郵件地址變量。
terraform.tfvars
??
在上面的代碼中,您將定義變量的值。
main.tf
?
在上面的代碼中,您將執(zhí)行以下任務(wù):
創(chuàng)建 Amazon S3 存儲桶
由于存儲桶名稱為全局唯一,因此還創(chuàng)建了一個(gè)隨機(jī)字符串,該字符串將生成并添加到存儲桶名稱的末尾。
創(chuàng)建一個(gè) SNS 主題并添加 SNS 主題的訪問策略。讓您的 SNS 主題有權(quán)根據(jù) S3 存儲桶事件發(fā)送通知。
創(chuàng)建 SNS 主題后,讓我們創(chuàng)建對該主題的訂閱。
我們將以電子郵件作為協(xié)議創(chuàng)建訂閱。
電子郵件終端節(jié)點(diǎn),即電子郵件地址將由您在變量中定義。
最后,創(chuàng)建 S3 存儲桶事件通知并添加 SNS 主題。
這樣,每當(dāng)有對象上傳到 S3 存儲桶時(shí),它都會向訂閱 SNS 主題的電子郵件發(fā)送事件通知。
outputs.tf
,將輸出S3 存儲桶名稱和 SNS 主題 ARN?
使用 Terraform 部署
確保您這些文件在同一位置。
通過運(yùn)行以下命令初始化 Terraform:
terraform init
注意:
terraform init
將檢查所有插件依賴項(xiàng)并下載它們。查看生成計(jì)劃,請運(yùn)行以下命令:
terraform plan
創(chuàng)建在?
main.tf
?配置文件中聲明的所有資源?,請運(yùn)行以下命令:
terraform apply
您將能夠看到將要?jiǎng)?chuàng)建的資源,通過輸入?
yes
?批準(zhǔn)所有資源的創(chuàng)建。
terraform apply
?命令最多可能需要 2 分鐘才能創(chuàng)建資源。
檢查 AWS 控制臺中的資源
確保您位于美國東部(弗吉尼亞北部)us-east-1 區(qū)域。
通過單擊 AWS 控制臺頂部導(dǎo)航到 S3。
單擊您創(chuàng)建的存儲桶。
切換到屬性選項(xiàng)卡并向下滾動(dòng)查找事件通知選項(xiàng)。?
??
導(dǎo)航到 SNS。
您將能夠看到我們使用Terraform創(chuàng)建的SNS主題。?
??
單擊該主題,在“訂閱”選項(xiàng)卡中,您將看到已創(chuàng)建的訂閱以及您的電子郵件地址。
訂閱的狀態(tài)為“等待確認(rèn)”。
您將收到一封電子郵件,以確認(rèn)您的 SNS 訂閱。如果您在收件箱中沒有看到該電子郵件,請檢查您的垃圾郵件。
?
單擊“確認(rèn)訂閱”。
?
您的電子郵件地址現(xiàn)已訂閱 SNS 主題?
my-s3-event-notification
。您可以導(dǎo)航到 SNS 主題的訂閱選項(xiàng)卡進(jìn)行確認(rèn)。刷新頁面,訂閱狀態(tài)將顯示為“已確認(rèn)”。
將對象上傳到 S3 存儲桶并測試 SNS 通知
菜單導(dǎo)航到 S3。
單擊您創(chuàng)建的存儲桶。
在存儲桶中的“對象”下,單擊“上傳”
現(xiàn)在,單擊“添加文件”并從本地系統(tǒng)上傳任何文件。
文件成功上傳到 S3 存儲桶后,單擊關(guān)閉?,F(xiàn)在,您可以在“對象”下看到上傳的對象文件。
導(dǎo)航到您的電子郵箱并檢查 SNS 通知。請保持刷新,因?yàn)榻邮胀ㄖ?strong>可能需要一些時(shí)間。
您已成功收到基于 S3 存儲桶中的?PUT 對象事件的 SNS 通知。
?
補(bǔ)充: 簡易理解-常用的創(chuàng)建s3過程
要使用 Terraform 創(chuàng)建 S3 存儲桶事件,您需要使用 Terraform 的 S3 存儲桶資源模塊和事件通知模塊。
以下是一個(gè)示例 Terraform 配置文件,用于創(chuàng)建一個(gè)名為 "my-bucket" 的 S3 存儲桶,并設(shè)置其事件通知:
# 定義 AWS provider
provider "aws" {
region = "us-east-1"
}
# 定義 S3 存儲桶
resource "aws_s3_bucket" "my_bucket" {
bucket = "my-bucket"
acl = "private"
}
# 定義 SNS 主題
resource "aws_sns_topic" "my_topic" {
name = "my-topic"
}
# 定義 S3 存儲桶事件通知
resource "aws_s3_bucket_notification" "bucket_notification" {
bucket = "${aws_s3_bucket.my_bucket.id}"
lambda_function {
lambda_function_arn = "${aws_lambda_function.my_lambda.arn}"
events = ["s3:ObjectCreated:*"]
}
sns_topic {
topic_arn = "${aws_sns_topic.my_topic.arn}"
events = ["s3:ObjectCreated:*"]
}
}
在上面的配置中,我們首先定義了一個(gè)名為 "my-bucket" 的 S3 存儲桶,并將其 ACL(訪問控制列表)設(shè)置為 "private"。然后,我們創(chuàng)建了一個(gè)名為 "my-topic" 的 SNS 主題。最后,我們使用?aws_s3_bucket_notification
?資源模塊創(chuàng)建了一個(gè) S3 存儲桶事件通知。該通知將 S3 存儲桶的 "s3:ObjectCreated:*" 事件路由到兩個(gè)地方:一個(gè) Lambda 函數(shù)和一個(gè) SNS 主題。您可以將這些值替換為您自己的 Lambda 函數(shù)和 SNS 主題的 ARN。
要應(yīng)用此配置并創(chuàng)建 S3 存儲桶事件,請?jiān)诮K端中運(yùn)行以下命令:
文章來源:http://www.zghlxwxcb.cn/news/detail-685953.html
terraform apply
這將創(chuàng)建一個(gè)名為 "my-bucket" 的 S3 存儲桶,并將事件通知配置應(yīng)用于該存儲桶。文章來源地址http://www.zghlxwxcb.cn/news/detail-685953.html
到了這里,關(guān)于【Terraform學(xué)習(xí)】使用 Terraform創(chuàng)建 S3 存儲桶事件(Terraform-AWS最佳實(shí)戰(zhàn)學(xué)習(xí))的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!