[英]Terraform tries to create s3 bucket policy although it exists
我有一个之前使用terraform
创建的 AWS S3 存储桶,名为my-awesome-bucket
。
由于某些超出本讨论范围的原因,我通过 AWS 控制台手动添加了以下存储桶策略(我只是在此处复制和粘贴)
{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-awesome-bucket/*",
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
}
}
]
}
快进到现在,我只是在相应的 s3 资源定义中添加以下几行:
policy = <<EOF
{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-awesome-bucket/*",
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
}
}
]
}
EOF
有没有人知道为什么我的terraform
计划表明将创建该策略? (虽然它存在?)
$ terraform plan
(...)
~ aws_s3_bucket.my-awesome-bucket
policy: "" => " {\n \"Version\": \"2008-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Deny\",\n \"Principal\": \"*\",\n \"Action\": \"s3:*\",\n \"Resource\": \"arn:aws:s3:::my-awesome-bucket/*\",\n \"Condition\": {\n \"Bool\": {\n \"aws:SecureTransport\": \"false\"\n }\n }\n }\n ]\n }\n"
您的 terraform 状态不知道该策略已经存在。 您需要先使用以下内容导入它:
terraform import aws_s3_bucket_policy.example my-bucket-name
https://www.terraform.io/docs/providers/aws/r/s3_bucket_policy.html#import
https://www.terraform.io/docs/state/ purpose.html
编辑:我重读了您的问题,看起来您正在aws_s3_bucket
资源中使用policy
参数。 terraform 文档说:
请注意,如果策略文档不够具体(但仍然有效),Terraform 可能会将策略视为在 terraform 计划中不断变化。 在这种情况下,请确保使用详细/特定版本的策略。
因此,您可能需要将此策略移动到其自己的aws_s3_bucket_policy
资源中,并按照最初的建议进行导入。
https://www.terraform.io/docs/providers/aws/r/s3_bucket.html#policy
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.