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 referensi
service_instance.inputs.
.input-name
-
Parameter sumber daya — Baca parameter AWS Proton sumber daya dengan mereferensikan nama seperti
component.name
,service.name
,service_instance.name
, danenvironment.name
. -
Parameter keluaran — Baca output lingkungan dengan referensi
environment.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:
# ...