lynx   »   [go: up one dir, main page]

Stack refactoring - AWS CloudFormation

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Stack refactoring

Dengan pemfaktoran ulang tumpukan, Anda dapat mengatur ulang sumber daya di CloudFormation tumpukan sambil mempertahankan properti dan data sumber daya yang ada. Anda dapat memindahkan sumber daya antar tumpukan, membagi tumpukan besar menjadi yang lebih kecil, atau menggabungkan beberapa tumpukan menjadi satu tumpukan.

Cara kerja stack refactoring

Tumpukan refactoring melibatkan fase-fase ini:

  1. Menilai infrastruktur Anda saat ini — Tinjau CloudFormation tumpukan dan sumber daya yang ada untuk mengidentifikasi peluang pemfaktoran ulang tumpukan.

  2. Rencanakan refactor Anda — Tentukan bagaimana sumber daya harus diatur. Pertimbangkan dependensi, konvensi penamaan, dan batasan operasional Anda. Ini dapat mempengaruhi CloudFormation validasi nanti.

  3. Tentukan tumpukan tujuan — Tentukan tumpukan mana yang akan Anda refactor sumber daya. Anda dapat memindahkan sumber daya antara setidaknya 2 tumpukan, dan maksimal 5 tumpukan. Sumber daya dapat dipindahkan di antara tumpukan bersarang.

  4. Perbarui templat Anda — Ubah CloudFormation templat Anda untuk mencerminkan perubahan yang direncanakan, seperti memindahkan definisi sumber daya antar templat. Anda dapat mengganti nama logis IDs selama proses ini.

  5. Buat refactor tumpukan - Berikan daftar nama tumpukan dan templat yang ingin Anda refactor.

  6. Tinjau dampak refactor dan selesaikan konflik apa pun — CloudFormation memvalidasi template yang Anda berikan dan memeriksa dependensi lintas tumpukan, jenis sumber daya dengan masalah pembaruan tag, dan konflik ID logis sumber daya.

    Jika validasi berhasil, CloudFormation akan menghasilkan pratinjau tindakan refactor yang akan terjadi selama eksekusi.

    Jika validasi gagal, selesaikan masalah yang diidentifikasi dan coba lagi. Untuk konflik, berikan pemetaan ID logis sumber daya yang menunjukkan sumber dan tujuan sumber daya yang saling bertentangan.

  7. Jalankan refactor — Setelah mengonfirmasi perubahan sejajar dengan tujuan refactoring Anda, selesaikan stack refactor.

  8. Monitor — Lacak status eksekusi untuk memastikan operasi selesai dengan sukses.

Pertimbangan refactoring tumpukan

Saat Anda memfaktorkan ulang tumpukan Anda, ingatlah hal-hal berikut:

  • Operasi refactor tidak mengizinkan pembuatan sumber daya baru, penghapusan sumber daya, atau perubahan konfigurasi sumber daya.

  • Anda tidak dapat mengubah atau menambahkan parameter, kondisi, atau pemetaan baru selama refactor tumpukan. Solusi yang mungkin adalah memperbarui tumpukan Anda sebelum melakukan refactor.

  • Anda tidak dapat memfaktorkan ulang sumber daya yang sama menjadi beberapa tumpukan.

  • Anda tidak dapat memfaktorkan ulang sumber daya yang merujuk ke parameter semu yang nilainya berbeda antara tumpukan sumber dan tujuan, seperti. AWS::StackName

  • CloudFormation tidak mendukung tumpukan kosong. Jika refactoring akan meninggalkan tumpukan tanpa sumber daya, Anda harus terlebih dahulu menambahkan setidaknya satu sumber daya ke tumpukan itu sebelum Anda menjalankannya. create-stack-refactor Ini bisa menjadi sumber daya sederhana seperti AWS::SNS::Topic atauAWS::CloudFormation::WaitCondition. Misalnya:

    Resources: MySimpleSNSTopic: Type: AWS::SNS::Topic Properties: DisplayName: MySimpleTopic
  • Stack refactor tidak mendukung tumpukan yang memiliki kebijakan tumpukan yang dilampirkan, terlepas dari kebijakan apa yang diizinkan atau ditolak.

AWS CLI perintah untuk pemfaktoran ulang tumpukan

