Moduły CloudFormation
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
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.
AWSTemplateFormatVersion: 2010-09-09 Resources: Bucket: Type: PrzemekMalak::S3::MyBucket::MODULE
