TL;DR 我如何創建一個Lambda函式可以承擔的角色,該角色參考Lambda,在Lambda被創建之前
。大家好,
我正在使用 Terraform v1.0.5 和 AWS。 我有一個lambda,其中有以下代碼:
assumed_role = sts_client.assumed_role(
...
RoleSessionName="tms_rules_settings_lambda"。
...
)
為了做到這一點,我必須給我的lambda一個策略,讓它可以承擔這樣的角色。 因此,我有下面的Terraform。
locals {
tms_rules_settings_lambda_role_name = "tms_rules_settings_lambda_role"/span>
tms_rules_settings_lambda_func_name = "tms_rules_settings_lambda"。
}
...
** Lambda設定**
資源 "aws_lambda_function" "tms_rules_settings_lambda" {
...
function_name = local.tms_rules_settings_lambda_func_name
role = aws_iam_role.tms_rules_settings_lambda_role.arn
...
}
...
** Lambda角色設定**
資源 "aws_iam_role" "tms_rules_settings_lambda_role" {
assume_role_policy = <<EOF
{
"版本"。"2012-10-17",
"宣告": [
{
"Action": "sts:AssumeRole"。
"校長": {
"AWS": "arn:aws:ts::${data.aws_caller_identity.current.account_id}: assumed-role/${local. tms_rules_settings_lambda_role_name}/${local.tms_rules_settings_lambda_func_name}"/span>。
"服務"。"lambda.amazonaws.com"。
},
"效果"。"允許"。
"Sid": "".
}
]
}
EOF
}
這導致了以下錯誤:
這導致了以下錯誤。
Error: Error創建IAM角色tms_rules_settings_lambda_role。
MalformedPolicyDocument: Invalid principal in policy:
"AWS":"arn:aws:ts::267601234567:assumed-role/tms_rules_settings_lambda_role/tms_rules_settings_lambda"
我相信這是因為lambda和角色互相參考,而當其中一個不存在時,它就會爆炸了。
當主體(lambda)不存在時,我如何為 lambda 創建我的角色。
如果有任何幫助,我們將不勝感激。
uj5u.com熱心網友回復:
不幸的是,你不能這樣做。一個有效的原則必須存在,你才能在任何IAM策略或角色中使用它。因此,你必須在原則 arn 中使用通配符,或者首先創建函式,然后在 lambda 存在時更新其角色或權限。
uj5u.com熱心網友回復:
當你在策略宣告中使用一個角色作為委托人時,你使用的是角色 ARN,而不是 STS 給你的假定角色委托人。 你使用了后者,這就是你得到錯誤的原因。
但是......在我看來,你試圖將一個角色添加到它自己的 assumeRole 策略。 你為什么要這樣做? 該角色不需要自己承擔。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/325329.html
標籤:
下一篇:使用`awsecsrun-task`和`awsecsexecute-command`在Docker鏡像中使用亞馬遜ECS的互動式外殼
