当设置一个使用terraform的Amazon事件发布的动态数据消防水管事件目的地时,我会得到以下错误。看起来terraform创建了IAM角色,但是在创建带有IAM角色的消防水管事件目的地时抛出了错误。然而,能够从AWS控制台附加相同的IAM角色与消防软管事件目的地,这是由terraform创建的。如果我使用AWS控制台手动创建相同的IAM角色,然后将角色的ARN传递给terraform,它就能工作了。但是,如果我尝试使用terraform创建角色,然后创建事件目标,它就不起作用了。有人能帮我吗?
Error creating SES configuration set event destination: InvalidFirehoseDestination: Could not assume IAM role <arn:aws:iam::<AWS account name >:role/<AWS IAM ROLE NAME>>.
data "aws_iam_policy_document" "ses_configuration_set_assume_role" {
statement {
effect = "Allow"
actions = ["sts:AssumeRole"]
principals {
type = "Service"
identifiers = ["ses.amazonaws.com"]
}
}
}
data "aws_iam_policy_document" "ses_firehose_destination_policy" {
statement {
effect = "Allow"
actions = [
"firehose:PutRecord",
"firehose:PutRecordBatch"
]
resources = [
"<ARN OF AWS FIREHOSE DELIVERY STREAM >"
]
}
}
resource "aws_iam_policy" "ses_firehose_destination_iam_policy" {
name = "SesfirehosedestinationPolicy"
policy = data.aws_iam_policy_document.ses_firehose_destination_policy.json
}
resource "aws_iam_role" "ses_firehose_destination_role" {
name = "SesfirehosedestinationRole"
assume_role_policy = data.aws_iam_policy_document.ses_configuration_set_assume_role.json
}
resource "aws_iam_role_policy_attachment" "ses_firehose_destination_role_att" {
role = aws_iam_role.ses_firehose_destination_role.name
policy_arn = aws_iam_policy.ses_firehose_destination_iam_policy.arn
}
resource "aws_ses_configuration_set" "create_ses_configuration_set" {
name = var.ses_config_set_name
}
resource "aws_ses_event_destination" "ses_firehose_destination" {
name = "event-destination-kinesis"
configuration_set_name = aws_ses_configuration_set.create_ses_configuration_set.name
enabled = true
matching_types = ["send", "reject", "bounce", "complaint", "delivery", "renderingFailure"]
depends_on = [aws_iam_role.ses_firehose_destination_role]
kinesis_destination {
stream_arn = "<ARN OF AWS FIREHOSE DELIVERY STREAM>"
role_arn = aws_iam_role.ses_firehose_destination_role.arn
}
}
发布于 2022-01-25 19:45:39
你可能需要看看你的火龙带数据源。如果它是一个动态数据,它将无法工作。它只会工作时,使用直接放置和其他数据源的动态消防软管。我遇到了这个问题,同时也为我的设置了Datadog。我希望这能帮上忙。
发布于 2022-08-03 20:27:36
我发现了同样的问题,并能用一个小小的解决办法来解决它。
该问题可能是由于AWS将IAM角色传播到所有区域所花费的时间。由于IAM角色是全局的,它将首先在“随机”区域创建,然后传播到所有区域。因此,如果它不是首先在您的区域中创建的,那么传播可能需要一段时间,如果在IAM角色传播之前创建了SES事件目的地,您将得到这个错误。
将depends_on子句添加为terraform (正确吗?)没有帮助。认为IAM角色已经创建,只是还没有传播到您的区域。
对我起作用的解决方案是创建一个IAM角色,为SES服务授予访问"sts:AssumeRole“操作的权限,并为火软管创建”消防喉:PutRecordBatch“操作。当我应用Terraform时,我首先为这个角色做了一个有针对性的应用,等待了一分钟(允许IAM角色传播),然后执行一个正常的terraform应用来完成。
在您的示例中,命令如下所示:
terraform apply --target aws_iam_role_policy_attachment.ses_firehose_destination_role_att
terraform apply
https://stackoverflow.com/questions/70780683
复制相似问题