View a markdown version of this page

Komponen CloudFormation contoh - AWS Proton

Pemberitahuan akhir dukungan: Pada 7 Oktober 2026, dukungan AWS akan berakhir untuk AWS Proton. Setelah 7 Oktober 2026, Anda tidak akan lagi dapat mengakses AWS Proton konsol atau AWS Proton sumber daya. Infrastruktur yang Anda gunakan akan tetap utuh. Untuk informasi selengkapnya, lihat Panduan AWS Proton Penghentian Layanan dan Migrasi.

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

Komponen CloudFormation contoh

Berikut adalah contoh lengkap dari komponen yang didefinisikan AWS Proton secara langsung dan bagaimana Anda dapat menggunakannya dalam suatu AWS Proton layanan. Komponen menyediakan bucket Amazon Simple Storage Service (Amazon S3) dan kebijakan akses terkait. Instance layanan dapat merujuk ke bucket ini dan menggunakannya. Nama bucket didasarkan pada nama lingkungan, layanan, instance layanan, dan komponen, yang berarti bahwa bucket digabungkan dengan instance tertentu dari template komponen yang memperluas instance layanan tertentu. Pengembang dapat membuat beberapa komponen berdasarkan template komponen ini, untuk menyediakan bucket Amazon S3 untuk berbagai instans layanan dan kebutuhan fungsional.

Contoh ini mencakup penulisan berbagai CloudFormation infrastruktur yang diperlukan sebagai file kode (IAC) dan membuat peran yang diperlukan AWS Identity and Access Management (IAM). Contoh mengelompokkan langkah-langkah berdasarkan peran orang yang memiliki.

Langkah administrator

Untuk memungkinkan pengembang menggunakan komponen dengan layanan
  1. Buat peran AWS Identity and Access Management (IAM) yang mencakup sumber daya yang dapat disediakan komponen yang didefinisikan secara langsung yang berjalan di lingkungan Anda. AWS Proton mengambil peran ini kemudian untuk menyediakan komponen yang didefinisikan secara langsung di lingkungan.

    Untuk contoh ini, gunakan kebijakan berikut:

    contoh peran komponen yang didefinisikan secara langsung
    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:CancelUpdateStack", "cloudformation:CreateChangeSet", "cloudformation:DeleteChangeSet", "cloudformation:DescribeStacks", "cloudformation:ContinueUpdateRollback", "cloudformation:DetectStackResourceDrift", "cloudformation:DescribeStackResourceDrifts", "cloudformation:DescribeStackEvents", "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:UpdateStack", "cloudformation:DescribeChangeSet", "cloudformation:ExecuteChangeSet", "cloudformation:ListChangeSets", "cloudformation:ListStackResources" ], "Resource": "arn:aws:cloudformation:*:123456789012:stack/AWSProton-*" }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:DeleteBucket", "s3:GetBucket*", "iam:CreatePolicy", "iam:DeletePolicy", "iam:GetPolicy", "iam:ListPolicyVersions", "iam:DeletePolicyVersion" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": "cloudformation.amazonaws.com" } } } ] }
  2. Berikan peran yang Anda buat pada langkah sebelumnya saat Anda membuat atau memperbarui lingkungan. Di AWS Proton konsol, tentukan peran Komponen pada halaman Konfigurasi lingkungan. Jika Anda menggunakan AWS Proton API atau AWS CLI, tent componentRoleArn ukan tindakan UpdateEnvironment API CreateEnvironment atau.

  3. Buat template layanan yang mengacu pada komponen yang didefinisikan secara langsung yang dilampirkan ke instance layanan.

    Contoh menunjukkan cara menulis template layanan yang kuat yang tidak rusak jika komponen tidak dilampirkan ke instance layanan.

    contoh layanan file CloudFormation iAc menggunakan komponen
    # service/instance_infrastructure/cloudformation.yaml Resources: TaskDefinition: Type: AWS::ECS::TaskDefinition Properties: TaskRoleArn: !Ref TaskRole ContainerDefinitions: - Name: '{{service_instance.name}}' # ... {% if service_instance.components.default.outputs | length > 0 %} Environment: {{ service_instance.components.default.outputs | proton_cfn_ecs_task_definition_formatted_env_vars }} {% endif %} # ... TaskRole: Type: AWS::IAM::Role Properties: # ... ManagedPolicyArns: - !Ref BaseTaskRoleManagedPolicy {{ service_instance.components.default.outputs | proton_cfn_iam_policy_arns }} # Basic permissions for the task BaseTaskRoleManagedPolicy: Type: AWS::IAM::ManagedPolicy Properties: # ...
  4. Buat versi minor template layanan baru yang menyatakan komponen yang didefinisikan secara langsung sebagai didukung.

    • Bundel templat di Amazon S3 — Di AWS Proton konsol, saat Anda membuat versi template layanan, untuk Sumber komponen yang didukung, pilih Ditetapkan secara langsung. Jika Anda menggunakan AWS Proton API atau AWS CLI, tent DIRECTLY_DEFINED ukan di supportedComponentSources parameter tindakan UpdateServiceTemplateVersion API CreateServiceTemplateVersion atau.

    • Sinkronisasi templat — Lakukan perubahan ke repositori bundel template layanan Anda, supported_component_sources: di mana Anda menentukan DIRECTLY_DEFINED sebagai item dalam .template-registration.yaml file di direktori versi utama. Untuk informasi selengkapnya tentang file ini, lihatMenyinkronkan templat layanan.

  5. Publikasikan template layanan baru versi minor. Untuk informasi selengkapnya, lihat Daftarkan dan publikasikan templat.

  6. Pastikan untuk mengiz proton:CreateComponent inkan peran IAM pengembang yang menggunakan template layanan ini.

