【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_keyaws_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 存储桶,并将事件通知配置应用于该存储桶。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/88287.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stm32之DS18B20

DS18B20与stm32之间也是通过单总线进行数据的传输的。单总线协议在DHT11中已经介绍过。虽说这两者外设都是单总线,但时序电路却很不一样,DS18B20是更为麻烦一点的。 DS18B20 举例(原码补码反码转换_原码反码补码转换_王小小鸭的博客-CSDN博客…

【Cesium创造属于你的地球】实现地球展示、灵活进行坐标转换、视角切换

大家好,我是AIC山鱼!👉这是我的主页 🐋作为CSDN博主和前端优质创作者✍,我致力于为大家带来新颖、脱俗且有趣的内容。 🐱我还创建了山鱼社区,这是一个独特的社区🏠,&…

idea上利用JDBC连接MySQL数据库(8.1.0版)

1.了解jdbc概念 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种 关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建 更高级的工具和接口&#…

Gradle项目如何开启debug?

一、打开Idea的终端,输入命令gradle build --debug 开启构建DeBug模式 二、点击编辑配置,并填写自己debug的名称 三、编辑好debug配置后,点击以下debug按钮,就可以开始调试代码了。

Linux 查看当前文件夹下的文件大小

1.直接查看: ll 或者 ls -la #查看文件大小,以kb为单位 ll#查看文件大小,包含隐藏的文件,以kb为单位 ls -la2.以 M 或者 G 为单位查看,根据文件实际大小进行合适的单位展示 du -sh *

【前车之鉴】: 2023最新教程-将java程序打包到maven私服的正确打开方式,详细流程介绍不怕你掌握不了

文章目录 为什么看这篇整体流程1. 注册账号【首次需要】2. 工单申请【新项目必须】3. 项目配置【新项目必须】4. 授权认证【新项目必须】5. 一键发布 最后也很重要 为什么看这篇 一是当前网络上一些博客有遗漏部分,这里做补充,二是网上思路没错&#xff…

Android View动画之LayoutAnimation的使用

接前篇 Android View动画整理 ,本篇介绍 LayoutAnimation 的使用。 参考《安卓开发艺术探索》。 View 动画作用于 View 。 LayoutAnimation 则作用于 ViewGroup , 为 ViewGoup 指定一个动画,ViewGoup 的子 View 出场时就具体动画效果。 简言…

13.IIC驱动框架简介

目录 IIC物理总线 linux设备框架图 i2c_adapter结构体 i2c_algorithm结构体 i2c_client结构体 i2c_driver结构体 I2C总线驱动分析 i2c总线注册:i2c_init i2c总线定义:i2c_bus_type i2c设备和i2c驱动匹配规则:i2c_device_match i2…

UDP 多播(组播)

前言(了解分类的IP地址) 1.组播(多播) 单播地址标识单个IP接口,广播地址标识某个子网的所有IP接口,多播地址标识一组IP接口。单播和广播是寻址方案的两个极端(要么单个要么全部)&am…

StringBuilder类分享(1)

一、StringBuilder说明 StringBuilder是一个可变的字符序列。这个类提供了一个与StringBuffer兼容的API,但不保证同步,即StringBuilder不是线程安全的,而StringBuffer是线程安全的。显然,StringBuilder要运行的更快一点。 这个类…

服务器中了mkp勒索病毒该怎么办?勒索病毒解密,数据恢复

mkp勒索病毒算的上是一种比较常见的勒索病毒类型了。它的感染数量上也常年排在前几名的位置。所以接下来就由云天数据恢复中心的技术工程师来对mkp勒索病毒做一个分析,以及中招以后应该怎么办。 一,中了mkp勒索病毒的表现 桌面以及多个文件夹当中都有一封…

LeetCode(力扣)530. 二叉搜索树的最小绝对差Python

LeetCode530. 二叉搜索树的最小绝对差 题目链接代码 题目链接 https://leetcode.cn/problems/minimum-absolute-difference-in-bst/ 代码 递归 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # …