[英]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.