

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

# Bangun kustomisasi Anda sendiri
<a name="cfcn-byo-customizations"></a>

Untuk membuat kustomisasi sendiri, Anda dapat memodifikasi `manifest.yaml` file CFCT dengan menambahkan atau memperbarui kebijakan kontrol layanan (), kebijakan kontrol sumber daya (SCPs), dan sumber daya. RCPs CloudFormation Untuk sumber daya yang harus digunakan, Anda dapat menambah atau menghapus akun dan OUs. Anda dapat menambahkan atau memodifikasi templat di folder paket, membuat folder Anda sendiri, dan mereferensikan templat atau folder dalam `manifest.yaml` file.

Bagian ini menjelaskan dua bagian utama membangun kustomisasi Anda sendiri:
+ cara mengatur paket konfigurasi Anda sendiri untuk kebijakan kontrol layanan
+ cara mengatur paket konfigurasi Anda sendiri untuk set AWS CloudFormation tumpukan

# Siapkan paket konfigurasi untuk SCPs atau RCPs
<a name="cfcn-set-up-custom-scps"></a>

Bagian ini menjelaskan cara membuat paket konfigurasi untuk kebijakan kontrol layanan (SCPs) atau kebijakan kontrol sumber daya (RCPs). Dua bagian utama dari proses ini adalah (1) siapkan file manifes CFCT, dan (2) siapkan struktur folder Anda.

## Langkah 1: Edit file manifest.yaml
<a name="cfct-byo-scp-step-1"></a>

Gunakan `manifest.yaml` file sampel sebagai titik awal Anda. Masukkan semua konfigurasi yang diperlukan. Tambahkan `resource_file` dan `deployment_targets` detailnya.

Cuplikan berikut menunjukkan file manifes default.

```
---
region: us-east-1
version: 2021-03-15

resources: []
```

Nilai untuk `region` ditambahkan secara otomatis selama penerapan. Itu harus cocok dengan Wilayah tempat Anda menggunakan CFCT. Wilayah ini harus sama dengan wilayah AWS Control Tower.

Untuk menambahkan SCP atau RCP khusus di `example-configuration` folder dalam paket zip yang disimpan di bucket Amazon S3, buka file dan mulai `example-manifest.yaml` mengedit.

```
---
region: your-home-region
version: 2021-03-15

resources:
  - name: test-preventive-controls
    description: To prevent from deleting or disabling resources in member accounts
    resource_file: policies/preventive-controls.json
    deploy_method: scp | rcp
    #Apply to the following OU(s)
    deployment_targets:
      organizational_units: #array of strings
        - OUName1
        - OUName2 

…truncated…
```

Cuplikan berikut menunjukkan contoh file manifes yang disesuaikan. Anda dapat menambahkan lebih dari satu kebijakan dalam satu perubahan.

```
---
region: us-east-1
version: 2021-03-15

resources:
  - name: block-s3-public-access
    description: To S3 buckets to have public access
    resource_file: policies/block-s3-public.json
    deploy_method: scp | rcp
    #Apply to the following OU(s)
    deployment_targets:
      organizational_units: #array of strings
        - OUName1
        - OUName2
```

## Langkah 2: Buat struktur folder
<a name="cfct-byo-scp-step-2"></a>

Anda dapat melewati langkah ini jika Anda menggunakan URL Amazon S3 untuk file sumber daya dan menggunakan **parameter dengan key/value pasangan**.

Anda harus menyertakan kebijakan SCP atau kebijakan RCP dalam format JSON untuk mendukung manifes, karena file manifes mereferensikan file JSON. Pastikan bahwa jalur file cocok dengan informasi jalur yang disediakan dalam file manifes. 
+ File JSON *kebijakan* berisi SCPs atau RCPs yang akan digunakan. OUs

Cuplikan berikut menunjukkan struktur folder untuk file manifes sampel.

```
- manifest.yaml
- policies/
   - block-s3-public.json
```

