【Terraform学习】使用 Terraform创建 S3 存储桶事件(Terraform-AWS最佳实战学习)
本站以分享各种运维经验和运维所需要的技能为主
《python》:python零基础入门学习
《shell》:shell学习
《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战
《k8》暂未更新
《docker学习》暂未更新
《ceph学习》ceph日常问题解决分享
《日志收集》ELK+各种中间件
《运维日常》持续更新中
下面继续开始我们的terraform的学习,这次是学习创建s3.
使用 Terraform创建 S3 存储桶事件
实验步骤
前提条件
安装 Terraform: 地址
下载仓库代码模版
本实验代码位于
task_sns_s3文件夹中。变量文件
variables.tf

在上面的代码中,您将声明,
aws_access_key,aws_secret_key和区域变量。还声明了电子邮件地址变量。
terraform.tfvars
在上面的代码中,您将定义变量的值。
main.tf


在上面的代码中,您将执行以下任务:
创建 Amazon S3 存储桶
由于存储桶名称为全局唯一,因此还创建了一个随机字符串,该字符串将生成并添加到存储桶名称的末尾。
创建一个 SNS 主题并添加 SNS 主题的访问策略。让您的 SNS 主题有权根据 S3 存储桶事件发送通知。
创建 SNS 主题后,让我们创建对该主题的订阅。
我们将以电子邮件作为协议创建订阅。
电子邮件终端节点,即电子邮件地址将由您在变量中定义。
最后,创建 S3 存储桶事件通知并添加 SNS 主题。
这样,每当有对象上传到 S3 存储桶时,它都会向订阅 SNS 主题的电子邮件发送事件通知。
outputs.tf,将输出S3 存储桶名称和 SNS 主题 ARN

使用 Terraform 部署
确保您这些文件在同一位置。
通过运行以下命令初始化 Terraform:
terraform init注意:
terraform init将检查所有插件依赖项并下载它们。查看生成计划,请运行以下命令:
terraform plan创建在
main.tf配置文件中声明的所有资源 ,请运行以下命令:
terraform apply您将能够看到将要创建的资源,通过输入
yes批准所有资源的创建。
terraform apply命令最多可能需要 2 分钟才能创建资源。
检查 AWS 控制台中的资源
确保您位于美国东部(弗吉尼亚北部)us-east-1 区域。
通过单击 AWS 控制台顶部导航到 S3。
单击您创建的存储桶。
切换到属性选项卡并向下滚动查找事件通知选项。
导航到 SNS。
您将能够看到我们使用Terraform创建的SNS主题。
单击该主题,在“订阅”选项卡中,您将看到已创建的订阅以及您的电子邮件地址。
订阅的状态为“等待确认”。
您将收到一封电子邮件,以确认您的 SNS 订阅。如果您在收件箱中没有看到该电子邮件,请检查您的垃圾邮件。
单击“确认订阅”。
您的电子邮件地址现已订阅 SNS 主题
my-s3-event-notification。您可以导航到 SNS 主题的订阅选项卡进行确认。刷新页面,订阅状态将显示为“已确认”。
将对象上传到 S3 存储桶并测试 SNS 通知
菜单导航到 S3。
单击您创建的存储桶。
在存储桶中的“对象”下,单击“上传”
现在,单击“添加文件”并从本地系统上传任何文件。
文件成功上传到 S3 存储桶后,单击关闭。现在,您可以在“对象”下看到上传的对象文件。
导航到您的电子邮箱并检查 SNS 通知。请保持刷新,因为接收通知可能需要一些时间。
您已成功收到基于 S3 存储桶中的 PUT 对象事件的 SNS 通知。

