AWS получает общих клиентов - PullRequest
0 голосов
/ 11 февраля 2019

Я собирал лямбда-функцию в AWS, которая использует следующие элементы: S3, SQS, SNS и KMS.При переключении между юнит-тестами и реальными лямбда-тестами я написал общий метод для возврата интерфейса IAmazonService, этот интерфейс выглядит следующим образом:

public static T GetAmazonClient<T>(ILambdaContext context) where T : IAmazonService, new()
{
    T client = default(T);
    try
    {    
        if (context.GetType() == typeof(TestLambdaContext))
        {
            Console.WriteLine("I am a unit test and I will have to build a profile");
            //Build the profile for my unit test
            client = ClientObjectIhaveBuilt;
        }
        else
        {
            Console.WriteLine("I am a Lambda instance and I should inherit my credentials");
            client = (T)Activator.CreateInstance(typeof(T));
        }
    }
    catch (Exception ex)
    {
        //Some logging happens here with the exception
    }
    Console.WriteLine(JsonConvert.SerializeObject(client));
    return client;
}

Тогда в моем коде я могу сделать что-то вроде этого

using (var sqsClient = AmazonClientHelper.GetAmazonClient<AmazonSQSClient>(context))
{
    var request = new ChangeMessageVisibilityRequest(SQSURL, message.ReceiptHandle, timeout);
    Console.WriteLine("Extending Visibility of SQS Entry");
    var response = await sqsClient.ChangeMessageVisibilityAsync(request);
}

В модульном тестировании это работало абсолютно нормально, я могу получать сообщения, читать из S3 и все остальное, что я хочу сделать, но при размещении в AWS Lambda, похоже, не создает нужные клиентские учетные записи,

Я разместил это в своей собственной тестовой учетной записи AWS, и он работал от начала до конца, но при загрузке его в учетную запись моей компании я обнаружил, что созданные объекты клиента не создаются должным образом, выходные данные объекта клиента вСериализатор JSON в конце - это пустой объект без URL-адреса службы или учетных данных (это может быть правильно, но выглядит подозрительно)

Наши клиенты выходят из строя при первом затруднении, когда мы пытаемся расширить видимость наших элементов SQS;Клиент пытается расширить видимость, но мы сталкиваемся с запросом отмененной операции.

Примечание: сидите спокойно, я пытаюсь получить копию трассировки стека и сериализованный вывод клиента

1 Ответ

0 голосов
/ 25 февраля 2019

Это была красная сельдь;с приведенным выше кодом все в порядкепо крайней мере, конечные точки AWS через определенные правила NAT / подсети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...