[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

[Terraform] 如何使用 Terraform 代码启用 Amazon S3 ACL 访问

Terraform x AWS

你好。我是加拿大办事处的 TK。加拿大今年经历了一个温和的冬天,圣诞节那天我在加拿大生平第一次下雨(通常会下雪)。

现在,这次我想简单总结一下我在使用 Terraform 构建 AWS 服务器时遇到的问题以及解决方法。

请注意,本文是针对已经在使用 Terraform 的人,因此我将省略介绍该工具等先决条件。

任务

当我配置CloudFront和S3来存储其日志时,计划期间没有发生错误,但应用期间发生以下错误。

│ 错误:创建 CloudFront 分配:InvalidArgument:您为 CloudFront 日志指定的 S3 存储桶未启用 ACL 访问:XXX-log-bucket.s3.amazonaws.com │ 状态代码:400,请求 ID:XXXXXXXXXXXXXX │ │ 带有 XXXXX。 aws_cloudfront_distribution.cf_distribution, │ 在 XXX/cloudfront.tf 第 XX 行,资源“aws_cloudfront_distribution”“cf_distribution”中: │ ........

似乎未启用 ACL 访问来将日志从 CloudFront 写入 S3 存储桶。
这是因为自 2023 年 4 月以来,已启用 S3 公共访问阻止(禁用 ACL)作为 Amazon S3 的新默认安全设置。
◎参考: https://zenn.dev/devcamp/articles/39ce7fd0272926

于是,我尝试直接在AWS控制台上启用目标S3存储桶上的ACL,并且应用没有任何问题通过,并且日志现在存储在相应的存储桶中。

aws_acl

我想用 Terraform 代码做同样的事情,但搜索后找不到在 Terraform 中编写它的方法,甚至当我询问 ChatGPT 时,他也只给了我没有意义的答案,所以我在亏了。

解决方案

ObjectOwnership 更改为 BucketOwnerEnforced 部分相对应的 Terraform 描述,并找到了似乎与之相对应的内容。
◎ 参考: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_ownership_controls

让我们将其添加到 S3 配置文件中。

// 日志存储桶对象所有者设置 ACL 启用资源 "aws_s3_bucket_ownership_controls" "log_ownership_controls" { bucket = aws_s3_bucket.log.id Rule { object_ownership = "BucketOwnerPreferred" } }

除非指定规则的 object_ownership,否则内容为“BucketOwnerEnforced(ACL 已禁用)”,因此显式指定为“BucketOwnerPreferred”。

然后,应用顺利通过,目标 S3 存储桶的 ACL 已启用,并且日志现在也存储在该存储桶中。


以上是如何使用 Terraform 启用 AWS ACL 访问。

做起来很简单,但我花了一段时间才找到正确的信息,所以我希望这篇文章对遇到同样情况的人有所帮助。

单击此处查看我们博客上与 Terraform 相关的文章。

感谢您的阅读。

如果您觉得这篇文章有帮助,请点赞!
6
加载中...
6 票,平均:1.00 / 16
1,202
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

写这篇文章的人

关于作者

T.K.

加拿大办事处工程师,隶属系统解决方案部。
这是我在加拿大的第六年,我很想念明太子。