@ RobS это не сработает в любом случае. цель состояла в том, чтобы сделать нормальный API лямбда для обработки запросов пользователей также доступным для:
- периодически вызываться на основе фиксированного выражения cron
- вызывается сам по себе, но в какой-то момент в будущем
этот ключ был просто защитой от конечных пользователей.
когда я получаю ответ от AWS, это возможно, если сделать дочерний стек CloudFormation
Фрагмент родительского стека
"Resources": {
"MySecretB": {
"Type": "AWS::SecretsManager::Secret",
"Properties": {
"Name": "MySecretForAppA",
"Description": "This secret has a hardcoded password in SecretString (use GenerateSecretString instead)",
"SecretString": "{\"username\":\"MasterUsername\",\"password\":\"secret-password\"}"
}
},
"Test": {
"DependsOn" : "MySecretB",
"Type": "AWS::CloudFormation::Stack",
"Properties": {
"Parameters": {
"Key": {
"Fn::Sub": ["${value1}", {
"value1": "{{resolve:secretsmanager:MySecretForAppA:SecretString:username}}"
}]
}
},
"TemplateURL" : "https://s3.amazonaws.com/mybucketname/childstack.json "
}
}
}
Фрагмент дочернего стека
"Parameters": {
"Key":{
"Type":"String"
}
},
"Resources": {
"ScheduledRule": {
"Type": "AWS::Events::Rule",
"Properties": {
"ScheduleExpression": "rate(1 minute)",
"Description": "ScheduledRule",
"Targets": [
{
"Arn": "arn:aws:lambda:us-east-1:380574440275:function:LambdaFunction",
"Id": "TargetFunctionV1",
"Input": {"Fn::Sub": "{\"Input\": \"${Key}\"}"}
}
]
}
}
}
Как вы сказали, passing a secret into a CW event is probably not a good idea
, поэтому я только что сделал еще одну лямбда-функцию, которая недоступна для конечных пользователей. его можно вызвать только из событий cloudWatch