AWS CLI Perintah untuk stack refactoring meliputi:

  • create-stack-refactoruntuk memvalidasi dan menghasilkan pratinjau perubahan yang direncanakan.

  • describe-stack-refactoruntuk mengambil status dan detail operasi refactoring stack.

  • execute-stack-refactoruntuk menyelesaikan operasi refactoring stack yang divalidasi.

  • get-template untuk mengambil template untuk tumpukan yang ada.

  • list-stack-refactorsuntuk mencantumkan semua operasi pemfaktoran ulang tumpukan di akun Anda dengan status dan informasi dasarnya saat ini.

  • list-stack-refactor-actionsuntuk menampilkan pratinjau tindakan spesifik yang CloudFormation akan dilakukan pada setiap tumpukan dan sumber daya selama eksekusi refactor.

Memfaktorkan ulang tumpukan menggunakan AWS CLI

Gunakan prosedur berikut untuk memfaktorkan ulang tumpukan menggunakan. AWS CLI

  1. Gunakan perintah get-template untuk mengambil CloudFormation template untuk tumpukan yang ingin Anda refactor.

    aws cloudformation get-template --stack-name Stack1

    Ketika Anda memiliki template, gunakan lingkungan pengembangan terintegrasi (IDE) pilihan Anda untuk memperbaruinya untuk menggunakan struktur dan organisasi sumber daya yang diinginkan.

  2. Gunakan create-stack-refactorperintah dan berikan nama tumpukan dan template yang diperbarui untuk tumpukan untuk refactor. Sertakan --enable-stack-creation opsi CloudFormation untuk memungkinkan membuat tumpukan baru jika belum ada.

    aws cloudformation create-stack-refactor \ --stack-definitions \ StackName=Stack1,TemplateBody@=file://template1-updated.yaml \ StackName=Stack2,TemplateBody@=file://template2-updated.yaml \ --enable-stack-creation

    Perintah mengembalikan sebuah StackRefactorId yang akan Anda gunakan di langkah selanjutnya.

    { "StackRefactorId": "9c384f70-4e07-4ed7-a65d-fee5eb430841" }

    Jika konflik terdeteksi selama validasi template (yang dapat Anda konfirmasikan pada langkah berikutnya), gunakan create-stack-refactorperintah dengan --resource-mappings opsi.

    aws cloudformation create-stack-refactor \ --stack-definitions \ StackName=Stack1,TemplateBody@=file://template1-updated.yaml \ StackName=Stack2,TemplateBody@=file://template2-updated.yaml \ --enable-stack-creation \ --resource-mappings file://resource-mapping.json

    Berikut ini adalah contoh resource-mapping.json file.

    [ { "Source": { "StackName": "Stack1", "LogicalResourceId": "MySNSTopic" }, "Destination": { "StackName": "Stack2", "LogicalResourceId": "MyLambdaSNSTopic" } } ]
  3. Gunakan describe-stack-refactorperintah untuk memastikan Status adaCREATE_COMPLETE. Ini memverifikasi bahwa validasi selesai.

    aws cloudformation describe-stack-refactor \ --stack-refactor-id 9c384f70-4e07-4ed7-a65d-fee5eb430841

    Contoh output:

    { "StackRefactorId": "9c384f70-4e07-4ed7-a65d-fee5eb430841", "StackIds": [ "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack1/3e6a1ff0-94b1-11f0-aa6f-0a88d2e03acf", "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack2/5da91650-94b1-11f0-81cf-0a23500e151b" ], "ExecutionStatus": "AVAILABLE", "Status": "CREATE_COMPLETE" }
  4. Gunakan list-stack-refactor-actionsperintah untuk melihat pratinjau tindakan spesifik yang akan dilakukan.

    aws cloudformation list-stack-refactor-actions \ --stack-refactor-id 9c384f70-4e07-4ed7-a65d-fee5eb430841

    Contoh output:

    { "StackRefactorActions": [ { "Action": "MOVE", "Entity": "RESOURCE", "PhysicalResourceId": "MyTestLambdaRole", "Description": "No configuration changes detected.", "Detection": "AUTO", "TagResources": [], "UntagResources": [], "ResourceMapping": { "Source": { "StackName": "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack1/3e6a1ff0-94b1-11f0-aa6f-0a88d2e03acf", "LogicalResourceId": "MyLambdaRole" }, "Destination": { "StackName": "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack2/5da91650-94b1-11f0-81cf-0a23500e151b", "LogicalResourceId": "MyLambdaRole" } } }, { "Action": "MOVE", "Entity": "RESOURCE", "PhysicalResourceId": "MyTestFunction", "Description": "Resource configuration changes will be validated during refactor execution.", "Detection": "AUTO", "TagResources": [ { "Key": "aws:cloudformation:stack-name", "Value": "Stack2" }, { "Key": "aws:cloudformation:logical-id", "Value": "MyFunction" }, { "Key": "aws:cloudformation:stack-id", "Value": "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack2/5da91650-94b1-11f0-81cf-0a23500e151b" } ], "UntagResources": [ "aws:cloudformation:stack-name", "aws:cloudformation:logical-id", "aws:cloudformation:stack-id" ], "ResourceMapping": { "Source": { "StackName": "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack1/3e6a1ff0-94b1-11f0-aa6f-0a88d2e03acf", "LogicalResourceId": "MyFunction" }, "Destination": { "StackName": "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack2/5da91650-94b1-11f0-81cf-0a23500e151b", "LogicalResourceId": "MyFunction" } } } ] }
  5. Setelah meninjau dan mengonfirmasi perubahan Anda, gunakan execute-stack-refactorperintah untuk menyelesaikan operasi pemfaktoran ulang tumpukan.

    aws cloudformation execute-stack-refactor \ --stack-refactor-id 9c384f70-4e07-4ed7-a65d-fee5eb430841
  6. Gunakan describe-stack-refactorperintah untuk memantau status eksekusi.

    aws cloudformation describe-stack-refactor \ --stack-refactor-id 9c384f70-4e07-4ed7-a65d-fee5eb430841

    Contoh output:

    { "StackRefactorId": "9c384f70-4e07-4ed7-a65d-fee5eb430841", "StackIds": [ "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack1/3e6a1ff0-94b1-11f0-aa6f-0a88d2e03acf", "arn:aws:cloudformation:us-east-1:123456789012:stack/Stack2/5da91650-94b1-11f0-81cf-0a23500e151b" ], "ExecutionStatus": "SUCCEEDED", "Status": "COMPLETE" }

