Create-functionコマンドでラムダ関数を作成しようとすると、「関数に定義されたロールをLambdaが引き継ぐことができません」というエラーが表示されます。
aWSラムダ作成関数
-地域us-west-2
-関数名HelloPython
-Zipファイルfileb://hello_python.Zip
-role arn:aws:iam :: my-acc-account-id:role/default
-ハンドラーhello_python.my_handler
-ランタイムpython2.7
-タイムアウト15
-メモリサイズ512
ロール「信頼関係」設定ファイルを更新していないため、「関数に定義されたロールをLambdaが引き継ぐことができません」というエラーが表示されました。コメントのリンクされた回答のように、タイムアウトの問題は発生しませんでした。
上記の回答のコメントは、以下を追加する必要があると指摘しました。
鉱山は次のようになりました。
{
"Version": "2012-10-17",
"Statement": [
{
<your other rules>
},
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
このエラーも発生しています。 (まだ)明確な答えは得られていないが、この問題を解決するのに役立つヒントをいくつかお伝えします。
A)アカウントIDとロール名を組み合わせてロールARNを作成する場合、アカウントIDはダッシュなしである必要があると思います
B)ロールを作成したばかりで、場合によってはポリシーを追加した場合、ロールがこのエラーをトリガーする(わずかな)時間枠があるようです。ロールの最後の操作とcreate-function呼び出しの間で5〜6秒スリープすると、問題を回避できました(もちろん、タイミングは可変であるため、これは最善の回避策です)。
私にとって問題は、役割の名前が不完全だったことです。設定しました
--role arn:aws:iam::000000000000:role/MyRoleName
あるべき時
--role arn:aws:iam::000000000000:role/service-role/MyRoleName
(もちろん私のaws idは実際には000000000000ではありません)
実行してこれを発見しました
aws iam get-role --role-name MyRoleName
"Arn"
結果セットのプロパティ。
私にとって問題は、間違ったデフォルトのリージョン環境キーを設定していたことです。
Lambda関数の作成中にCloudFormationで間違ったロールARNを与えるため、ほとんどの人はこのエラーになります。
「DependsOn」を使用して最初に役割が完了していることを確認し、組み込み関数「」「{「Fn :: GetAtt」を使用します。
私はterraformでこのエラーに遭遇しましたが、役割引き継ぎポリシーを追加し、lambdaが引き受ける役割に適用する必要がありました。
data "aws_iam_policy_document" "lambda_assume_role_policy" {
statement {
actions = ["sts:AssumeRole"]
principals {
type = "Service"
identifiers = [
"lambda.amazonaws.com"
]
}
}
resource "aws_iam_role" "lambda_rotation_role" {
name = "lambda-rotation-role"
assume_role_policy = "${data.aws_iam_policy_document.lambda_assume_role_policy.json}"
}
私のIAMロールには正しいポリシーと信頼関係がありましたが、同じ問題がありました。 IAMロールを作成した後、ラムダモジュールを使用する場合の問題は、CLIを介してLambda作成が正常に機能することでした。
私も数秒間「一時停止」しようとしましたが、助けにはなりませんでした。
RegisterdLambda.codeが定義されるまで、再試行と遅延を追加することになりました。通常、1〜2回試行した後に機能します。
例:
- name: creating lambda function
lambda:
state: present
name: "{{ lambdaName }}"
Zip_file: "{{ lambdaZipFile }}"
runtime: "{{ lambdaRuntime }}"
role: "{{ lambdaRole }}"
description: "{{ lambdaDescription }}"
handler: "{{ lambdaHandler }}"
register: lambdaFunc
retries: 3
delay: 10
until: "{{ lambdaFunc.code is defined }}"