Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS CloudFormation Contoh komponen
Berikut adalah contoh lengkap dari komponen yang didefinisikan AWS Proton secara langsung dan bagaimana Anda dapat menggunakannya dalam suatu AWS Proton layanan. Komponen ini 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 spesifik dari template komponen yang memperluas instance layanan tertentu. Pengembang dapat membuat beberapa komponen berdasarkan templat komponen ini, untuk menyediakan bucket Amazon S3 untuk berbagai instans layanan dan kebutuhan fungsional.
Contoh ini mencakup penulisan berbagai AWS CloudFormation infrastruktur yang diperlukan sebagai file kode (IAc) dan membuat peran yang diperlukan AWS Identity and Access Management (IAM). Contoh mengelompokkan langkah-langkah dengan peran orang yang memiliki.
Langkah-langkah administrator
Untuk memungkinkan pengembang menggunakan komponen dengan layanan
-
Buat peran AWS Identity and Access Management (IAM) yang mencakup sumber daya yang secara langsung mendefinisikan komponen yang berjalan di lingkungan Anda dapat menyediakan. AWS Proton mengasumsikan peran ini nanti untuk menyediakan komponen yang didefinisikan secara langsung di lingkungan.
Untuk contoh ini, gunakan kebijakan berikut:
contoh peran komponen yang didefinisikan secara langsung
{ "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" } } } ] } -
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, tentukan
componentRoleArn
tindakan CreateEnvironmentatau UpdateEnvironmentAPI. -
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: # ...
-
Buat versi minor template layanan baru yang mendeklarasikan komponen yang didefinisikan secara langsung sebagai didukung.
-
Bundel templat di Amazon S3 — Di AWS Proton konsol, saat Anda membuat versi templat layanan, untuk sumber komponen yang didukung, pilih Ditentukan secara langsung. Jika Anda menggunakan AWS Proton API atau AWS CLI, tentukan
DIRECTLY_DEFINED
dalamsupportedComponentSources
parameter tindakan CreateServiceTemplateVersionatau UpdateServiceTemplateVersionAPI. -
Sinkronisasi templat — Komit perubahan ke repositori bundel templat layanan Anda, tempat Anda menentukan
DIRECTLY_DEFINED
sebagai itemsupported_component_sources:
dalam.template-registration.yaml
file di direktori versi utama. Untuk informasi selengkapnya tentang file ini, lihatMenyinkronkan templat layanan.
-
-
Publikasikan template layanan baru versi minor. Untuk informasi selengkapnya, lihat Daftarkan dan terbitkan templat.
-
Pastikan untuk mengizinkan peran IAM pengembang yang menggunakan template layanan ini.
proton:CreateComponent
Langkah-langkah pengembang
Untuk menggunakan komponen yang didefinisikan secara langsung dengan instance layanan
-
Buat layanan yang menggunakan versi template layanan yang dibuat administrator dengan dukungan komponen. Atau, perbarui salah satu instance layanan Anda yang ada untuk menggunakan versi template terbaru.
-
Tulis file template komponen iAc yang menyediakan bucket Amazon S3 dan kebijakan akses terkait dan mengekspos sumber daya ini sebagai output.
contoh file komponen CloudFormation iAc
# 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
-
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
-
Buat komponen yang didefinisikan secara langsung. AWS Proton mengasumsikan peran komponen yang didefinisikan administrator untuk menyediakan komponen.
Di AWS Proton konsol, pada halaman Components
, pilih Create component. Untuk pengaturan Komponen, masukkan nama Komponen dan deskripsi Komponen opsional. Untuk lampiran Komponen, pilih Lampirkan komponen ke instance layanan. Pilih contoh lingkungan, layanan, dan layanan Anda. Untuk sumber Komponen, pilih AWS CloudFormation, lalu pilih file komponen IAc. catatan
Anda tidak perlu menyediakan manifes—konsol membuatnya untuk Anda.
Jika Anda menggunakan AWS Proton API atau AWS CLI, gunakan tindakan CreateComponentAPI. Tetapkan komponen
name
dan opsionaldescription
. SetenvironmentName
,serviceName
, danserviceInstanceName
. AturtemplateSource
danmanifest
ke jalur file yang Anda buat.catatan
Menentukan nama lingkungan adalah opsional saat Anda menentukan nama instance layanan dan layanan. Kombinasi keduanya unik di AWS akun Anda, dan AWS Proton dapat menentukan lingkungan dari instance layanan.
-
Perbarui instance layanan Anda untuk menerapkannya kembali. AWS Proton menggunakan output dari komponen Anda dalam template instance layanan yang dirender, untuk memungkinkan aplikasi Anda menggunakan bucket Amazon S3 yang disediakan komponen tersebut.