广州网站设计公司,从事网站开发需要的证书,国家企信网官网登录入口,甘肃建设厅网站首页本站以分享各种运维经验和运维所需要的技能为主 《python》#xff1a;python零基础入门学习 《shell》#xff1a;shell学习 《terraform》持续更新中#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解… 本站以分享各种运维经验和运维所需要的技能为主 《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-bucketacl 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 存储桶并将事件通知配置应用于该存储桶。