Detail dan contoh parameter file CloudFormation iAc komponen - AWS Proton

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

Detail dan contoh parameter file CloudFormation iAc komponen

Anda dapat menentukan dan mereferensikan parameter dalam infrastruktur komponen Anda sebagai file kode (IAc). Untuk penjelasan rinci tentang AWS Proton parameter, jenis parameter, namespace parameter, dan cara menggunakan parameter dalam file IAC Anda, lihat. AWS Proton parameter Untuk informasi selengkapnya tentang komponen, lihatAWS Proton komponen.

Tentukan parameter keluaran komponen

Anda dapat menentukan parameter output dalam file iAc komponen Anda. Anda kemudian dapat merujuk ke output ini dalam file layanan IAC.

catatan

Anda tidak dapat menentukan input untuk file komponen IAC. Komponen terlampir bisa mendapatkan masukan dari instance layanan yang mereka lampirkan. Komponen terpisah tidak memiliki input.

Baca nilai parameter dalam file iAc komponen

Anda dapat membaca parameter yang terkait dengan komponen dan sumber daya lain dalam file komponen IAc. Anda membaca nilai parameter dengan mereferensikan nama parameter di namespace AWS Proton parameter.

  • Parameter input — Baca nilai input instance layanan terlampir dengan referensiservice_instance.inputs.input-name.

  • Parameter sumber daya — Baca parameter AWS Proton sumber daya dengan mereferensikan nama seperticomponent.name,service.name,service_instance.name, danenvironment.name.

  • Parameter keluaran — Baca output lingkungan dengan referensienvironment.outputs.output-name.

Contoh komponen dan layanan file IAc dengan parameter

Contoh berikut menunjukkan komponen yang menyediakan bucket Amazon Simple Storage Service (Amazon S3) dan kebijakan akses terkait serta mengekspos Amazon Resource Names (ARN) dari kedua sumber daya sebagai output komponen. Template Service IAC menambahkan output komponen sebagai variabel lingkungan container dari tugas Amazon Elastic Container Service (Amazon ECS) untuk membuat output tersedia untuk kode yang berjalan di container, dan menambahkan kebijakan akses bucket ke peran tugas. 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 kustom berdasarkan templat komponen ini, untuk menyediakan bucket Amazon S3 untuk berbagai instans layanan dan kebutuhan fungsional.

Contoh menunjukkan bagaimana Anda menggunakan {{ ... }} sintaks Jinja untuk merujuk ke komponen dan parameter sumber daya lainnya dalam file iAc layanan Anda. Anda dapat menggunakan {% if ... %} pernyataan untuk menambahkan blok pernyataan hanya ketika komponen dilampirkan ke instance layanan. proton_cfn_*Kata kunci adalah filter yang dapat Anda gunakan untuk membersihkan dan memformat nilai parameter output. Untuk informasi lebih lanjut tentang filter, lihat Filter parameter untuk CloudFormation file IAc.

Sebagai administrator, Anda membuat file template layanan IAC.

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: # ...

Sebagai pengembang, Anda membuat file template komponen IAC.

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

Saat AWS Proton merender AWS CloudFormation template untuk instance layanan Anda dan mengganti semua parameter dengan nilai aktual, template mungkin terlihat seperti file berikut.

contoh layanan yang CloudFormation diberikan file IAc
Resources: TaskDefinition: Type: AWS::ECS::TaskDefinition Properties: TaskRoleArn: !Ref TaskRole ContainerDefinitions: - Name: '{{service_instance.name}}' # ... Environment: - Name: BucketName Value: arn:aws:s3:us-east-1:123456789012:environment_name-service_name-service_instance_name-component_name - Name: BucketAccessPolicyArn Value: arn:aws:iam::123456789012:policy/cfn-generated-policy-name # ... TaskRole: Type: AWS::IAM::Role Properties: # ... ManagedPolicyArns: - !Ref BaseTaskRoleManagedPolicy - arn:aws:iam::123456789012:policy/cfn-generated-policy-name # Basic permissions for the task BaseTaskRoleManagedPolicy: Type: AWS::IAM::ManagedPolicy Properties: # ...