В настоящее время я пытаюсь выполнить большую часть лямбда-интеграции с настройкой балансировщика нагрузки в стеке облачной информации, и я нахожусь на этапе добавления разрешения для лямбда-функции, чтобы разрешить действие lambda:InvokeFunction
от целевой группы elbv2 так что я подумал о том, чтобы иметь sourceArn в разрешении быть таким:
arn:aws:elasticloadbalancing:eu-west-1:######:targetgroup/*/*
на данный момент я просто тестирую без добавления ресурсов целевой группы в стек, но после развертывания в облачной информации и проверки результата построения лямбда-функции aws отображает ошибку:
An error occurred while listing alb relations: 'arn:aws:elasticloadbalancing:eu-west-1:#######:targetgroup/*/*' is not a valid target group ARN (Service: AmazonElasticLoadBalancing; Status Code: 400; Error Code: ValidationError; Request ID: 2ec4bd65-816b-11e9-b1a8-3d113de48409)
Результат политики в lambda составлен так:
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "project-dev-FixturesDashgetAllLambdaPermission-17SATFJ9GT266",
"Effect": "Allow",
"Principal": {
"Service": "elasticloadbalancing.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:eu-west-1:######:function:project-dev-fixtures-getAll",
"Condition": {
"ArnLike": {
"AWS:SourceArn": "arn:aws:elasticloadbalancing:eu-west-1:#######:targetgroup/*/*"
}
}
}
]
}
Это делается безсерверной средой, но ресурс выходного стека выглядит следующим образом:
{
"FixturesDashgetAllLambdaPermission": {
"Type": "AWS::Lambda::Permission",
"Properties": {
"Action": "lambda:InvokeFunction",
"Principal": {
"Fn::Join": [
"",
[
"elasticloadbalancing.",
{
"Ref": "AWS::URLSuffix"
}
]
]
},
"FunctionName": {
"Fn::GetAtt": [
"FixturesDashgetAllLambdaFunction",
"Arn"
]
},
"SourceArn": {
"Fn::Join": [
"",
[
"arn:",
{
"Ref": "AWS::Partition"
},
":elasticloadbalancing:",
{
"Ref": "AWS::Region"
},
":",
{
"Ref": "AWS::AccountId"
},
":targetgroup/*/*"
]
]
}
}
}
}
Так как лямбда показывает ошибку, утверждающую, что sourceArn недопустим, я задаюсь вопросом, разрешает ли sourceArn подстановочные знаки для ресурса целевой группы, я проверил стек serverless
по умолчанию с определенными функциями, сгенерированные разрешения вот так, я создал свое собственное разрешение на основе этого сгенерированного разрешения с единственным отличием sourceArn.