web-dev-qa-db-fra.com

Référencer la chaîne sécurisée du magasin AWS Paramètre dans le modèle de cloudformation

Coincé avec l'utilisation de Securstring du magasin de paramètres AWS. J'essaie de faire référence au mot de passe de base de données comme suit:

DatabasePassword:
    Type: AWS::SSM::Parameter::Value<SecureString>
    NoEcho: 'true'
    Default: /environment/default/database_password
    Description: The database admin account password

Cela jette une erreur:

Une erreur est survenue (validationError) lors de l'appel de la Fonctionnement de Creeestack: Erreur de format de modèle: Type de paramètre non reconnu: Securstring

Cependant, si je me réfère à ce paramètre _ String au lieu de SecureString _ il jette une erreur différente:

Une erreur s'est produite (validationError) lors de l'appel de l'opération CreeTestack: Paramètres [/ Environnement/Default/Databile_Password] Référencé par Modèle N'A TYPE PAS SOUTENU PAS Pris en charge par CloudFormation.

J'ai essayé d'utiliser '{{resolve:ssm-secure:parameter-name:version}}' et cela fonctionne pour la configuration de la base de données:

MasterUsername: !Ref DatabaseUsername
MasterUserPassword: '{{resolve:ssm-secure:/environment/default/database_password:1}}'

Cependant, j'utilise des conteneurs AWS Fargate Docker où je fournis ces valeurs en tant que variables d'environnement:

Environment:
  - Name: DATABASE_HOSTNAME
    Value: !Ref DatabaseHostname
  - Name: DATABASE_USERNAME
     Value: !Ref DatabaseUsername
  - Name: DATABASE_PASSWORD
    Value: '{{resolve:ssm-secure:/environment/default/database_password:1}}'

Cela jette une erreur:

Une erreur s'est produite (validationError) lors de l'appel de Createstack Operation: SSM sécurisé Référence n'est pas pris en charge dans: [AWS :: ECS :: TasteDefinition/Propriétés/ContainerDéfinitions/Environnement]

Impossible d'utiliser des chaînes sécurisées dans ma mise en œuvre. Y a-t-il une solution de contournement à ce problème? AWS a annoncé son soutien pour SecureString l'année dernière, mais incapable de trouver la documentation. Tout ce que j'ai trouvé était d'utiliser resolve qui ne fonctionne que dans certains cas.

Références:

1

2

6
kk.

Le gestionnaire AWS Secrets peut être utilisé pour obtenir des secrets pour les modèles de cloudformation, même où ils ne sont pas des choses telles que des mots de passe de base de données.

Voici un lien vers la documentation: https://docs.aws.amazon.com/awscloudformation/latest/userguide/dynamic-references.html#dynamic-references-SecretsManager

Il y a 3 parties à un secret de Secrets Manager:

  • Le nom du secret par ex. Prod_db_password
  • La clé du secret par ex. Db_password
  • Et la valeur secrète réelle

Vous résoudre ensuite le secret ci-dessus dans votre modèle de cloudformation en utilisant:

'{{resolve:secretsmanager:PROD_DB_PASSWORD:SecretString:DB_PASSWORD}}'
0
lemming