

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

# Prasyarat untuk menyinkronkan tumpukan ke repositori Git menggunakan sinkronisasi Git
<a name="git-sync-prereq"></a>

Sebelum Anda menyinkronkan CloudFormation tumpukan ke repositori Git Anda, verifikasi bahwa persyaratan berikut terpenuhi.

**Topics**
+ [Repositori Git](#git-sync-prereq-repo)
+ [CloudFormation Template](#git-sync-prereq-template)
+ [Peran layanan sinkronisasi Git](#git-sync-prereq-iam)
+ [Izin IAM untuk pengguna konsol](#git-sync-prereq-user-permissions)

## Repositori Git
<a name="git-sync-prereq-repo"></a>

Anda harus memiliki repositori Git yang dihosting di salah satu platform berikut.
+ [GitHub](https://github.com/)
+ [GitHub Perusahaan](https://github.com/enterprise)
+ [GitLab](https://about.gitlab.com/)
+ [Bitbucket](https://bitbucket.org)
+ [GitLabdikelola sendiri](https://docs.gitlab.com/subscriptions/self_managed/)

Repositori dapat berupa publik atau pribadi. Anda harus menghubungkan repositori Git ini ke CloudFormation konsol [Connections](https://console.aws.amazon.com/codesuite/settings/connections).

## CloudFormation Template
<a name="git-sync-prereq-template"></a>

Repositori Git Anda harus berisi [file CloudFormation template](git-sync-concepts-terms.md#git-sync-concepts-terms-template-file) yang diperiksa ke cabang yang ingin Anda hubungkan dengan sinkronisasi Git. Template ini akan direferensikan oleh file [stack deployment](git-sync-concepts-terms.md#git-sync-concepts-terms-depoyment-file).

## Peran layanan sinkronisasi Git
<a name="git-sync-prereq-iam"></a>

Sinkronisasi Git membutuhkan peran IAM. Anda dapat memilih untuk memiliki peran IAM yang dibuat untuk tumpukan Anda ketika Anda mengkonfigurasi sinkronisasi Git, atau Anda dapat menggunakan peran yang ada.

**catatan**  
Peran IAM yang dihasilkan secara otomatis hanya menerapkan izin ke tumpukan tempat peran tersebut dihasilkan. Untuk menggunakan kembali peran IAM yang dibuat secara otomatis, Anda harus mengedit peran untuk tumpukan baru.

### Izin yang diperlukan untuk peran layanan sinkronisasi Git
<a name="git-sync-prereq-permissions"></a>

Peran IAM yang Anda berikan untuk sinkronisasi Git memerlukan izin berikut.
+ `cloudformation:CreateChangeSet`
+ `cloudformation:DeleteChangeSet`
+ `cloudformation:DescribeChangeSet`
+ `cloudformation:DescribeStackEvents`
+ `cloudformation:DescribeStacks`
+ `cloudformation:ExecuteChangeSet`
+ `cloudformation:ListChangeSets`
+ `cloudformation:ValidateTemplate`
+ `events:PutRule`
+ `events:PutTargets`

**catatan**  
Izin yang diperlukan sebelumnya secara otomatis ditambahkan ke peran IAM yang dihasilkan oleh sinkronisasi Git.

Contoh peran IAM berikut mencakup izin prasyarat untuk sinkronisasi Git.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SyncToCloudFormation",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateChangeSet",
                "cloudformation:DeleteChangeSet",
                "cloudformation:DescribeChangeSet",
                "cloudformation:DescribeStackEvents",
                "cloudformation:DescribeStacks",
                "cloudformation:ExecuteChangeSet",
                "cloudformation:GetTemplate",
                "cloudformation:ListChangeSets",
                "cloudformation:ListStacks",
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        },
        {
            "Sid": "PolicyForManagedRules",
            "Effect": "Allow",
            "Action": [
                "events:PutRule",
                "events:PutTargets"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                "events:ManagedBy": ["cloudformation.sync.codeconnections.amazonaws.com"]
                }
            }
        },
        {
            "Sid": "PolicyForDescribingRule",
            "Effect": "Allow",
            "Action": "events:DescribeRule",
            "Resource": "*"
        }
    ]
}
```

------

#### Kebijakan kepercayaan
<a name="git-sync-prereq-trust-policy"></a>

Anda harus memberikan kebijakan kepercayaan berikut ketika Anda membuat peran untuk menentukan hubungan kepercayaan.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CfnGitSyncTrustPolicy",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudformation.sync.codeconnections.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

Kami menyarankan Anda menggunakan kunci `aws:SourceArn` dan `aws:SourceAccount` kondisi untuk melindungi diri Anda dari masalah wakil yang membingungkan. Akun sumber adalah ID akun Anda dan sumber ARN adalah ARN dari koneksi dalam [CodeConnections](https://docs.aws.amazon.com/codeconnections/latest/APIReference/Welcome.html)layanan yang memungkinkan CloudFormation untuk terhubung ke repositori Git Anda.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CfnGitSyncTrustPolicy",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudformation.sync.codeconnections.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:codeconnections:us-east-1:123456789012:connection/EXAMPLE64-8aad-4d5d-8878-dfcab0bc441f"
        }
      }
    }
  ]
}
```

------

Untuk informasi lebih lanjut tentang masalah wakil yang membingungkan, lihat[Pencegahan "confused deputy" lintas layanan](cross-service-confused-deputy-prevention.md).

## Izin IAM untuk pengguna konsol
<a name="git-sync-prereq-user-permissions"></a>

Agar berhasil mengatur sinkronisasi Git melalui CloudFormation konsol, pengguna akhir juga harus diberikan izin melalui IAM.

`codeconnections`Izin berikut diperlukan untuk membuat dan mengelola koneksi ke Git repositori Anda.
+ `codeconnections:CreateRepositoryLink`
+ `codeconnections:CreateSyncConfiguration`
+ `codeconnections:DeleteRepositoryLink`
+ `codeconnections:DeleteSyncConfiguration`
+ `codeconnections:GetRepositoryLink`
+ `codeconnections:GetSyncConfiguration`
+ `codeconnections:ListRepositoryLinks`
+ `codeconnections:ListSyncConfigurations`
+ `codeconnections:ListTagsForResource`
+ `codeconnections:TagResource`
+ `codeconnections:UntagResource`
+ `codeconnections:UpdateRepositoryLink`
+ `codeconnections:UpdateSyncBlocker`
+ `codeconnections:UpdateSyncConfiguration`
+ `codeconnections:UseConnection`

Pengguna konsol juga harus memiliki `cloudformation` izin berikut untuk melihat dan mengelola tumpukan selama proses penyiapan sinkronisasi Git.
+ `cloudformation:CreateChangeSet`
+ `cloudformation:DeleteChangeSet`
+ `cloudformation:DescribeChangeSet`
+ `cloudformation:DescribeStackEvents`
+ `cloudformation:DescribeStacks`
+ `cloudformation:ExecuteChangeSet`
+ `cloudformation:GetTemplate`
+ `cloudformation:ListChangeSets`
+ `cloudformation:ListStacks`
+ `cloudformation:ValidateTemplate`

**catatan**  
Meskipun izin set perubahan (`cloudformation:CreateChangeSet`,, `cloudformation:DeleteChangeSet``cloudformation:DescribeChangeSet`,`cloudformation:ExecuteChangeSet`) mungkin tidak sepenuhnya diperlukan untuk penggunaan khusus konsol, mereka disarankan untuk mengaktifkan inspeksi tumpukan penuh dan kemampuan manajemen.

Contoh berikut kebijakan IAM mencakup izin pengguna yang diperlukan untuk mengatur sinkronisasi Git melalui konsol.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CodeConnectionsPermissions",
            "Effect": "Allow",
            "Action": [
                "codeconnections:CreateRepositoryLink",
                "codeconnections:CreateSyncConfiguration",
                "codeconnections:DeleteRepositoryLink",
                "codeconnections:DeleteSyncConfiguration",
                "codeconnections:GetRepositoryLink",
                "codeconnections:GetSyncConfiguration",
                "codeconnections:ListRepositoryLinks",
                "codeconnections:ListSyncConfigurations",
                "codeconnections:ListTagsForResource",
                "codeconnections:TagResource",
                "codeconnections:UntagResource",
                "codeconnections:UpdateRepositoryLink",
                "codeconnections:UpdateSyncBlocker",
                "codeconnections:UpdateSyncConfiguration",
                "codeconnections:UseConnection",
                "codeconnections:CreateForcedTargetSync",
                "codeconnections:CreatePullRequestForResource"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CloudFormationConsolePermissions",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateChangeSet",
                "cloudformation:DeleteChangeSet",
                "cloudformation:DescribeChangeSet",
                "cloudformation:DescribeStackEvents",
                "cloudformation:DescribeStacks",
                "cloudformation:ExecuteChangeSet",
                "cloudformation:GetTemplate",
                "cloudformation:ListChangeSets",
                "cloudformation:ListStacks",
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**catatan**  
Saat membuat kebijakan IAM yang menyertakan izin `codeconnections:CreateForcedTargetSync` dan`codeconnections:CreatePullRequestForResource`, Anda mungkin melihat peringatan di konsol IAM yang menyatakan bahwa tindakan ini tidak ada. Peringatan ini dapat diabaikan, dan kebijakan akan tetap berhasil dibuat. Izin ini diperlukan untuk operasi sinkronisasi Git tertentu meskipun tidak dikenali oleh konsol IAM.