Langkah-langkah pengembang

Untuk menggunakan komponen yang ditentukan secara langsung dengan instance layanan
  1. Buat layanan yang menggunakan versi template layanan yang dibuat administrator dengan dukungan komponen. Atau, perbarui salah satu instans layanan yang ada untuk menggunakan versi template terbaru.

  2. Tulis file template IaC komponen yang menyediakan bucket Amazon S3 dan kebijakan akses terkait dan mengekspos sumber daya ini sebagai output.

    contoh komponen CloudFormation iAc file
    # cloudformation.yaml # A component that defines an S3 bucket and a policy for accessing the bucket. Resources: S3Bucket: Type: AWS::S3::Bucket Properties: BucketName: '{{environment.name}}-{{service.name}}-{{service_instance.name}}-{{component.name}}' S3BucketAccessPolicy: Type: AWS::IAM::ManagedPolicy Properties: PolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Action: - 's3:Get*' - 's3:List*' - 's3:PutObject' Resource: !GetAtt S3Bucket.Arn Outputs: BucketName: Description: "Bucket to access" Value: !GetAtt S3Bucket.Arn BucketAccessPolicyArn: Value: !Ref S3BucketAccessPolicy
  3. Jika Anda menggunakan AWS Proton API atau AWS CLI, tulis file manifes untuk komponen tersebut.

    contoh manifes komponen yang didefinisikan secara langsung
    infrastructure: templates: - file: "cloudformation.yaml" rendering_engine: jinja template_language: cloudformation
  4. Buat komponen yang didefinisikan secara langsung. AWS Proton mengasumsikan peran komponen yang didefinisikan administrator untuk menyediakan komponen.

    Di AWS Proton konsol, pada halaman Komponen, pilih Buat komponen. Untuk Pengaturan Komponen, masukkan nama Komponen dan deskripsi Komponen opsional. Untuk Lampiran komponen, pilih Lamp irkan komponen ke instance layanan. Pilih instance lingkungan, layanan, dan layanan Anda. Untuk Sumber Komponen, pilih CloudFormation, lalu pilih file iAc komponen.

    catatan

    Anda tidak perlu memberikan manifes—konsol membuatnya untuk Anda.

    Jika Anda menggunakan AWS Proton API atau AWS CLI, gunakan tindakan CreateComponent API. Tetapkan komponen name dan opsionaldescription. MengaturenvironmentName,serviceName, danserviceInstanceName. Atur templateSource dan manifest ke jalur file yang Anda buat.

    catatan

    Menentukan nama lingkungan adalah opsional saat Anda menentukan nama instans layanan dan layanan. Kombinasi keduanya unik di AWS akun Anda, dan AWS Proton dapat menentukan lingkungan dari instance layanan.

  5. Perbarui instance layanan Anda untuk menyebarkannya kembali. AWS Proton menggunakan output dari komponen Anda dalam templat instance layanan yang diberikan, untuk mengaktifkan aplikasi Anda menggunakan bucket Amazon S3 yang disediakan komponen.