[PYTHON] Weitergabe vertraulicher Informationen von SSM an ECS mit CloudFormation

Infomation Source Es wurde vor einiger Zeit veröffentlicht, aber es ist weniger als ein Jahr her, also werde ich aufschreiben, um welche Art von Update es sich handelt.

CloudFormation Release List 2019/6/13 Release Features

AWS::ECS::TaskDefinition Die folgenden Eigenschaften sind für den Eigenschaftentyp ContainerDefinition verfügbar:

What's new?

Aktualisiert, wie vertrauliche Informationen aus dem Secrets Manager-Geheimnis oder dem SSM-Parameterspeicher in ECS-Aufgabendefinitionen abgerufen werden

Before

Kann nur über JSON oder Webkonsole festgelegt werden

After

Kann jetzt in CloudFormation festgelegt werden

↓ Mit anderen Worten

Komplett mit CloudFormation, einschließlich Aufgabendefinitionen sowie Cluster- und Dienstdefinitionen

\ Ich bin glücklich /

How

Wenn Sie nur das relevante Teil extrahieren, sieht es so aus

sample1.yml


Resources:
  taskDefinition:
    Properties:
      ContainerDefinitions:
          Secrets:
            - Name: HOGE
              ValueFrom: hoge

Die gesamte Aufgabendefinition sieht so aus

sample2.yml


AWSTemplateFormatVersion: 2010-09-09
Parameters:
Abkürzung

Resources:
  TaskDefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
      RequiresCompatibilities:
        - FARGATE
      Cpu: 256
      Memory: 512
      ExecutionRoleArn: ecsTaskExecutionRole
      Family: !Ref TaskFamilyName
      NetworkMode: awsvpc
      ContainerDefinitions:
        - Name: !Ref TaskFamilyName
          Image: !Sub ${AWS::AccountId}.dkr.ecr.ap-northeast-1.amazonaws.com/hoge
          Command: !Ref TaskCommand
          MemoryReservation: 128
          ReadonlyRootFilesystem: true
          Secrets:
            - Name: SECURE_TEST_STRING
              ValueFrom: secure_test_string
          LogConfiguration:
            LogDriver: awslogs
            Options:
              awslogs-group: !Ref TaskLogsGroup
              awslogs-region: ap-northeast-1
              awslogs-stream-prefix: ecs

Try

Registrieren Sie secure_test_string und seinen Wert im SSM-Parameterspeicher. image.png

Wenn Sie beispielsweise Python-Code schreiben, der auf ECS wie folgt ausgeführt werden soll, können Sie den Wert erhalten.

sample3.py


from logging import getLogger
from os import environ as env

logger = getLogger(__name__)

logger.info('hoge / ' + env['SECURE_TEST_STRING'])

Ergebnis der Bereitstellung und Ausführung ↓ image.png

Sie können es bekommen: tada:

FYI https://aws.amazon.com/jp/blogs/news/securing-credentials-using-aws-secrets-manager-with-aws-fargate/ https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-secret.html

Recommended Posts

Weitergabe vertraulicher Informationen von SSM an ECS mit CloudFormation
Sammeln von Informationen von Twitter mit Python (Twitter API)
Konvertieren Sie mit pdfplumber von PDF in CSV
Sammeln von Informationen von Twitter mit Python (Umgebungskonstruktion)
Sichern Sie mit rsync von QNAP auf Linux
Von der Python-Umgebungskonstruktion zur virtuellen Umgebungskonstruktion mit Anaconda
Wählen Sie PDFMiner, um Textinformationen aus PDF zu extrahieren
Python-Skript zum Abrufen von Notizinformationen mit REAPER
Manchmal möchten Sie mit DRF (Django REST Framework) auf View information from Serializer zugreifen.