我之前有一个名为my-awesome-bucket
的 AWS S3 存储桶terraform
创建。
出于超出本次讨论范围的原因,我通过 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 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 可能会将策略视为在 地形规划。在这种情况下,请确保使用 策略的详细/特定版本。
因此,您可能需要将此策略移动到其自己的aws_s3_bucket_policy
资源中,并按照最初建议执行导入。
https://www.terraform.io/docs/providers/aws/r/s3_bucket.html#policy