

# Identificar seus recursos que referenciam AMIs específicas
<a name="ec2-ami-references"></a>

É possível identificar seus recursos da AWS que referenciam imagens de máquina da Amazon (AMIs) específicas, independentemente de as AMIs serem públicas ou privadas ou de quem as possui. Essa visibilidade ajuda você a garantir que seus recursos usem as mais recentes AMIs compatíveis.

**Benefícios principais**

A verificação das referências de AMIs ajuda para que você:
+ Audite o uso de AMIs em sua conta.
+ Verifique onde as AMIs específicas estão sendo referenciadas.
+ Mantenha a conformidade atualizando seus recursos para referenciar as AMIs mais recentes.

 

**Topics**
+ [Recursos compatíveis](#ec2-ami-references-supported-resources)
+ [Como funcionam as verificações de referência de AMIs](#how-ami-references-works)
+ [Permissões obrigatórias do IAM](#ami-references-required-permissions)
+ [Etapas para verificar as referências de AMIs](#ami-reference-procedures)

## Recursos compatíveis
<a name="ec2-ami-references-supported-resources"></a>

As referências de AMIs podem ser verificadas em:
+ Instâncias do EC2
+ Modelos de execução
+ Parâmetros do SSM
+ Fórmulas de imagens do Image Builder
+ Fórmulas de contêineres do Image Builder

## Como funcionam as verificações de referência de AMIs
<a name="how-ami-references-works"></a>

**Operação básica**

Ao executar uma verificação de referência de AMIs:
+ Especifique quais AMIs devem ser verificadas.
+ Escolha quais tipos de recursos serão verificados.
+ Receba uma lista de seus recursos que referenciam AMIs específicas.

**Seleção do tipo de recurso**

No console, você seleciona os tipos de recursos a serem verificados.

Na CLI, você especifica os tipos de recursos a serem verificados usando um ou os dois dos seguintes parâmetros da CLI:
+ `IncludeAllResourceTypes`: verifica todos os tipos de recursos compatíveis.
+ `ResourceTypes`: verifica os tipos de recursos especificados.

**Definir o escopo de respostas**

É possível definir o escopo de respostas para instâncias do EC2 e modelos de inicialização personalizando os valores de `ResourceTypeOptions` usando o parâmetro `ResourceTypes`. Tanto o console quanto o parâmetro `IncludeAllResourceTypes` usam valores de opção padrão. Quando `ResourceTypes` e `IncludeAllResourceTypes` são usados juntos, os valores das opções de `ResourceTypes` têm precedência sobre os padrões.

Os seguintes valores padrão são usados:


| Tipo de recurso | Opção de escopo (`OptionName`) | Finalidade | Valores padrão para `OptionValue` e o console | 
| --- | --- | --- | --- | 
| Instâncias do EC2 | state-name | Filtrar por estado da instância | pending, running, shutting-down, terminated, stopping, stopped (todos os estados) | 
| Modelos de execução | version-depth | Especifique o número de versões do modelo de inicialização a serem verificadas (começando pela versão mais recente) | 10 (versões mais recentes) | 

## Permissões obrigatórias do IAM
<a name="ami-references-required-permissions"></a>

Para usar a API DescribeImageReferences para identificar seus recursos que referenciam AMIs específicas, você precisa das seguintes permissões do IAM para descrever os recursos:
+ `ec2:DescribeInstances`
+ `ec2:DescribeLaunchTemplates`
+ `ec2:DescribeLaunchTemplateVersions`
+ `ssm:DescribeParameters`
+ `ssm:GetParameters`
+ `imagebuilder:ListImageRecipes`
+ `imagebuilder:ListContainerRecipes`
+ `imagebuilder:GetContainerRecipe`

**Exemplo de política do IAM para usar a API DescribeImageReferences**  
O exemplo de política a seguir concede a você as permissões para usar a API DescribeImageReferences, que inclui as permissões para descrever instâncias do EC2, modelos de inicialização, parâmetros do Systems Manager, fórmulas de imagens do Image Builder e fórmulas de contêineres do Image Builder.

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": "ec2:DescribeImageReferences",
			"Resource": "*"
		},
		{
			"Effect": "Allow",
			"Action": [
				"ec2:DescribeInstances",
				"ec2:DescribeLaunchTemplates",
				"ec2:DescribeLaunchTemplateVersions",
				"ssm:DescribeParameters",
				"ssm:GetParameters",
				"imagebuilder:ListImageRecipes",
				"imagebuilder:ListContainerRecipes",
				"imagebuilder:GetContainerRecipe"
			],
			"Resource": "*",
			"Condition": {
				"ForAnyValue:StringEquals": {
					"aws:CalledVia": [
						"ec2-images.amazonaws.com"
					]
				}
			}
		}
	]
}
```

------

**Importante**  
É altamente recomendável usar a política gerenciada [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html) da AWS em vez de criar a política você mesmo. Criar uma política do IAM personalizada que forneça somente as permissões necessárias requer tempo e experiência, e exigirá atualizações à medida que novos tipos de recursos forem disponibilizados.  
A política gerenciada `AmazonEC2ImageReferencesAccessPolicy`:  
Concede todas as permissões necessárias para usar a API DescribeImageReferences, que inclui as permissões para descrever instâncias do EC2, modelos de inicialização, parâmetros do Systems Manager e fórmulas de imagens e de contêineres do Image Builder.
É automaticamente compatível com novos tipos de recursos à medida que ficam disponíveis (especialmente importante ao usar o parâmetro `IncludeAllResourceTypes`).
É possível anexar a política `AmazonEC2ImageReferencesAccessPolicy` às identidades do IAM (usuários, grupos e perfis).   
Para visualizar as permissões incluídas nessa política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html) na *Referência de políticas gerenciadas pela AWS*.

## Etapas para verificar as referências de AMIs
<a name="ami-reference-procedures"></a>

Use os procedimentos a seguir para identificar quais dos seus recursos da AWS estão referenciando AMIs específicas.

------
#### [ Console ]

**Para identificar recursos referenciando AMIs específicas**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **AMIs**.

1. Selecione uma ou mais AMIs para verificar as referências.

1. Escolha **Ações**, **Uso de AMIs**, **Visualizar recursos referenciados**.

1. Na página **Visualizar recursos referenciando AMIs selecionadas**:

   1. Em **Tipos de recursos**, selecione um ou mais tipos de recursos.

   1. Escolha **Visualizar recursos**.

1. A seção **Recursos referenciando AMIs selecionadas** é exibida. A lista exibe os recursos que referenciam AMIs específicas. Cada linha fornece as seguintes informações:
   + **ID da AMI**: o ID da AMI referenciada.
   + **Tipo de recurso**: o tipo de recurso do recurso que referencia a AMI.
   + **ID do recurso**: o ID do recurso que referencia a AMI.

------
#### [ AWS CLI ]

**Para verificar as referências de AMIs para tipos de recursos específicos**  
Use o comando [describe-image-references](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-references.html) com o parâmetro `--resource-types`. O exemplo a seguir verifica as instâncias do EC2 (definição do escopo por estado da instância), modelos de inicialização (considerando as 20 versões mais recentes de modelos de inicialização) e outros tipos de recursos específicos.

```
aws ec2 describe-image-references \
    --image-ids ami-0abcdef1234567890 ami-1234567890abcdef0 \
    --resource-types \
        'ResourceType=ec2:Instance,ResourceTypeOptions=[{OptionName=state-name,OptionValues=[running,pending]}]' \
        'ResourceType=ec2:LaunchTemplate,ResourceTypeOptions=[{OptionName=version-depth,OptionValues=[20]}]' \
        'ResourceType=ssm:Parameter' \
        'ResourceType=imagebuilder:ImageRecipe' \
        'ResourceType=imagebuilder:ContainerRecipe'
```

O seguinte é um exemplo de saída.

```
{
    "ImageReferences": [
        {
            "ImageId": "ami-0abcdef1234567890",
            "ResourceType": "ec2:Instance",
            "Arn": "arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"
        },
        {
            "ImageId": "ami-1234567890abcdef0",
            "ResourceType": "ec2:LaunchTemplate",
            "Arn": "arn:aws:ec2:us-east-1:123456789012:launch-template/lt-1234567890abcdef0"
        }
    ]
}
```

**Para verificar as referências de AMIs para todos os tipos de recursos compatíveis**  
Use o comando [describe-image-references](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-references.html) com o parâmetro `--include-all-resource-types`.

```
aws ec2 describe-image-references \
    --image-ids ami-0abcdef1234567890 ami-1234567890abcdef0 \
    --include-all-resource-types
```

**Para verificar as referências de AMIs para todos os tipos de recursos compatíveis e opções específicas**  
Use o comando [describe-image-references](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-references.html) com os parâmetros `--include-all-resource-types` e `--resource-types`. Este exemplo verifica todos os tipos de recursos ao definir o escopo da resposta das instâncias do EC2 para as instâncias em execução ou pendentes.

```
aws ec2 describe-image-references \
    --image-ids ami-0abcdef1234567890 ami-1234567890abcdef0 \
    --include-all-resource-types \
    --resource-types 'ResourceType=ec2:Instance,ResourceTypeOptions=[{OptionName=state-name,OptionValues=[running,pending]}]'
```

------
#### [ PowerShell ]

**Para verificar as referências de AMIs para tipos de recursos específicos**  
Use o cmdlet [Get-EC2ImageReference](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageReference.html) com o parâmetro `-ResourceType`. O exemplo a seguir verifica as instâncias do EC2 (definição do escopo por estado da instância), modelos de inicialização (considerando as 20 versões mais recentes de modelos de inicialização) e outros tipos de recursos específicos.

```
Get-EC2ImageReference `
    -ImageId 'ami-0abcdef1234567890', 'ami-1234567890abcdef0' `
    -ResourceType @(
        @{
            ResourceType = 'ec2:Instance'
            ResourceTypeOptions = @(
                @{
                    OptionName = 'state-name'
                    OptionValues = @('running', 'pending')
                }
            )
        },
        @{
            ResourceType = 'ec2:LaunchTemplate'
            ResourceTypeOptions = @(
                @{
                    OptionName = 'version-depth'
                    OptionValues = @('20')
                }
            )
        },
        @{
            ResourceType = 'ssm:Parameter'
        },
        @{
            ResourceType = 'imagebuilder:ImageRecipe'
        },
        @{
            ResourceType = 'imagebuilder:ContainerRecipe'
        }
    )
```

**Para verificar as referências de AMIs para todos os tipos de recursos compatíveis**  
Use o cmdlet [Get-EC2ImageReference](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageReference.html) com o parâmetro `-IncludeAllResourceTypes`.

```
Get-EC2ImageReference `
    -ImageId 'ami-0abcdef1234567890', 'ami-1234567890abcdef0' `
    -IncludeAllResourceTypes
```

**Para verificar as referências de AMIs para todos os tipos de recursos compatíveis e opções específicas**  
Use o cmdlet [Get-EC2ImageReference](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageReference.html) com os parâmetros `-IncludeAllResourceTypes` e `-ResourceType`. Este exemplo verifica todos os tipos de recursos ao definir o escopo da resposta das instâncias do EC2 para as instâncias em execução ou pendentes.

```
Get-EC2ImageReference `
    -ImageId 'ami-0abcdef1234567890', 'ami-1234567890abcdef0' `
    -IncludeAllResourceTypes `
    -ResourceType @(
        @{
            ResourceType = 'ec2:Instance'
            ResourceTypeOptions = @(
                @{
                    OptionName = 'state-name'
                    OptionValues = @('running', 'pending')
                }
            )
        }
    )
```

------