Die Antwort von Verbjorns Ljosa enthält nur die Berechtigung für Cloudwatch, das Lambda aufzurufen. Haben Sie die richtige Richtlinie und iam-Rolle angegeben, mit der das Lambda seine Aktionen ausführen kann?
resource "aws_iam_role" "check_foo_role" {
name="check-foo-assume-role"
assume_role_policy="assume_role_policy.json"
}
mit assume_role_policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
und eine Richtlinie, die auf die obige Ressourcen-IAM-Rolle verweist, dh so etwas wie
resource "iam_role_policy" "check-foo-policy" {
name="check-foo-lambda-policy"
role="${aws_iam_role.check_foo_role.id}"
policy="check-foo-policy.json"
}
und schließlich der json, der die Politik spezifiziert , check-foo-policy.json
.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": ["*"]
},
{
"Effect": "Allow",
"Action": [
"abc:SomeAction",
"abc:AnotherAction",
],
"Resource": "some-arn-matching-the-actions"
}
Beachten Sie, dass Sie keine Ressourcenbeschränkung für die protokollbezogenen Aktionen angeben können. abc:SomeAction
könnte ssm:GetParameter
mit einer begleitenden Ressource arn wie sein"arn:aws:ssm:us-east-1:${your-aws-account-id}:parameter/some/parameter/path/*