

# Obter valores armazenados em outros serviços usando referências dinâmicas
<a name="dynamic-references"></a>

As referências dinâmicas fornecem uma maneira conveniente de especificar valores externos armazenados e gerenciados em outros serviços e dissociar informações confidenciais de seus modelos de infraestrutura como código. O CloudFormation recupera o valor da referência especificada quando necessário durante operações de pilha e conjunto de alterações.

Com as referências dinâmicas, é possível:
+ **Usar strings seguras**: para dados confidenciais, sempre use parâmetros de strings seguros no AWS Systems Manager Parameter Store ou segredos no AWS Secrets Manager para garantir que seus dados sejam criptografados em repouso.
+ **Limitar o acesso**: restrinja o acesso aos parâmetros do Parameter Store ou aos segredos do Secrets Manager somente a entidades principais e perfis autorizados.
+ **Faça a rotação das credenciais**: faça regularmente a rotação dos seus dados confidenciais armazenados no Parameter Store ou no Secrets Manager para manter um alto nível de segurança.
+ **Automatize a rotação**: use os recursos de rotação automática do Secrets Manager para atualizar e distribuir periodicamente seus dados confidenciais em seus ambientes e aplicações.

## Considerações gerais
<a name="dynamic-references-considerations"></a>

Antes de especificar referências dinâmicas em seus modelos do CloudFormation, leve em conta as seguintes considerações gerais:
+ Evite referências dinâmicas, ou dados confidenciais, nas propriedades do recurso que fazem parte do identificador primário de um recurso. O CloudFormation pode usar o valor em texto simples real no identificador do recurso primário, o que pode ser um risco à segurança. Esse ID de recurso pode aparecer em quaisquer saídas ou destinos derivados.

  Para determinar quais propriedades de recursos compreendem o identificador primário de um tipo de recurso, consulte a documentação de referência de recursos desse recurso na [Referência de tipos de propriedades e recursos da AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-template-resource-type-ref.html). Na seção **Return values** (Valores de retorno), o valor de retorno da função `Ref` representa as propriedades do recurso que compõem o identificador primário do tipo de recurso.
+ Você pode incluir até 60 referências dinâmicas em um modelo de pilha.
+ Se você estiver usando transformações (como `AWS::Include` ou `AWS::Serverless`), o CloudFormation não resolverá referências dinâmicas antes de aplicar a transformação. Em vez disso, ele passa a string literal da referência dinâmica para a transformação e resolve as referências quando você executa o conjunto de alterações usando esse modelo.
+ Referências dinâmicas não podem ser usadas para valores seguros (como os armazenados no Parameter Store ou no Secrets Manager) em recursos personalizados. 
+ Também não há suporte para referências dinâmicas em metadados `AWS::CloudFormation::Init` e propriedades `UserData` do Amazon EC2.
+ Não crie uma referência dinâmica que termine com uma barra invertida (\$1). O CloudFormation não consegue resolver essas referências, o que fará com que as operações de pilha falhem.

Os tópicos a seguir fornecem informações e outras considerações sobre o uso de referências dinâmicas.

