我有一个AWS SNS模块,它创建sns及其策略。
resource "aws_sns_topic" "topic" {
name = var.name
display_name = var.name
content_based_deduplication = var.sns_content_based_deduplication
fifo_topic = var.fifo_topic
firehose_success_feedback_sample_rate = var.firehose_success_rate
http_success_feedback_sample_rate = var.http_success_rate
lambda_success_feedback_sample_rate = var.lambda_success_rate
sqs_success_feedback_sample_rate = var.sqs_success_rate
}
resource "aws_sns_topic_policy" "topic_policy" {
arn = aws_sns_topic.topic.arn
policy = templatefile("./sns_topic_policy.json", {})
depends_on = [aws_sns_topic.topic]
}和位于同一个目录sns_topic_policy.json中的json文件。
{
"Version": "2008-10-17",
"Id": "__default_policy_ID",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"SNS:GetTopicAttributes",
"SNS:SetTopicAttributes",
],
"Resource": "*",
"Condition": {
"StringEquals": {
"AWS:SourceOwner": "*"
}
}
]
}我确实申请了一切。现在我想更新json文件中的策略。
{
"Version": "2008-10-17",
"Id": "__default_policy_ID",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"SNS:GetTopicAttributes",
"SNS:SetTopicAttributes",
],
"Resource": "*",
"Condition": {
"StringEquals": {
"AWS:SourceOwner": "*"
}
},
{
"Sid": "Example SNS topic policy",
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": "SNS:Publish",
"Resource": *,
"Condition": {
"StringEquals": {
"aws:SourceAccount": *
},
"ArnLike": {
"aws:SourceArn": "*"
}
}
]
}但是当我运行plan时,它说不需要做任何改变。有人遇到同样的问题,你有什么解决办法?假设继续使用json文件作为策略(以保持main.tf更干净)
提前感谢
发布于 2022-04-06 03:10:12
尝试使用这个AWS 链接生成您的策略。我在Terraform的策略中使用了这个工具,而且我从来没有遇到过任何问题。
https://stackoverflow.com/questions/71760062
复制相似问题