Keterbatasan sumber daya

  • Stack refactoring hanya mendukung tipe sumber daya dengan a provisioningType ofFULLY_MUTABLE, yang dapat Anda periksa menggunakan perintah describe-type.

  • CloudFormation akan memvalidasi kelayakan sumber daya selama pembuatan refactor dan melaporkan sumber daya yang tidak didukung dalam output perintah. describe-stack-refactor

  • Sumber daya berikut tidak didukung untuk pemfaktoran ulang tumpukan:

    • AWS::ACMPCA::Certificate

    • AWS::ACMPCA::CertificateAuthority

    • AWS::ACMPCA::CertificateAuthorityActivation

    • AWS::ApiGateway::BasePathMapping

    • AWS::ApiGateway::Method

    • AWS::AppConfig::ConfigurationProfile

    • AWS::AppConfig::Deployment

    • AWS::AppConfig::Environment

    • AWS::AppConfig::Extension

    • AWS::AppConfig::ExtensionAssociation

    • AWS::AppStream::DirectoryConfig

    • AWS::AppStream::StackFleetAssociation

    • AWS::AppStream::StackUserAssociation

    • AWS::AppStream::User

    • AWS::BackupGateway::Hypervisor

    • AWS::CertificateManager::Certificate

    • AWS::CloudFormation::CustomResource

    • AWS::CloudFormation::Macro

    • AWS::CloudFormation::WaitCondition

    • AWS::CloudFormation::WaitConditionHandle

    • AWS::CodeDeploy::DeploymentGroup

    • AWS::CodePipeline::CustomActionType

    • AWS::Cognito::UserPoolRiskConfigurationAttachment

    • AWS::Cognito::UserPoolUICustomizationAttachment

    • AWS::Cognito::UserPoolUserToGroupAttachment

    • AWS::Config::ConfigRule

    • AWS::Config::ConfigurationRecorder

    • AWS::Config::DeliveryChannel

    • AWS::DataBrew::Dataset

    • AWS::DataBrew::Job

    • AWS::DataBrew::Project

    • AWS::DataBrew::Recipe

    • AWS::DataBrew::Ruleset

    • AWS::DataBrew::Schedule

    • AWS::DataZone::DataSource

    • AWS::DataZone::Environment

    • AWS::DataZone::EnvironmentBlueprintConfiguration

    • AWS::DataZone::EnvironmentProfile

    • AWS::DataZone::Project

    • AWS::DataZone::SubscriptionTarget

    • AWS::DirectoryService::MicrosoftAD

    • AWS::DynamoDB::GlobalTable

    • AWS::EC2::LaunchTemplate

    • AWS::EC2::NetworkInterfacePermission

    • AWS::EC2::SpotFleet

    • AWS::EC2::VPCDHCPOptionsAssociation

    • AWS::EC2::VolumeAttachment

    • AWS::EMR::Cluster

    • AWS::EMR::InstanceFleetConfig

    • AWS::EMR::InstanceGroupConfig

    • AWS::ElastiCache::CacheCluster

    • AWS::ElastiCache::ReplicationGroup

    • AWS::ElastiCache::SecurityGroup

    • AWS::ElastiCache::SecurityGroupIngress

    • AWS::ElasticBeanstalk::ConfigurationTemplate

    • AWS::ElasticLoadBalancing::LoadBalancer

    • AWS::ElasticLoadBalancingV2::ListenerCertificate

    • AWS::Elasticsearch::Domain

    • AWS::FIS::ExperimentTemplate

    • AWS::Glue::Schema

    • AWS::GuardDuty::IPSet

    • AWS::GuardDuty::PublishingDestination

    • AWS::GuardDuty::ThreatIntelSet

    • AWS::IAM::AccessKey

    • AWS::IAM::UserToGroupAddition

    • AWS::ImageBuilder::Component

    • AWS::IoT::PolicyPrincipalAttachment

    • AWS::IoT::ThingPrincipalAttachment

    • AWS::IoTFleetWise::Campaign

    • AWS::IoTWireless::WirelessDeviceImportTask

    • AWS::Lambda::EventInvokeConfig

    • AWS::Lex::BotVersion

    • AWS::M2::Application

    • AWS::MSK::Configuration

    • AWS::MSK::ServerlessCluster

    • AWS::Maester::DocumentType

    • AWS::MediaTailor::Channel

    • AWS::NeptuneGraph::PrivateGraphEndpoint

    • AWS::Omics::AnnotationStore

    • AWS::Omics::ReferenceStore

    • AWS::Omics::SequenceStore

    • AWS::OpenSearchServerless::Collection

    • AWS::OpsWorks::App

    • AWS::OpsWorks::ElasticLoadBalancerAttachment

    • AWS::OpsWorks::Instance

    • AWS::OpsWorks::Layer

    • AWS::OpsWorks::Stack

    • AWS::OpsWorks::UserProfile

    • AWS::OpsWorks::Volume

    • AWS::PCAConnectorAD::Connector

    • AWS::PCAConnectorAD::DirectoryRegistration

    • AWS::PCAConnectorAD::Template

    • AWS::PCAConnectorAD::TemplateGroupAccessControlEntry

    • AWS::Panorama::PackageVersion

    • AWS::QuickSight::Theme

    • AWS::RDS::DBSecurityGroup

    • AWS::RDS::DBSecurityGroupIngress

    • AWS::Redshift::ClusterSecurityGroup

    • AWS::Redshift::ClusterSecurityGroupIngress

    • AWS::RefactorSpaces::Environment

    • AWS::RefactorSpaces::Route

    • AWS::RefactorSpaces::Service

    • AWS::RoboMaker::RobotApplication

    • AWS::RoboMaker::SimulationApplication

    • AWS::Route53::RecordSet

    • AWS::Route53::RecordSetGroup

    • AWS::SDB::Domain

    • AWS::SageMaker::InferenceComponent

    • AWS::ServiceCatalog::PortfolioPrincipalAssociation

    • AWS::ServiceCatalog::PortfolioProductAssociation

    • AWS::ServiceCatalog::PortfolioShare

    • AWS::ServiceCatalog::TagOptionAssociation

    • AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation

    • AWS::ServiceCatalogAppRegistry::ResourceAssociation

    • AWS::StepFunctions::StateMachineVersion

    • AWS::Synthetics::Canary

    • AWS::VoiceID::Domain

    • AWS::WAF::ByteMatchSet

    • AWS::WAF::IPSet

    • AWS::WAF::Rule

    • AWS::WAF::SizeConstraintSet

    • AWS::WAF::SqlInjectionMatchSet

    • AWS::WAF::WebACL

    • AWS::WAF::XssMatchSet

    • AWS::WAFv2::IPSet

    • AWS::WAFv2::RegexPatternSet

    • AWS::WAFv2::RuleGroup

    • AWS::WAFv2::WebACL

    • AWS::WorkSpaces::Workspace

Лучший частный хостинг