Ресурс 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 Resource Names таблицы 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 - Boolean, 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
Управление пройдёт, если описание вернёт как минимум один результат.
Используйте 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 с эффектом Allow.
Подробную документацию можно найти по адресу действия, ресурсы и ключи условий для 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/