Это была первая ссылка для этой проблемы. Ответы мне не помогли, потому что я использую ядро, я думаю. Поэтому захотелось добавить это.
System.Net.WebUtility.UrlEncode(MyVariableName)
Если Url.Encode не работает, попробуйте приведенное выше. Также, как указано выше, не используйте это во всей строке URL, просто используйте его для отдельных переменных запроса. В противном случае есть вероятность, что ваш URL не будет работать.
Используя пулы пользователей в качестве механизма аутентификации, невозможно получить токены для авторизации с помощью AWS AppSync без входа в систему в какой-то момент. С учетом сказанного, вы можете немного уменьшить накладные расходы. В конечном счете, все сводится к тому, что вы предложили в своем вопросе, используя «фальшивого пользователя». Это не редкое решение, которое предполагает наличие пользователя на уровне администратора, учетные данные которого будут доступны только с этой лямбды.
Прежде всего, я бы порекомендовал вам не использовать традиционный вход в систему SRP по причинам задержки. В качестве альтернативы можно использовать AdminInitiateAuth / ADMIN_NO_SRP_AUTH, чтобы переложить накладные расходы на вычисления SRP с вашей лямбды на серверную часть Cognito с включенным ADMIN_NO_SRP_AUTH в вашем пуле. Из вашего другого вопроса ( Authenticate AppSync request with adminInitiateAuth ) я понял, что вы задумывались об этом, однако важно отметить, что это просто другой API, используемый для входа пользователя. Вы можете прочитать Подробнее об этом здесь: https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html#amazon-cognito-user-pools-server- побочный поток аутентификации
Дополнительной альтернативой может быть пользовательский поток аутентификации. По той же ссылке выше есть более подробная информация о том, как это сделать, но вкратце вы можете настроить более быстрый поток, который будет соответствовать любым конкретным потребностям вашего добавления.
Чтобы немного увеличить накладные расходы, вы можете в некоторой степени сохранить эти токены в кэше. Это может означать просто сохранение его в памяти в Lambda и проверку его действительности / истечения перед использованием, или даже присоединение механизма удаленного кэширования.