Cuplikan berikut adalah contoh file `block-s3-public.json` kebijakan.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"GuardPutAccountPublicAccessBlock",
         "Effect":"Deny",
         "Action":"s3:PutAccountPublicAccessBlock",
         "Resource":"arn:aws:s3:::*"
      }
   ]
}
```

------

# Siapkan paket konfigurasi untuk CloudFormation StackSets
<a name="cfcn-byo-cfn-stacksets"></a>

Bagian ini menjelaskan cara menyiapkan paket konfigurasi untuk CloudFormation StackSets. Dua bagian utama dari proses ini adalah: (1) siapkan file manifes, dan (2) perbarui struktur folder.

## Langkah 1: Edit file manifes yang ada
<a name="cfcn-byo-cfn-stacksets-step-1"></a>

Tambahkan CloudFormation StackSets informasi baru ke file manifes yang sebelumnya Anda edit.

Hanya untuk ditinjau, cuplikan berikut berisi file manifes khusus yang sama yang ditampilkan sebelumnya untuk menyiapkan paket konfigurasi untuk SCPs atau. RCPs Sekarang Anda dapat mengedit file ini lebih lanjut, untuk memasukkan detail tentang sumber daya Anda.

```
---
region: us-east-1
version: 2021-03-15

resources:
  
  - name: block-s3-public-access
    description: To S3 buckets to have public access
    resource_file: policies/block-s3-public.json
    deploy_method: scp | rcp
    #Apply to the following OU(s)
    deployment_targets:
    organizational_units: #array of strings
    - OUName1
    - OUName2
```

Cuplikan berikut menunjukkan contoh file manifes yang diedit yang berisi rincian. `resources` Urutan `resources` menentukan urutan eksekusi untuk membuat `resources` dependensi. Anda dapat mengedit contoh file manifes berikut sesuai dengan kebutuhan bisnis Anda.

```
---
region: your-home-region
version: 2021-03-15

…truncated…

resources:
  - name: stackset-1
    resource_file: templates/create-ssm-parameter-keys-1.template
    parameters:
      - parameter_key: parameter-1
        parameter_value: value-1
    deploy_method: stack_set
    deployment_targets:
      accounts: # array of strings, [0-9]{12}
        - account number or account name
        - 123456789123
      organizational_units: #array of strings, ou ids, ou-xxxx
        - OuName1
        - OUName2 
    export_outputs:
      - name: /org/member/test-ssm/app-id
        value: $[output_ApplicationId]
    regions:
      - region-name

  - name: stackset-2
    resource_file: s3://bucket-name/key-name
    parameters:
      - parameter_key: parameter-1
        parameter_value: value-1
    deploy_method: stack_set
    deployment_targets:
      accounts: # array of strings, [0-9]{12}
        - account number or account name
        - 123456789123
      organizational_units: #array of strings
        - OuName1
        - OUName2 
regions:
  - region-name
```

Contoh berikut menunjukkan bahwa Anda dapat menambahkan lebih dari satu CloudFormation sumber daya dalam file manifes.

```
---
region: us-east-1
version: 2021-03-15

resources:
  - name: block-s3-public-access
    description: To S3 buckets to have public access
    resource_file: policies/block-s3-public.json
    deploy_method: scp | rcp
    #Apply to the following OU(s)
    deployment_targets:
      organizational_units: #array of strings
        - Custom
        - Sandbox

  - name: transit-network
    resource_file: templates/transit-gateway.template
    parameter_file: parameters/transit-gateway.json
    deploy_method: stack_set
    deployment_targets:
      accounts: # array of strings, [0-9]{12}
        - Prod
        - 123456789123 #Network
      organizational_units: #array of strings
        - Custom
    export_outputs:
      - name: /org/network/transit-gateway-id
        value: $[output_TransitGatewayID]
    regions:
      - us-east-1
```

## Langkah 2: Perbarui struktur folder
<a name="cfct-byo-cfn-stacksets-step-2"></a>

Saat memperbarui struktur folder, Anda dapat menyertakan semua file CloudFormation template pendukung dan file kebijakan SCP atau RCP yang ada di file manifes. Verifikasi bahwa jalur file cocok dengan apa yang disediakan dalam file manifes. 
+ File *template* berisi AWS sumber daya yang akan digunakan OUs dan akun.
+ File *kebijakan* berisi parameter input yang digunakan dalam file template.

Contoh berikut menunjukkan struktur folder untuk file manifes sampel yang dibuat di [Langkah 1](#cfcn-byo-cfn-stacksets-step-1).

```
- manifest.yaml
- policies/
   - block-s3-public.json
- templates/
   - transit-gateway.template
