Spec-Zone.ru › Chef 16

Ресурс aws_dynamodb_table

[редактировать на GitHub]

Используйте ресурс аудита InSpec aws_dynamodb_table для проверки свойств отдельной таблицы DynamoDb.

Синтаксис

Обеспечить существование таблицы DynamoDb.

describe aws_dynamodb_table(table_name: 'table-name') do
  it { should exist }
end

Параметры

table_name (обязательно)

Имя таблицы, используемой в этой таблице DynamoDb. Оно должно передаваться как запись table_name: 'value' ключ-значение в хэше.

Свойства

Свойство Описание
table_name Имя таблицы DynamoDb.
table_status Состояние таблицы DynamoDb.
table_arn Имена ресурсов Amazon таблицы DynamoDb.
creation_date Дата создания таблицы DynamoDb. Пример: 01/01/2019
number_of_decreases_today Количество уменьшений выделенной пропускной способности для этой таблицы в течение текущего UTC-календарного дня.
write_capacity_units Максимальное количество записей, потребляемых в секунду, прежде чем DynamoDb вернет исключение ThrottlingException.
read_capacity_units Максимальное количество чтений с сильной последовательностью, потребляемых в секунду, прежде чем DynamoDb вернет исключение ThrottlingException.
item_count Количество записей в таблице DynamoDb.
attributes Массив атрибутов, описывающих схему ключей для таблицы и индексов. Возвращается в виде хэша. Каждая запись состоит из: attribute_name - Имя этого атрибута ключа. attribute_type - Тип данных атрибута: B - Булево, N - Число, S - строка
key_schema Указывает атрибуты, составляющие первичный ключ для таблицы или индекса. Возвращается в виде хэша. Атрибуты в KeySchema также должны быть определены в массиве Attributes. Каждый элемент массива KeySchemaElement состоит из: attribute_name - Имя этого атрибута ключа. key_type - Роль, которую будет выполнять атрибут ключа: HASH - ключ раздела, RANGE - сортировочный ключ
global_secondary_indexes Список глобальных вторичных индексов, если они есть, для выбранной таблицы.

Примеры

Обеспечить, что состояние таблицы DynamoDb активно

describe aws_dynamodb_table(table_name: 'table-name') do
  its('table_status') { should eq 'ACTIVE' }
end

Обеспечить, что таблица DynamoDb имеет атрибут

describe aws_dynamodb_table(table_name: 'table-name') do
  its('attributes') { should_not be_empty }
  its('attributes') { should include({:attribute_name =>'table_field', :attribute_type =>'N'}) }
end

Обеспечить, что таблица DynamoDb имеет key_schema

describe aws_dynamodb_table(table_name: 'table-name') do
  its('key_schema') { should_not be_empty }
  its('key_schema') { should include({:attribute_name =>'table_field', :key_type =>'HASH'}) }
end

Обеспечить, что у таблицы DynamoDb установлены правильные глобальные вторичные индексы

aws_dynamodb_table(table_name: 'table-name').global_secondary_indexes.each do |global_sec_idx|
  describe global_sec_idx do
    its('index_name') { should eq 'TitleIndex' }
    its('index_status') { should eq 'ACTIVE' }
    its('key_schema') { should include({:attribute_name =>'Title', :key_type =>'HASH'}) }
    its('provisioned_throughput.write_capacity_units') { should cmp 10 }
    its('provisioned_throughput.read_capacity_units') { should cmp 10 }
    its('projection.projection_type') { should eq 'INCLUDE' }
  end
end

Обработчики соответствия

У этого ресурса аудита InSpec есть следующие специальные обработчики соответствия. Полный список доступных обработчиков см. на странице страница обработчиков.

exist

Управление пройдет, если describe вернёт хотя бы один результат.

Используйте should_not для проверки, что сущность не должна существовать.

describe aws_dynamodb_table(table_name: 'table-name') do
  it { should exist }
end

describe aws_dynamodb_table(table_name: 'table-name') do
  it { should_not exist }
end

Разрешения AWS

Вашему Принципалу потребуется действие DynamoDB::DescribeTable с установленным значением Effect в разрешение.

Подробную документацию можно найти по адресу Действия, ресурсы и ключи условия для Amazon Dynamodb.

© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/resources/aws_dynamodb_table/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API