**Topics**
+ [Considerações gerais](#dynamic-references-considerations)
+ [Obter um valor em texto simples do Systems Manager Parameter Store](dynamic-references-ssm.md)
+ [Obter um valor de string segura do Systems Manager Parameter Store](dynamic-references-ssm-secure-strings.md)
+ [Obtenha um segredo ou valor secreto do Secrets Manager](dynamic-references-secretsmanager.md)

# Obter um valor em texto simples do Systems Manager Parameter Store
<a name="dynamic-references-ssm"></a>

Ao criar um modelo do CloudFormation, talvez você queira usar valores de texto simples armazenados no Parameter Store. O Parameter Store é um recurso do AWS Systems Manager. Para ver uma introdução ao Parameter Store, consulte [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) no *Guia do usuário do AWS Systems Manager*. 

Para usar um valor de texto simples do Parameter Store em seu modelo, você usa uma referência dinâmica `ssm`. Essa referência permite acessar valores de parâmetros do tipo `String` ou `StringList` no Parameter Store. 

Para verificar qual versão de uma referência dinâmica `ssm` será usada em uma operação de pilha, crie um conjunto de alterações para a operação de pilha. Em seguida, revise o modelo processado na guia **Modelo**. Para obter mais informações, consulte [Criar um conjunto de alterações para uma pilha do CloudFormation](using-cfn-updating-stacks-changesets-create.md).

Ao usar referências dinâmicas do `ssm`, há algumas considerações importantes que você deve ter em mente:
+ O CloudFormation não oferece suporte à detecção de desvio em referências dinâmicas. Para referências dinâmicas `ssm` em que você não especificou a versão do parâmetro, recomendamos que, se você atualizar a versão do parâmetro no Systems Manager, também execute uma operação de atualização de pilha em todas as pilhas que incluam a referência dinâmica `ssm` a fim de obter a versão mais recente do parâmetro.
+ Para usar uma referência dinâmica `ssm` na seção `Parameters` do modelo do CloudFormation, é necessário incluir um número de versão. O CloudFormation não permite que você faça referência a um valor do Parameter Store sem um número de versão nessa seção. Como alternativa, é possível definir seu parâmetro como um tipo de parâmetro do Systems Manager em seu modelo. Ao fazer isso, você pode especificar uma chave de parâmetros do Systems Manager como o valor padrão para seu parâmetro. Em seguida, o CloudFormation recuperará a versão mais recente do valor do parâmetro no Parameter Store sem que você precise especificar um número de versão. Isso pode tornar seus modelos mais simples e fáceis de manter. Para obter mais informações, consulte [Especificar recursos existentes no runtime com tipos de parâmetros fornecidos pelo CloudFormation](cloudformation-supplied-parameter-types.md).
+ Para recursos personalizados, o CloudFormation resolve referências dinâmicas `ssm` antes de enviar a solicitação ao recurso personalizado.
+ O CloudFormation não oferece suporte ao uso de referências dinâmicas para fazer referência a um parâmetro compartilhado de outra Conta da AWS.
+ O CloudFormation não oferece suporte ao uso de rótulos de parâmetros do Systems Manager em referências dinâmicas.

## Permissões
<a name="dynamic-references-ssm-permissions"></a>

Para especificar um parâmetro armazenado no Systems Manager Parameter Store, é necessário ter permissão para chamar [https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html) para o parâmetro especificado. Para saber como criar políticas do IAM que fornecem acesso a parâmetros específicos do Systems Manager, consulte [Restringir o acesso a parâmetros do Systems Manager usando políticas do IAM](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-access.html) no *Guia do usuário do AWS Systems Manager*.

## Padrão de referência
<a name="dynamic-references-ssm-pattern"></a>

Para fazer referência a um valor de texto simples armazenado no Parameter Store do Systems Manager em seu modelo do CloudFormation, use este padrão de referência `ssm`.

```
{{resolve:ssm:parameter-name:version}}
```

Sua referência deve aderir ao seguinte padrão de expressão regular para parameter-name e version:

```
{{resolve:ssm:[a-zA-Z0-9_.\-/]+(:\d+)?}}
```

`parameter-name`  
O nome do parâmetro no Parameter Store. O nome do parâmetro faz distinção entre maiúsculas e minúsculas.  
Obrigatório.

`version`  
Um número inteiro que especifica a versão do parâmetro a ser usada. Se você não especificar a versão exata, o CloudFormation usará a versão mais recente do parâmetro sempre que você criar ou atualizar a pilha. Para obter mais informações, consulte [Trabalhar com versões de parâmetros](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-versions.html) no *Guia do usuário do AWS Systems Manager*  
Opcional.

## Exemplos
<a name="dynamic-references-ssm-examples"></a>

**Topics**
+ [Parâmetro do ID da AMI pública](#dynamic-references-ssm-public-ami-example)
+ [Parâmetro do ID da AMI personalizado](#dynamic-references-ssm-custom-ami-example)

### Parâmetro do ID da AMI pública
<a name="dynamic-references-ssm-public-ami-example"></a>

O exemplo a seguir cria uma instância do EC2 que faz referência a um parâmetro da AMI pública. A referência dinâmica recupera o ID da AMI do Amazon Linux 2023 mais recente do parâmetro público. Para obter mais informações sobre parâmetros públicos, consulte [Descobrir parâmetros públicos no Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-finding-public-parameters.html) no *Guia do usuário do AWS Systems Manager*.

#### JSON
<a name="dynamic-references-ssm-public-ami-example.json"></a>

```
{
    "Resources": {
        "MyInstance": {
            "Type": "AWS::EC2::Instance",
            "Properties": {
                "ImageId": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}",
                "InstanceType": "t2.micro"
            }
        }
    }
}
```

#### YAML
<a name="dynamic-references-ssm-public-ami-example.yaml"></a>

```
Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}'
      InstanceType: t2.micro
```

### Parâmetro do ID da AMI personalizado
<a name="dynamic-references-ssm-custom-ami-example"></a>

O exemplo a seguir cria um modelo de execução do EC2 que faz referência a um ID de AMI personalizada armazenada no Parameter Store. A referência dinâmica recupera o ID da AMI para a versão *`2`* do parâmetro `golden-ami` no momento em que uma instância é executada a partir do modelo de execução.

#### JSON
<a name="dynamic-references-ssm-custom-ami-example.json"></a>

```
{
    "Resources": {
        "MyLaunchTemplate": {
            "Type": "AWS::EC2::LaunchTemplate",
            "Properties": {
                "LaunchTemplateName": {
                    "Fn::Sub": "${AWS::StackName}-launch-template"
                },
                "LaunchTemplateData": {
                    "ImageId": "{{resolve:ssm:golden-ami:2}}",
                    "InstanceType": "t2.micro"
                }
            }
        }
    }
}
```

#### YAML
<a name="dynamic-references-ssm-custom-ami-example.yaml"></a>

```
Resources:
  MyLaunchTemplate:
    Type: AWS::EC2::LaunchTemplate
    Properties: 
      LaunchTemplateName: !Sub ${AWS::StackName}-launch-template
      LaunchTemplateData:
        ImageId: '{{resolve:ssm:golden-ami:2}}'
        InstanceType: t2.micro
```

# Obter um valor de string segura do Systems Manager Parameter Store
<a name="dynamic-references-ssm-secure-strings"></a>

No CloudFormation, é possível usar dados confidenciais, como senhas ou chaves de licença, sem expô-los diretamente em seus modelos, armazenando os dados confidenciais como uma "string segura" no AWS Systems Manager Parameter Store. Para ver uma introdução ao Parameter Store, consulte [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) no *Guia do usuário do AWS Systems Manager*.

Para usar uma string segura do Parameter Store em seu modelo, use uma referência dinâmico `ssm-secure`. O CloudFormation nunca armazena o valor real do parâmetro. Em vez disso, ele armazena apenas a referência dinâmica literal, que contém o nome do parâmetro de texto simples da string segura. 

Durante a criação ou as atualizações da pilha, o CloudFormation acessa o valor da string segura conforme necessário, sem expor o valor real. As strings seguras só podem ser usadas para propriedades de recursos que oferecem suporte ao padrão de referência dinâmica `ssm-secure`. Para obter mais informações, consulte [Recursos que oferecem suporte a padrões de parâmetros dinâmicos para strings seguras](#template-parameters-dynamic-patterns-resources).

O CloudFormation não retorna o valor real do parâmetro para strings seguras em nenhuma chamada de API. Ele retorna apenas a referência dinâmica literal. Ao comparar alterações usando conjuntos de alterações, o CloudFormation compara somente a string de referência dinâmica literal. Ele não resolve nem compara os valores reais das strings seguras.

Ao usar referências dinâmicas do `ssm-secure`, há algumas considerações importantes que você deve ter em mente:
+ O CloudFormation não pode acessar valores do Parameter Store de outras Contas da AWS.
+ O CloudFormation não oferece suporte ao uso de rótulos de parâmetros do Systems Manager ou de parâmetros públicos em referências dinâmicas.
+ O Systems Manager não oferece suporte a strings seguras nas regiões `cn-north-1` e `cn-northwest-1`.
+ No momento, as referências dinâmicas para valores seguros, como `ssm-secure`, não são compatíveis com recursos personalizados.
+ Se o CloudFormation precisar reverter uma atualização de pilha e a versão anteriormente especificada de um parâmetro de string segura não estiver mais disponível, essa operação de reversão falhará. Nesses casos, você tem duas opções:
  + Use `CONTINUE_UPDATE_ROLLBACK` para ignorar o recurso.
  + Recrie o parâmetro de string segura no Repositório de parâmetros do Systems Manager e atualize-o até que a versão do parâmetro atinja a versão usada no modelo. Em seguida, use `CONTINUE_UPDATE_ROLLBACK` sem ignorar o recurso.

## Recursos que oferecem suporte a padrões de parâmetros dinâmicos para strings seguras
<a name="template-parameters-dynamic-patterns-resources"></a>

Os recursos que oferecem suporte ao padrão de referência dinâmica `ssm-secure` incluem:


| Recurso | Tipo de propriedade | Propriedades | 
| --- | --- | --- | 
| [AWS::DirectoryService::MicrosoftAD](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-directoryservice-microsoftad.html) |  | `Password` | 
| [AWS::DirectoryService::SimpleAD](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-directoryservice-simplead.html) |  | `Password` | 
| [AWS::ElastiCache::ReplicationGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticache-replicationgroup.html) |  | `AuthToken` | 
| [AWS::IAM::User](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-user.html) | [LoginProfile](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-iam-user-loginprofile.html) | `Password` | 
| [AWS::KinesisFirehose::DeliveryStream](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-kinesisfirehose-deliverystream.html) | [RedshiftDestinationConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-kinesisfirehose-deliverystream-redshiftdestinationconfiguration.html) | `Password` | 
| [AWS::OpsWorks::App](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-opsworks-app.html) | [Fonte](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-opsworks-app-source.html) | `Password` | 
| [AWS::OpsWorks::Stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-opsworks-stack.html) | [CustomCookbooksSource](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-opsworks-stack-source.html) | `Password` | 
| [AWS::OpsWorks::Stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-opsworks-stack.html) | [RdsDbInstances](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-opsworks-stack-rdsdbinstance.html) | `DbPassword` | 
| [AWS::RDS::DBCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbcluster.html) |  | `MasterUserPassword` | 
| [AWS::RDS::DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html) |  | `MasterUserPassword`  | 
| [AWS::Redshift::Cluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-redshift-cluster.html) |  | `MasterUserPassword` | 

## Padrão de referência
<a name="dynamic-references-ssm-secure-pattern"></a>

Para fazer referência a um valor string segura do Parameter Store do Systems Manager em seu modelo do CloudFormation, use este padrão de referência `ssm-secure`.

```
{{resolve:ssm-secure:parameter-name:version}}
```

Sua referência deve aderir ao seguinte padrão de expressão regular para parameter-name e version:

```
{{resolve:ssm-secure:[a-zA-Z0-9_.\-/]+(:\d+)?}}
```

`parameter-name`  
O nome do parâmetro no Parameter Store. O nome do parâmetro faz distinção entre maiúsculas e minúsculas.  
Obrigatório.

`version`  
Um número inteiro que especifica a versão do parâmetro a ser usada. Se você não especificar a versão exata, o CloudFormation usará a versão mais recente do parâmetro sempre que você criar ou atualizar a pilha. Para obter mais informações, consulte [Trabalhar com versões de parâmetros](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-versions.html) no *Guia do usuário do AWS Systems Manager*  
Opcional.

## Exemplo
<a name="dynamic-references-ssm-secure-example"></a>

O exemplo a seguir usa uma referência dinâmica `ssm-secure` para definir a senha de um usuário do IAM como uma string segura armazenada no Parameter Store. Conforme especificado, CloudFormation usará a versão *`10`* do parâmetro `IAMUserPassword` para operações de pilha e conjunto de alterações.

### JSON
<a name="dynamic-references-ssm-secure-example.json"></a>

```
  "MyIAMUser": {
    "Type": "AWS::IAM::User",
    "Properties": {
      "UserName": "MyUserName",
      "LoginProfile": {
        "Password": "{{resolve:ssm-secure:IAMUserPassword:10}}"
      }
    }
  }
```

### YAML
<a name="dynamic-references-ssm-secure-example.yaml"></a>

```
  MyIAMUser:
    Type: AWS::IAM::User
    Properties:
      UserName: 'MyUserName'
      LoginProfile:
        Password: '{{resolve:ssm-secure:IAMUserPassword:10}}'
```

# Obtenha um segredo ou valor secreto do Secrets Manager
<a name="dynamic-references-secretsmanager"></a>

O Secrets Manager é um serviço que permite armazenar e gerenciar segredos com segurança, como credenciais de banco de dados, senhas e chaves de API de terceiros. Usando o Secrets Manager, você pode armazenar e controlar o acesso a esses segredos centralmente, para que você possa substituir credenciais codificadas no seu código (incluindo senhas) por uma chamada de API para o Secrets Manager recuperar o segredo de forma programática. Para obter mais informações, consulte [O que é o AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) no * Guia do usuário do AWS Secrets Manager*.

Use referências dinâmicas `secretsmanager` para usar todos os segredos ou valores secretos armazenados no Secrets Manager em seus modelos do CloudFormation.

## Práticas recomendadas
<a name="dynamic-references-secretsmanager-best-practices"></a>

Siga estas práticas recomendadas ao usar as referências dinâmicas do Secrets Manager em seus modelos do CloudFormation:
+ **Use referências sem versão para seus modelos do CloudFormation**: armazene credenciais no Secrets Manager e use referências dinâmicas sem especificar parâmetros `version-stage` ou `version-id` para suportar fluxos de trabalho adequados de rodízio de segredos.
+ **Aproveite o rodízio automático**: use o atributo de rodízio automático do Secrets Manager com referências dinâmicas sem versão para gerenciamento de credenciais. Isso garante que suas credenciais sejam atualizadas regularmente sem exigir alterações no modelo. Para ter mais informações, consulte [Alternar segredos do AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html).
+ **Use referências versionadas com moderação**: especifique somente parâmetros explícitos `version-stage` ou `version-id` para cenários específicos, como situações de teste ou reversão.

## Considerações
<a name="dynamic-references-secretsmanager-considerations"></a>

Ao usar referências dinâmicas do `secretsmanager`, existem considerações importantes que devem ser consideradas:
+ O CloudFormation não rastreia qual versão de um segredo foi usada em implantações anteriores. Planeje cuidadosamente sua estratégia de gerenciamento de segredo antes de implementar referências dinâmicas. Use referências sem versão quando possível para aproveitar o rodízio automático de segredos. Monitore e valide as atualizações de recursos ao fazer alterações nas configurações de referência dinâmica, como ao fazer a transição de referências dinâmicas não versionadas para referências dinâmicas versionadas e vice-versa.
+ Atualizar somente o valor do segredo no Secrets Manager não faz com que o CloudFormation recupere automaticamente o novo valor. O CloudFormation recupera o valor do segredo somente durante a criação de recursos ou atualizações que modificam o recurso que contém a referência dinâmica. 

  Por exemplo, suponha que seu modelo inclua um recurso [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html) em que a propriedade `MasterPassword` esteja definida como uma referência dinâmica do Secrets Manager. Depois de criar uma pilha a partir desse modelo, você atualiza o valor do segredo no Secrets Manager. No entanto, a propriedade `MasterPassword` mantém o valor da senha antiga. 

  Para aplicar o novo valor de segredo, você precisará modificar o recurso `AWS::RDS::DBInstance` em seu modelo do CloudFormation e realizar uma atualização da pilha. 

  Para evitar esse processo manual no futuro, considere usar o Secrets Manager para fazer o rodízio automático do segredo. 
+ No momento, as referências dinâmicas para valores seguros, como `secretsmanager`, não são compatíveis com recursos personalizados.
+ A referência dinâmica `secretsmanager` pode ser usada em todas as propriedades de recursos. Usar a referência dinâmica `secretsmanager` indica que nem o Secrets Manager, nem o CloudFormation deve registrar ou persistir qualquer valor secreto resolvido. No entanto, o valor secreto pode aparecer no serviço cujo recurso está sendo usado. Revise seu uso para evitar o vazamento de dados secretos.

## Permissões
<a name="dynamic-references-secretsmanager-permissions"></a>

Para especificar um segredo armazenado no Secrets Manager, você deve ter permissão para chamar [https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html) para o segredo.

## Padrão de referência
<a name="dynamic-references-secretsmanager-pattern"></a>

Para fazer referência a segredos do Secrets Manager em seu modelo do CloudFormation, use este padrão de referência `secretsmanager`.

```
{{resolve:secretsmanager:secret-id:secret-string:json-key:version-stage:version-id}}
```

`secret-id`  
O nome ou ARN completo do segredo.  
Para acessar um segredo na sua Conta da AWS, é necessário especificar apenas o nome do segredo. Para acessar um segredo em uma Conta da AWS diferente, especifique o ARN completo do segredo.  
Obrigatório.

`secret-string`  
O único valor aceito é `SecretString`. O padrão é `SecretString`.

`json-key`  
O nome da chave do par de chave-valor cujo valor você deseja recuperar. Se você não especificar um `json-key`, o CloudFormation recuperará todo o texto do segredo.  
Esse segmento não pode incluir o caractere de dois pontos ( `:`).

`version-stage`  
O rótulo de preparação da versão do segredo a ser utilizada. O Secrets Manager usa rótulos de preparação para acompanhar diferentes versões durante o processo de alternância. Se você usar `version-stage`, não especifique `version-id`. Se você não especificar `version-stage` ou `version-id`, o padrão é a versão `AWSCURRENT`.  
Esse segmento não pode incluir o caractere de dois pontos ( `:`).

`version-id`  
O identificador exclusivo da versão do segredo a usar. Se você especificar `version-id`, não especifique `version-stage`. Se você não especificar `version-stage` ou `version-id`, o padrão é a versão `AWSCURRENT`.  
Esse segmento não pode incluir o caractere de dois pontos ( `:`).

## Exemplos
<a name="dynamic-references-secretsmanager-examples"></a>

**Topics**
+ [Recuperar valores de nome de usuário e senha de um segredo](#dynamic-references-secretsmanager-examples-user-name-and-password)
+ [Recuperar todo o SecretString](#dynamic-references-secretsmanager-examples-entire-secretstring)
+ [Recuperar um valor de uma versão específica de um segredo](#dynamic-references-secretsmanager-examples-specific-version)
+ [Recuperar segredos de outro Conta da AWS](#dynamic-references-secretsmanager-examples-secrets-from-another-account)

### Recuperar valores de nome de usuário e senha de um segredo
<a name="dynamic-references-secretsmanager-examples-user-name-and-password"></a>

O exemplo a seguir [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html) recupera os valores de nome de usuário e senha armazenados no segredo `MySecret`. Este exemplo mostra o padrão recomendado para referências dinâmicas sem versão, que usa automaticamente a versão `AWSCURRENT` e dá suporte aos fluxos de trabalho de rodízio do Secrets Manager sem exigir alterações no modelo.

#### JSON
<a name="dynamic-references-secretsmanager-examples-user-name-and-password.json"></a>

```
{
    "MyRDSInstance": {
        "Type": "AWS::RDS::DBInstance",
        "Properties": {
            "DBName": "MyRDSInstance",
            "AllocatedStorage": "20",
            "DBInstanceClass": "db.t2.micro",
            "Engine": "mysql",
            "MasterUsername": "{{resolve:secretsmanager:MySecret:SecretString:username}}",
            "MasterUserPassword": "{{resolve:secretsmanager:MySecret:SecretString:password}}"
        }
    }
}
```

#### YAML
<a name="dynamic-references-secretsmanager-examples-user-name-and-password.yaml"></a>

```
  MyRDSInstance:
    Type: AWS::RDS::DBInstance
    Properties:
      DBName: MyRDSInstance
      AllocatedStorage: '20'
      DBInstanceClass: db.t2.micro
      Engine: mysql
      MasterUsername: '{{resolve:secretsmanager:MySecret:SecretString:username}}'
      MasterUserPassword: '{{resolve:secretsmanager:MySecret:SecretString:password}}'
```

### Recuperar todo o SecretString
<a name="dynamic-references-secretsmanager-examples-entire-secretstring"></a>

A referência dinâmica a seguir recupera o `SecretString` para `MySecret`.

```
{{resolve:secretsmanager:MySecret}}
```

Alternativa:

```
{{resolve:secretsmanager:MySecret::::}}
```

### Recuperar um valor de uma versão específica de um segredo
<a name="dynamic-references-secretsmanager-examples-specific-version"></a>

A referência dinâmica a seguir recupera o valor `password` para a versão `AWSPREVIOUS` do `MySecret`.

```
{{resolve:secretsmanager:MySecret:SecretString:password:AWSPREVIOUS}}
```

### Recuperar segredos de outro Conta da AWS
<a name="dynamic-references-secretsmanager-examples-secrets-from-another-account"></a>

A referência dinâmica a seguir recupera o `SecretString` para `MySecret` que esteja em outra Conta da AWS. Você deve especificar o ARN do segredo completo para acessar segredos em outra Conta da AWS.

```
{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret}}
```

A referência dinâmica a seguir recupera o valor `password` para `MySecret` que esteja em outra Conta da AWS. Você deve especificar o ARN do segredo completo para acessar segredos em outra Conta da AWS.

```
{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret:SecretString:password}}
```