Я нашел (100%) правильный способ сделать это.Хотя ответ @John Rotenstein можно было бы использовать, он не совсем правильный, но все равно должен работать.
Я обнаружил, что при нажатии на тумблер политика лямбды фактически обновляется:
Включено:
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "my-lambda-1552674933742",
"Effect": "Allow",
"Principal": {
"Service": "sns.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:us-west-2:1234567890:function:my-lambda",
"Condition": {
"ArnLike": {
"AWS:SourceArn": "arn:aws:sns:us-west-2:1234567890:my-lambda"
}
}
}
]
}
Отключено:
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "my-lambda-1552674933742",
"Effect": "Allow",
"Principal": {
"Service": "sns.amazonaws.com"
},
"Action": "lambda:DisableInvokeFunction",
"Resource": "arn:aws:lambda:us-west-2:1234567890:function:my-lambda",
"Condition": {
"ArnLike": {
"AWS:SourceArn": "arn:aws:sns:us-west-2:1234567890:my-lambda"
}
}
}
]
}
Уведомление Действие равно lambda:InvokeFunction
против lambda:DisableInvokeFunction
.
Мой процесс для этогоследующим образом: - Lambda.listFunctions - для каждой функции, Lambda.removePermission - для каждой функции, Lambda.addPermission
Примечания:
- API-интерфейс Lambda имеет стандартную настройку безопасности 100одновременное выполнение для каждой учетной записи в каждом регионе.
- Обновлять политики на основе ресурсов для ресурсов Lambda можно только в рамках действий API AddPermission и AddLayerVersionPermission.Вы не можете создавать политики для своих ресурсов Lambda в JSON или использовать условия, которые не соответствуют параметрам для этих действий. См. Документы здесь
Кроме того, вы можете использовать Lambda.getPolicy, чтобы просмотреть политику лямбды, чтобы убедиться, что она обновлена.