我有一个先前用terraform
创建的名为my-awesome-bucket
的AWS S3存储桶。
出于本讨论范围之外的某些原因,我通过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"
答案 0 :(得分:2)
您的地形状态不知道该策略已经存在。您需要先使用以下内容将其导入:
policy
https://www.terraform.io/docs/providers/aws/r/s3_bucket_policy.html#import
https://www.terraform.io/docs/state/purpose.html
编辑:我重新阅读了您的问题,看来您在aws_s3_bucket
资源中使用了aws_s3_bucket_policy
参数。 terraform文档说:
请注意,如果政策文件不够明确(但仍然 有效),Terraform可能会认为该政策在不断变化中 地形计划。在这种情况下,请确保使用 详细/特定版本的政策。
因此,您可能需要将此策略移至其自己的f(P) = \sigma_{i=1}^{1180} P_i
资源中,并按照最初的建议进行导入。
https://www.terraform.io/docs/providers/aws/r/s3_bucket.html#policy