aws_ami resource
Use the aws_ami
InSpec audit resource to test properties of a single AWS AMI.
For additional information, including details on parameters and properties, see the AWS documentation on EC2 Amazon Machine Images.
Syntax
An aws_ami
resource block declares the tests for a single AWS AMI by image id.
describe aws_ami(image_id: 'aki-2349e94458a507') do
it { should exist }
end
Parameters
image_id
(required)This resource accepts a single parameter, the AMI Image ID. This can be passed either as a string or as a
image_id: 'value'
key-value entry in a hash.
Properties
architecture
- The architecture of the image.
creation_date
- The date and time the image was created.
image_id
- The ID of the AMI.
image_location
- The location of the AMI.
image_type
- The type of image.
public
- Indicates whether the image has public launch permissions.
kernel_id
- The kernel associated with the image, if any. Only applicable for machine images.
owner_id
- The AWS account ID of the image owner.
platform
- This value is set to windows for Windows AMIs; otherwise, it is blank.
platform_details
- The platform details associated with the billing code of the AMI.
usage_operation
- The operation of the Amazon EC2 instance and the billing code that is associated with the AMI.
product_codes
- Any product codes associated with the AMI.
ramdisk_id
- The RAM disk associated with the image, if any. Only applicable for machine images.
state
- The state of the AMI.
block_device_mappings
- Any block device mapping entries.
description
- The description of the AMI that was provided during image creation.
ena_support
- Specifies whether enhanced networking with ENA is enabled.
hypervisor
- The hypervisor type of the image.
image_owner_alias
- The AWS account alias or the AWS account ID of the AMI owner.
name
- The name of the AMI that was provided during image creation.
root_device_name
- The device name of the root device volume.
root_device_type
- The type of root device used by the AMI.
sriov_net_support
- Specifies whether enhanced networking with the Intel 82599 Virtual Function interface is enabled.
state_reason
- Provides the reason for the state change.
- Provides any tags assigned to the image.
virtualization_type
- The type of virtualization of the AMI.
There are also additional properties available. For a comprehensive list, see the API reference documentation
Examples
Check if an AMI is public:
describe aws_ami(image_id: 'aki-25348fd4323') do
it { should be_public }
end
Matchers
For a full list of available matchers, see our Universal Matchers page.This resource has the following special matchers.
be_public
The be_public
matcher tests if the AMI has public launch permissons.
describe aws_ami(image_id: 'aki-1234') do
it { should be_public }
end
describe aws_ami(image_id: 'aki-6789') do
it { should_not be_public }
end
exist
The control will pass if the describe returns at least one result.
Use should_not
to test the entity should not exist.
describe aws_ami(image_id: 'aki-1234') do
it { should exist }
end
describe aws_ami(image_id: 'aki-6789') do
it { should_not exist }
end
AWS Permissions
Your AWS principal will need the EC2:Client:DescribeImages
action with Effect
set to Allow
.
You can find detailed documentation at Actions, Resources, and Condition Keys for Amazon EC2.