Ресурс aws_dynamodb_table
Используйте ресурс аудита 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/