补充: 简易理解-常用的创建s3过程
要使用 Terraform 创建 S3 存储桶事件,您需要使用 Terraform 的 S3 存储桶资源模块和事件通知模块。
以下是一个示例 Terraform 配置文件,用于创建一个名为 "my-bucket" 的 S3 存储桶,并设置其事件通知:
# 定义 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:*"]}
}
在上面的配置中,我们首先定义了一个名为 "my-bucket" 的 S3 存储桶,并将其 ACL(访问控制列表)设置为 "private"。然后,我们创建了一个名为 "my-topic" 的 SNS 主题。最后,我们使用 aws_s3_bucket_notification 资源模块创建了一个 S3 存储桶事件通知。该通知将 S3 存储桶的 "s3:ObjectCreated:*" 事件路由到两个地方:一个 Lambda 函数和一个 SNS 主题。您可以将这些值替换为您自己的 Lambda 函数和 SNS 主题的 ARN。
要应用此配置并创建 S3 存储桶事件,请在终端中运行以下命令:
terraform apply
这将创建一个名为 "my-bucket" 的 S3 存储桶,并将事件通知配置应用于该存储桶。
相关文章:
【Terraform学习】使用 Terraform创建 S3 存储桶事件(Terraform-AWS最佳实战学习)
本站以分享各种运维经验和运维所需要的技能为主 《python》:python零基础入门学习 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解…...
自定义String字符串工具类 StringUtils.java
自定义String字符串工具类 StringUtils.java 简介 自定义String字符串工具类 api 是否为空 checkEmpty(String str);目标字符串是目标数组中的一个 checkContains(String str, String[] target);限制最大长度 checkMaxLength(String str, Long l);是否纯数字的字符串 check…...
mongTemplate实现group分组查询aggregation
MongoService封装 <T> List<T> group(Class<T> clazz, Aggregation aggregation,String documentName); MongoServiceImpl实现类 Overridepublic <T> List<T> group(Class<T> clazz, Aggregation aggregation,String documentName) {//…...
防御网络攻击风险的4个步骤
如今,人们正在做大量工作来保护 IT 系统免受网络犯罪的侵害。令人担忧的是,对于运营技术系统来说,情况却并非如此,运营技术系统用于运行从工厂到石油管道再到发电厂的所有业务。 组织应该强化其网络安全策略,因为针对…...
相机SD卡数据丢失如何恢复?
出门在外,相机是人们记录生活点滴的重要工具,是旅游的最佳玩伴。人们每到一个地方,都喜欢用相机来见证自己来过的痕迹,拍好的照片都会被放到相机卡里,但在使用相机时,有时我们会意外删除了重要的照片或视频…...
Java小记-矩阵转置
对于给定的一个二维矩阵,请转置后进行输出。 输入描述 对于一个n*m的矩阵,输入有n行,每行是m个以空格分隔的数字。 输出描述 n*m矩阵的转置矩阵。输出m行,每行是n个空格分隔的数据。 import java.io.*; import java.util.*;pub…...
计网-控制平面
下个月前最后一篇计网笔记,再坚挺一下,网络如同海洋,任我穿梭遨游~~ ——题记 大多数的算法更新,就是枚举 路由器与交换机的区别 文章目录 概述小白Dilistra:w的邻域按权值排序,v[w,i]min(c[w,i],v[w,i-1]c[i-1,i],...…...
Markdown 扩展语法练习
风无痕 August 26, 2023 Markdown 指南中文版 Markdown 入门指南Markdown 基本语法Markdown 扩展语法Markdown 基本语法练习Markdown 扩展语法练习 代码 <h3 id"table">表格</h3>| Syntax | Description | | --- | --- | | Header | Title | | Paragrap…...
ubuntu上安装boost库为SOMEIP的X86和ARM下编译做准备(编译两种版本)
1 X86架构Linux(ubuntu)操作系统上Boost库的编译安装1.1 Boost源码下载1.2 编译选项配置1.3 编译 Boost 库1.4安装 Boost 库2 Boost库的ARM架构编译1 X86架构Linux(ubuntu)操作系统上Boost库的编译安装 Boost库是C++拓展库,是SOMEIP源码编译所必需的库。编译 Boost 库时,…...
[NSSCTF 2nd] NSS两周年纪念赛。
都说开卷有益,其实作题也有益,每打一次总能学到点东西。 PWN NewBottleOldWine 这个没作出来,一时还不明白RISC-V64怎么弄本地环境,不过看了WP感觉很简单,取flag用不着环境。 IDA不给翻译了,一点点看汇…...
【星戈瑞】FITC-PEG-N3在细胞示踪中的应用
欢迎来到星戈瑞荧光stargraydye!小编带您盘点: FITC-PEG-N3在细胞示踪中具有多样性应用。细胞示踪是指使用荧光标记物追踪和观察细胞在体内或体外的位置、迁移、增殖等行为。以下是FITC-PEG-N3在细胞示踪中的主要应用方面: 1. 细胞迁移研究…...
【Linux】【驱动】自动创建设备节点
【Linux】【驱动】自动创建设备节点 续驱动代码操作指令linux端从机端 续 这里展示了如何自动的方式去创建一个字符类的节点 下面就是需要调用到的程序 函数 void cdev_init(struct cdev *, const struct file_operations *);第一个参数 要初始化的 cdev 第二个参数 文件操作…...
自实现getprocaddress(名称查找或者序号查找)
通过名称去找 // MyGETPRCOADDRESS.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //#include <iostream> #include<Windows.h>/*WINBASEAPI //导出不需要使用,那么我们注释掉*/ FARPROC WINAPI MyGetProcAddress(_In_ HMO…...
如何DIY制作干洗店洗护小程序
洗护行业正逐渐迎来线上化的浪潮,传统的干洗店也开始尝试将业务线上化,以提供更便捷的服务给消费者。而制作一款洗护小程序,成为了干洗店实现线上化的重要一环。今天,我们就来分享一下如何使用第三方制作平台制作洗护小程序的教程…...
微前沿 | 第1期:强可控视频生成;定制化样本检索器;用脑电重建视觉感知;大模型鲁棒性评测
欢迎阅读我们的新栏目——“微前沿”! “微前沿”汇聚了微软亚洲研究院最新的创新成果与科研动态。在这里,你可以快速浏览研究院的亮点资讯,保持对前沿领域的敏锐嗅觉,同时也能找到先进实用的开源工具。 本期内容速览 01. 强可…...
SQLite数据库C_C++接口(保姆级API应用 1.4W字)(全网最详细介绍,学完必掌握)
目录 sqlite3的C/C API应用 前言 SQLite3库安装 API函数 打开、关闭、错误处理 打开 返回值 关闭 错误调试 实际应用 执行SQL(DDL、DML) API介绍 实际应用 回调函数查询 API介绍 实际应用 全缓冲查询 API介绍 实际应用 字节缓冲查询…...
倒计时:心理的镇静剂还是焦虑的火种?
倒计时:心理的镇静剂还是焦虑的火种? 目录 引言倒计时的作用与原理倒计时的双面性:缓解焦虑还是引发焦虑?如何正确使用倒计时结论 引言 在我们的日常生活和工作中,倒计时被广泛的应用。无论是在网购的抢购活动中&a…...
迅睿系统二开自定义函数和插件的自定义函数
全局的自定义函数: 全局的自定义函数文件:dayrui/My/Helper.php 此文件用于放网站自定义函数,程序会自动加载 当前站点的自定义函数文件:网站主目录/config/custom.php 插件的自定义函数: 基于App目录下的插件或模块…...
传统品牌如何通过3D虚拟数字人定制和动捕设备加速年轻化发展?
步入Z时代,年轻一代消费者的生活方式深受互联网技术和媒介环境影响,对新潮事物感兴趣,消费思维也相对前卫,品牌需要探索契合Z世代的消费观念,寻找新的链接拉近品牌与消费者的距离,而3D虚拟数字人定制可以帮…...
sql:SQL优化知识点记录(五)
(1)explain之例子 (2)索引单表优化案例 上面的功能已经实现,但是分析功能, 使用explain分析这条sql: 发现type为All Extra:有Using filesort (文件内排序) 这…...
5步掌握Loop:让Mac窗口管理效率提升10倍的免费开源方案
5步掌握Loop:让Mac窗口管理效率提升10倍的免费开源方案 【免费下载链接】Loop MacOS窗口管理 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 在数字工作环境中,窗口管理已成为影响效率的隐形瓶颈。Mac用户每天平均需要执行200次窗口操作…...
51单片机之按键控制RGB灯
51单片机之按键控制RGB灯描述:利用KEIL5编程,使AT89C52通过按键输入控制RGB灯显示不同颜色。硬件:电路仿真图(未运行)电路仿真图(运行)程序:主要是按键消抖,机械按键按下…...
自编码器在异常检测中的实战应用:以金融交易数据为例
自编码器在金融异常检测中的实战指南:从数据清洗到模型部署 金融交易数据中的异常行为检测一直是风险控制的核心环节。传统基于规则的系统难以应对日益复杂的欺诈模式,而自编码器这类无监督学习模型正在改变游戏规则。本文将带您从零构建一个完整的异常检…...
Python与Matlab双剑合璧:高效解析XJTU-SY轴承数据集实战指南
1. 为什么选择Python和Matlab处理XJTU-SY轴承数据 轴承故障诊断是工业设备健康管理的重要环节,而XJTU-SY轴承数据集作为国内知名的公开数据集,包含了多种工况下的全寿命周期振动数据。面对这样的工程数据集,Python和Matlab各有优势。我在实际…...
别再让WIFI信号‘水土不服’!Android 13高通平台国家码配置保姆级教程
Android 13高通平台WIFI国家码配置实战指南 当你的设备跨越国界,WIFI信号却开始"水土不服"——连接不稳定、速度骤降甚至完全无法使用。这背后往往不是硬件问题,而是国家码配置这个隐形门槛在作祟。作为深耕Android系统开发多年的技术专家&am…...
告别彻夜等待:SteamShutdown让游戏下载完成后自动关机的智能解决方案
告别彻夜等待:SteamShutdown让游戏下载完成后自动关机的智能解决方案 【免费下载链接】SteamShutdown Automatic shutdown after Steam download(s) has finished. 项目地址: https://gitcode.com/gh_mirrors/st/SteamShutdown 你是否也曾经历过这样的困扰&a…...
Onnxruntime模型量化实战:从PTQ到精度调优
1. Onnxruntime模型量化入门指南 第一次接触模型量化时,我也被各种术语搞得晕头转向。简单来说,量化就是把模型参数从32位浮点数转换为8位整数,就像把高清图片压缩成更小的文件。Onnxruntime作为业界领先的推理引擎,提供了完整的量…...
OpenClaw+GLM-4.7-Flash开发提效:日志分析+异常告警自动化
OpenClawGLM-4.7-Flash开发提效:日志分析异常告警自动化 1. 为什么需要自动化日志监控 作为开发者,我每天要面对服务器、应用和中间件产生的海量日志。曾经为了排查一个线上问题,我需要手动grep几十MB的日志文件,眼睛盯着屏幕找异…...
XCOM 2模组管理终极解决方案:AML启动器效率革命指南
XCOM 2模组管理终极解决方案:AML启动器效率革命指南 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/…...
LiuJuan20260223Zimage在CSDN技术博客创作中的全流程辅助
LiuJuan20260223Zimage:技术博主的高效创作伙伴 写技术博客,最头疼的是什么? 是选题枯竭,对着空白文档发呆半天?是写到一半,发现某个技术点解释不清,需要到处查资料?还是好不容易写…...
