Первоначально опубликовано в моем личном блоге georgeoffley.com
Оглавление
- Вступление
- Проблема
- S3 раствор
- Динамодб Решение
- Заключение
Вступление
Гибридная инфраструктура имеет тонны захватывающих вызовов. Хотя мы проводим много нашего программного обеспечения в AWS в моей компании, мы не можем сделать все в облаке. Таким образом, у нас также есть тонны физической инфраструктуры. Эта гибридная инфраструктура представляет многие проблемы, которые мы стремимся преодолеть на команде программного обеспечения. Одной из проблем, которые мы работаем над тем, является визуализация и использование программного обеспечения для обнаружения наших урожайности. Этот кусок этой головоломки сосредоточен на хранении для наших изображений.
Мы решили, что мы будем использовать комбинацию услуг, предлагаемых AWS. Первый – это простое хранилище для хранения Amazon или S3 для хранения изображения и Dynamodb для хранения метаданных упомянутых изображений. Учитывая, что мы получаем информацию прямо у оборудованного обеспечения, многие вещи могут пойти не так, от получения фотографий, когда указанные изображения нажаты на AWS. Это приводит нас к вопросу этого вечера: как я могу убедиться, что эти услуги доступны для меня, чтобы отправить вещи?
Проблема
Ну, как оказывается, есть несколько способов, которыми это можно сделать. Например, существуют библиотеки, которые будут сканировать сайты проверки здоровья, чтобы увидеть, есть ли какие-либо сервисные отключения. Это не было бы отличным способом сделать проверки здоровья для производственного приложения. Итак, я решил увидеть эту проблему и сделать что-то сам. Я не беспокоюсь о службах AWS, когда они имеют высокую доступность, используя свои разные зоны доступности. Я больше обеспокоен нашими конечными точками, проходящимися, интернет-проблемы или монстры Cloverfield. Итак, это должно быть исследовано.
S3 раствор
Необходим простое решение для проверки здоровья моих ресурсов. К счастью, я быстро поставил что-то вместе, используя Библиотека Boto3 который является SDK AWS для Python. Эта библиотека дает нам легкий доступ к AWS API для настройки и управления службами. Первое, что я сделал, было создать класс объекта для использования классов клиента в BOTO3.
Нам нужно пройти только в наших учетных данных доступа и услуги, которые мы хотим создать объект клиента, и мы получаем наш клиентский объект назад. Каждый поворот в BOTO3 позволяет взаимодействовать с классом клиента. Документы определяют класс клиента как «Низкоуровневый клиент, представляющий любую услугу» Отказ В большинстве случаев вы бы использовали его для доступа к различным функциям для взаимодействия с сервисом.
После этого я собрал некоторую простую логику, чтобы вернуть некоторую информацию на ресурсе, который мы ищем. В нашем случае мы пытались получить доступ к ведрю, где мы будем хранить изображения. Это решение достаточно, чтобы удовлетворить меня, что ресурс существует, и я могу общаться с ним. Ниже приведен код, который я использовал для S3.
Вышеупомянутый код устанавливает новый экземпляр клиента и использует head_bucket () функция . Это отлично подходит для того, чтобы увидеть, существует ли ведро, и если обаяние объекта у него есть разрешения для доступа к нему. В моем случае мне нужно только видеть, получите ли я сообщение обратно. Итак, я передаю имя ведра, и я могу получить 200 сообщение с сервера, если ресурс там, и у меня есть доступ к нему. Мне нравится этот подход, потому что он мертв просто, и я также получаю использование пользовательского исключения, которое мы получаем доступ к использованию объекта клиента, который является Носучбукет исключение. Используя это исключение, позволяет нам быть кратко с нашими исключениями.
Были несколько вопросов о ограничениях по возможности использовать что-то вроде этого. Мы ожидаем, что часто используйте это для полюса S3 и убедитесь, что мы можем поговорить с нашим ведром. Если AWS недоступен, нам нужно выключить SPIGOT и остановить наше программное обеспечение от отправки вещей на AWS и не терять сообщения в пустоте пространства. Тем не менее, мы будем опрокидывать несколько раз в секунду; К счастью для нас, S3 законодал их скорость запроса до 3500, чтобы добавить данные и 5500 для извлечения данных . Это дает нам много места, чтобы иметь возможность полюс, что нам нужно.
Динамодб Решение
С помощью клиентского объекта, который мы создали выше, мы также можем использовать это для доступа к DynamOdb. Как таковой, код ниже:
Приведенный выше фрагмент кода делает то же самое, что и код S3. Мы создаем новый экземпляр, и мы используем reposh_table () функция при прохождении в названии таблицы . Эта функция возвращает информацию о таблице, включая состояние. Кроме того, обратите внимание, что ResourceNotFoundException является еще одним пользовательским исключением, предоставленным клиентским объектом «Динамо». Этот бит кода удовлетворяет тому, что мне нужно иметь возможность проверить состояние таблицы. Ура!
Использование этого метода также имеет аналогичные проблемы. unkibe_table () Функция использует в конечном итоге согласованное чтение на вашем столе. Итак, выясняя дата возможна, если вы избираете что-то, что вы только что создали, так что дайте ему секунду. Если вы используете предоставленную таблицу в Dynamo, этот метод займет один из ваших чтений в секунду. Нам нужно будет убедиться, что это объясняется, когда мы начнем разработать нашу базу данных.
Заключение
Вышеуказанный простой бит кода был краткий шип для решения, который нам нужно было изучить. Эта запись была вдохновлена большим количеством помощи, которую я получил от моих популярных сообществ AWS. Проверка здоровья и статуса услуг является одним из многих вещей, которые мы построим с помощью AWS. Я рад, чтобы не отставать от моего обучения и здания. Если вы видели или сделали другие вещи, чтобы выполнить этот тип работы, дайте мне знать! Я хотел бы узнать больше.
Оригинал: “https://dev.to/aws-builders/health-checking-s3-and-dynamodb-in-aws-3ocl”