Skip to content
malak.cloud
  • Kontakt
  • O mnie
  • Search Icon

malak.cloud

Cloud Native na co dzień

Moduły CloudFormation

Moduły CloudFormation

25 listopada 2020

Jak co roku, przed re:Inventem AWS prezentuje sporo nowości. Jedną z nich jest możliwość zdefiniowania i używania częściej niż raz zasobów jako moduły CloudFormation. Na taką możliwość czekałem od dawna.

Przykładowe moduły AWS prezentuje w repozytorium na GitHubie. Nie mogłem sobie jednak darować i spróbowałem napisać bardzo prosty moduł samemu.

Jak to działa?

Potrzebne będzie cli do CloudFormation. Istalacja jest bardzo prosta:

pip install --upgrade cloudformation-cli

Pierwszym krokiem jest inicjalizacja

cfn init

Wybieramy tworzenie modułu, podajemy jego nazwę. W utworzonym katalogu fragments dostajemy przykładowy plik. Ja go usunąłem i utworzyłem własny, prosty szablon z bucketem S3.

AWSTemplateFormatVersion: 2010-09-09
Description: My first CloudFormation module
Resources:
  MyBucket:
    Type: AWS::S3::Bucket
    Properties:
      PublicAccessBlockConfiguration:
          BlockPublicAcls: True
          BlockPublicPolicy: True
          IgnorePublicAcls: True
          RestrictPublicBuckets: True
Zanim doczytałem, że na chwilę obecną moduły wspierają tylko jsona utworzyłem zasoby w yamlu. Działa. Może jednak w przypadku wykorzystania produkcyjnego lepiej pozostać przy jsonie.
Można go oczywiście przetestować za pomocą cfn-lint, a jeżeli wszystko jest w porządku wrzucamy nasz moduł do repozytorium

cfn submit

Po dłuższej chwili cli informauje nas o rejestracji modułu

Successfully submitted type. Waiting for registration with token '4980a78b-9d58-4a8f-a988-24cbe045cce8' to complete.
Registration complete.
{'ProgressStatus': 'COMPLETE', 'Description': 'Deployment is currently in DEPLOY_STAGE of status COMPLETED; ', 'TypeArn': 'arn:aws:cloudformation:eu-west-1:xxxxxxxxxxxx:type/module/PrzemekMalak-S3-MyBucket-MODULE', 'TypeVersionArn': 'arn:aws:cloudformation:eu-west-1:xxxxxxxxxxxx:type/module/PrzemekMalak-S3-MyBucket-MODULE/00000001', 'ResponseMetadata': {'RequestId': '471c7767-7006-411e-accf-428ead438f67', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '471c7767-7006-411e-accf-428ead438f67', 'content-type': 'text/xml', 'content-length': '697', 'date': 'Wed, 25 Nov 2020 08:26:49 GMT'}, 'RetryAttempts': 0}}

i jest on widoczny w naszym rejestrze jako prywatny.

Od tej chwili możemy już go użyć w swoich szablonach. Prosty przykład
AWSTemplateFormatVersion: 2010-09-09
Resources:
  Bucket:
    Type: PrzemekMalak::S3::MyBucket::MODULE
Po utworzeniu stacka można podejrzeć między innymi szablon, który był przetwarzany przez CloudFormation
i gotowe.

AWS
AWS

Post navigation

PREVIOUS
Czym jest dla mnie Cloud Native
NEXT
AWS News – listopad 2020
Comments are closed.
Cześć. Nazywam się Przemek Malak. Dzięki za wizytę. Mam nadzieję, że to o czym piszę Cię zainteresowało. Jeżeli chcesz ze mną pogadać, najłatwiej będzie przez LinkedIn.

Losowe wpisy

  • Jak wykryć aktywność roota na koncie AWS

    5 kwietnia 2021
  • AWS API Gateway

    29 czerwca 2017
  • Domain Storytelling

    6 listopada 2022
  • AWS API Gateway i dane.

    7 lipca 2017
  • SAM Accelerate

    4 lipca 2022
  • Apps
  • AWS
  • CloudNative
  • Cookbook
  • Data
  • DEV
  • GCP
  • IoT
  • Istio
  • k8s
  • Security
  • Social
  • GitHub
  • LinkedIn
© 2023   All Rights Reserved.