

# 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}}'
```