```

# Pembantu 'alfred' dan file parameter CloudFormation
<a name="alfred-helper"></a>

 CFCT memberi Anda mekanisme yang dikenal sebagai *alfred* helper untuk mendapatkan nilai kunci [Penyimpanan Parameter SSM](https://docs.aws.amazon.com//systems-manager/latest/userguide/systems-manager-parameter-store.html) yang ditentukan dalam template. CloudFormation Menggunakan *alfred* helper, Anda dapat menggunakan nilai yang disimpan di SSM Parameter Store dan tanpa memperbarui template. CloudFormation Untuk informasi selengkapnya, lihat [Apa itu CloudFormation template?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/gettingstarted.templatebasics.html#gettingstarted.templatebasics.what) dalam *CloudFormation User Guide*. 

**penting**  
 Pembantu *alfred* memiliki dua keterbatasan. Parameter hanya tersedia di wilayah asal akun manajemen AWS Control Tower. Sebagai praktik terbaik, pertimbangkan untuk bekerja dengan nilai yang tidak berubah dari instance stack ke instance stack. Ketika helper 'alfred' memulihkan parameter, ia memilih instance tumpukan acak dari kumpulan tumpukan yang mengekspor variabel. 

## Contoh
<a name="w2aac28c41c15c13b7"></a>

 Misalkan Anda memiliki dua set CloudFormation tumpukan. *Stack set 1* memiliki satu instance tumpukan dan menyebarkan ke satu akun dalam satu Wilayah. Ini menciptakan VPC Amazon dan subnet di zona ketersediaan, dan `VPC ID` dan `subnet ID` harus diteruskan ke *stack set 2* sebagai nilai parameter. Sebelum `VPC ID` dan `subnet ID` dapat diteruskan ke *stack set 2*, `VPC ID` dan `subnet ID` harus disimpan dalam *stack set 1* menggunakan`AWS:::SSM::Parameter`. Untuk informasi selengkapnya, lihat [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html) di *CloudFormation Panduan Pengguna*. 

**CloudFormation tumpukan set 1:**

 Dalam cuplikan berikut, *alfred* helper bisa mendapatkan nilai untuk `VPC ID` dan `subnet ID` dari penyimpanan parameter dan meneruskannya sebagai input ke mesin status. StackSet 

```
VpcIdParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Name: '/stack_1/vpc/id'
      Description: Contains the VPC id
      Type: String
      Value: !Ref MyVpc

SubnetIdParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Name: '/stack_1/subnet/id'
      Description: Contains the subnet id
      Type: String
      Value: !Ref MySubnet
```

**CloudFormation tumpukan set 2:**

 Cuplikan menunjukkan parameter yang ditentukan dalam file CloudFormation stack 2`manifest.yaml`. 

```
parameters:
      - parameter_key: VpcId
        parameter_value: $[alfred_ssm_/stack_1/vpc/id]
      - parameter_key: SubnetId
        parameter_value: $[alfred_ssm_/stack_1/subnet/id]
```

**CloudFormation tumpukan set 2.1:**

 Cuplikan menunjukkan bahwa Anda dapat mencantumkan `alfred_ssm` properti untuk mendukung parameter tipe. *CommaDelimitedList* Untuk informasi selengkapnya, lihat [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#parameters-section-structure-properties-type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#parameters-section-structure-properties-type) di *CloudFormation Panduan Pengguna*. 

```
parameters:
      - parameter_key: VpcId # Type: String
        parameter_value: $[alfred_ssm_/stack_1/vpc/id']
      - parameter_key: SubnetId # Type: String
        parameter_value: $[ alfred_ssm_/stack_1/subnet/id']
      - parameter_key: AvailablityZones # Type: CommaDelimitedList
        parameter_value:   - "$[alfred_ssm_/availability_zone_1]"  - "$[alfred_ssm_/availability_zone_2]"
```

**Skema JSON untuk paket kustomisasi**  
Skema JSON untuk paket kustomisasi untuk CFCT terletak di repositori [kode sumber](https://github.com/aws-solutions/aws-control-tower-customizations) pada. GitHub Anda dapat menggunakan skema dengan banyak alat pengembangan favorit Anda, dan Anda mungkin merasa terbantu untuk mengurangi kesalahan saat Anda membuat file CFCT `manifest.yaml` Anda sendiri.