

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

# Menggunakan CodeArtifact dengan Swift
<a name="using-swift"></a>

Topik-topik ini menjelaskan cara menggunakan Swift Package Manager CodeArtifact untuk menginstal dan mempublikasikan paket Swift.

**catatan**  
CodeArtifact mendukung Swift 5.8 dan yang lebih baru dan Xcode 14.3 dan yang lebih baru.  
CodeArtifact merekomendasikan Swift 5.9 dan yang lebih baru dan Xcode 15 dan yang lebih baru.

**Topics**
+ [Konfigurasikan Swift dengan CodeArtifact](configure-swift.md)
+ [Mengkonsumsi dan menerbitkan paket Swift](swift-publish-consume.md)
+ [Nama paket Swift dan normalisasi namespace](swift-name-normalization.md)
+ [Pemecahan masalah cepat](swift-troubleshooting.md)

# Konfigurasikan Swift Package Manager dengan CodeArtifact
<a name="configure-swift"></a>

Untuk menggunakan Swift Package Manager untuk memublikasikan paket ke atau menggunakan paket dari AWS CodeArtifact, Anda harus terlebih dahulu menyiapkan kredensil untuk mengakses repositori Anda. CodeArtifact Metode yang disarankan untuk mengonfigurasi CLI Swift Package Manager dengan CodeArtifact kredensi dan titik akhir repositori Anda adalah dengan menggunakan perintah. `aws codeartifact login` Anda juga dapat mengkonfigurasi Swift Package Manager secara manual.

## Konfigurasikan Swift dengan perintah login
<a name="configure-swift-login-command"></a>

Gunakan `aws codeartifact login` perintah untuk mengkonfigurasi Swift Package Manager dengan CodeArtifact.

**catatan**  
Untuk menggunakan perintah login, Swift 5.8 atau yang lebih baru diperlukan dan Swift 5.9 atau yang lebih baru direkomendasikan.

`aws codeartifact login`Perintah akan melakukan hal berikut:

1. Ambil token otentikasi dari CodeArtifact dan simpan di lingkungan Anda. Bagaimana kredensil disimpan tergantung pada sistem operasi lingkungan:

   1. **macOS:** Entri dibuat di aplikasi macOS Keychain.

   1. **Linux dan Windows:** Entri dibuat dalam `~/.netrc` file.

   Di semua sistem operasi, jika ada entri kredensil, perintah ini menggantikan entri itu dengan token baru.

1. Ambil URL endpoint CodeArtifact repositori Anda dan tambahkan ke file konfigurasi Swift Anda. Perintah menambahkan URL titik akhir repositori ke file konfigurasi tingkat proyek yang terletak di. `/path/to/project/.swiftpm/configuration/registries.json`

**catatan**  
`aws codeartifact login`Perintah memanggil `swift package-registry` perintah yang harus dijalankan dari direktori yang berisi `Package.swift` file. Karena itu, `aws codeartifact login` perintah harus dijalankan dari dalam proyek Swift.

**Untuk mengkonfigurasi Swift dengan perintah login**

1. Arahkan ke direktori proyek Swift yang berisi `Package.swift` file proyek Anda.

1. Jalankan perintah `aws codeartifact login` berikut.

   Jika Anda mengakses repositori di domain milik Anda, Anda tidak perlu menyertakan `--domain-owner`. Untuk informasi selengkapnya, lihat [Domain lintas akun](domain-overview.md#domain-overview-cross-account).

   ```
   aws codeartifact login --tool swift --domain my_domain \
   --domain-owner 111122223333 --repository my_repo \
   [--namespace my_namespace]
   ```

`--namespace`Opsi mengonfigurasi aplikasi untuk hanya menggunakan paket dari CodeArtifact repositori Anda jika mereka berada di namespace yang ditentukan. [CodeArtifact namespace](codeartifact-concepts.md#welcome-concepts-package-namespace) identik dengan cakupan, dan digunakan untuk mengatur kode ke dalam grup logis dan untuk mencegah tabrakan nama yang dapat terjadi ketika basis kode Anda menyertakan beberapa pustaka.

Periode otorisasi default setelah memanggil `login` adalah 12 jam, dan `login` harus dipanggil untuk menyegarkan token secara berkala. Untuk informasi selengkapnya tentang token otorisasi yang dibuat dengan perintah `login`, lihat [Token dibuat dengan perintah `login`](tokens-authentication.md#auth-token-login).

## Konfigurasikan Swift tanpa perintah login
<a name="configure-swift-without-login-command"></a>

Meskipun disarankan agar Anda [mengkonfigurasi Swift dengan `aws codeartifact login` perintah](#configure-swift-login-command), Anda juga dapat mengkonfigurasi Swift Package Manager tanpa perintah login dengan memperbarui konfigurasi Swift Package Manager secara manual.

Dalam prosedur berikut, Anda akan menggunakan AWS CLI untuk melakukan hal berikut:

1. Ambil token otentikasi dari CodeArtifact dan simpan di lingkungan Anda. Bagaimana kredensil disimpan tergantung pada sistem operasi lingkungan:

   1. **macOS:** Entri dibuat di aplikasi macOS Keychain.

   1. **Linux dan Windows:** Entri dibuat dalam `~/.netrc` file.

1. Ambil URL titik akhir CodeArtifact repositori Anda.

1. Dalam file `~/.swiftpm/configuration/registries.json` konfigurasi, tambahkan entri dengan URL titik akhir repositori dan jenis otentikasi Anda.

**Untuk mengkonfigurasi Swift tanpa perintah login**

1. Dalam baris perintah, gunakan perintah berikut untuk mengambil token CodeArtifact otorisasi dan menyimpannya dalam variabel lingkungan.
   + Ganti *my\$1domain* dengan nama CodeArtifact domain Anda.
   + Ganti *111122223333* dengan ID AWS akun pemilik domain. Jika Anda mengakses repositori di domain milik Anda, Anda tidak perlu menyertakan `--domain-owner`. Untuk informasi selengkapnya, lihat [Domain lintas akun](domain-overview.md#domain-overview-cross-account).

------
#### [ macOS and Linux ]

   ```
   export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text`
   ```

------
#### [ Windows ]
   + Windows (menggunakan shell perintah default):

     ```
     for /f %i in ('aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text') do set CODEARTIFACT_AUTH_TOKEN=%i
     ```
   + Jendela PowerShell:

     ```
     $env:CODEARTIFACT_AUTH_TOKEN = aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text
     ```

------

1. Dapatkan endpoint CodeArtifact repositori Anda dengan menjalankan perintah berikut. Endpoint repositori Anda digunakan untuk mengarahkan Swift Package Manager ke repositori Anda untuk mengkonsumsi atau menerbitkan paket.
   + Ganti *my\$1domain* dengan nama CodeArtifact domain Anda.
   + Ganti *111122223333* dengan ID AWS akun pemilik domain. Jika Anda mengakses repositori di domain milik Anda, Anda tidak perlu menyertakan `--domain-owner`. Untuk informasi selengkapnya, lihat [Domain lintas akun](domain-overview.md#domain-overview-cross-account).
   + Ganti *my\$1repo* dengan nama CodeArtifact repositori Anda.

------
#### [ macOS and Linux ]

   ```
   export CODEARTIFACT_REPO=`aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format swift --query repositoryEndpoint --output text`
   ```

------
#### [ Windows ]
   + Windows (menggunakan shell perintah default):

     ```
     for /f %i in ('aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format swift --query repositoryEndpoint --output text') do set CODEARTIFACT_REPO=%i
     ```
   + Jendela PowerShell:

     ```
     $env:CODEARTIFACT_REPO = aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format swift --query repositoryEndpoint --output text
     ```

------

   URL berikut adalah contoh titik akhir repositori.

   ```
   https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/swift/my_repo/
   ```
**catatan**  
Untuk menggunakan endpoint dualstack, gunakan endpoint. `codeartifact.region.on.aws`
**penting**  
Anda harus menambahkan `login` ke akhir endpoint URL repositori saat digunakan untuk mengkonfigurasi Swift Package Manager. Ini dilakukan untuk Anda dalam perintah prosedur ini.

1. Dengan dua nilai ini disimpan dalam variabel lingkungan, teruskan ke Swift menggunakan `swift package-registry login` perintah sebagai berikut:

------
#### [ macOS and Linux ]

   ```
   swift package-registry login ${CODEARTIFACT_REPO}login --token ${CODEARTIFACT_AUTH_TOKEN}
   ```

------
#### [ Windows ]
   + Windows (menggunakan shell perintah default):

     ```
     swift package-registry login %CODEARTIFACT_REPO%login --token %CODEARTIFACT_AUTH_TOKEN%
     ```
   + Jendela PowerShell:

     ```
     swift package-registry login $Env:CODEARTIFACT_REPO+"login" --token $Env:CODEARTIFACT_AUTH_TOKEN
     ```

------

1. Selanjutnya, perbarui registri paket yang digunakan oleh aplikasi Anda sehingga ketergantungan apa pun akan ditarik dari CodeArtifact repositori Anda. Perintah ini harus dijalankan di direktori proyek tempat Anda mencoba menyelesaikan ketergantungan paket:

------
#### [ macOS and Linux ]

   ```
   $ swift package-registry set ${CODEARTIFACT_REPO} [--scope my_scope]
   ```

------
#### [ Windows ]
   + Windows (menggunakan shell perintah default):

     ```
     $ swift package-registry set %CODEARTIFACT_REPO% [--scope my_scope]
     ```
   + Jendela PowerShell:

     ```
     $ swift package-registry set $Env:CODEARTIFACT_REPO [--scope my_scope]
     ```

------

   `--scope`Opsi mengonfigurasi aplikasi untuk hanya menggunakan paket dari CodeArtifact repositori Anda jika mereka berada dalam lingkup yang ditentukan. Cakupan identik dengan [CodeArtifact ruang nama](codeartifact-concepts.md#welcome-concepts-package-namespace), dan digunakan untuk mengatur kode ke dalam grup logis dan untuk mencegah tabrakan nama yang dapat terjadi ketika basis kode Anda menyertakan beberapa pustaka.

1. Anda dapat mengonfirmasi bahwa konfigurasi telah diatur dengan benar dengan melihat isi `.swiftpm/configuration/registries.json` file tingkat proyek dengan menjalankan perintah berikut di direktori proyek Anda:

   ```
   $ cat .swiftpm/configuration/registries.json
   {
     "authentication" : {
   
     },
     "registries" : {
       "[default]" : {
         "url" : "https://my-domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/swift/my-repo/"
       }
     },
     "version" : 1
   }
   ```

Sekarang setelah Anda mengkonfigurasi Swift Package Manager dengan CodeArtifact repositori Anda, Anda dapat menggunakannya untuk mempublikasikan dan menggunakan paket Swift ke dan dari itu. Untuk informasi selengkapnya, lihat [Mengkonsumsi dan menerbitkan paket Swift](swift-publish-consume.md).

# Mengkonsumsi dan menerbitkan paket Swift
<a name="swift-publish-consume"></a>

## Mengkonsumsi paket Swift dari CodeArtifact
<a name="consume-swift-packages"></a>

Gunakan prosedur berikut untuk mengkonsumsi paket Swift dari AWS CodeArtifact repositori.

**Untuk mengkonsumsi paket Swift dari repositori CodeArtifact**

1. Jika belum, ikuti langkah-langkah [Konfigurasikan Swift Package Manager dengan CodeArtifact](configure-swift.md) untuk mengonfigurasi Swift Package Manager untuk menggunakan CodeArtifact repositori Anda dengan kredensi yang tepat.
**catatan**  
Token otorisasi yang dihasilkan berlaku selama 12 jam. Anda harus membuat yang baru jika 12 jam telah berlalu sejak token dibuat.

1. Edit `Package.swift` file di folder proyek aplikasi Anda untuk memperbarui dependensi paket yang akan digunakan oleh proyek Anda.

   1. Jika `Package.swift` file tidak berisi `dependencies` bagian, tambahkan satu.

   1. Di `dependencies` bagian `Package.swift` file, tambahkan paket yang ingin Anda gunakan dengan menambahkan pengenal paketnya. Pengidentifikasi paket terdiri dari ruang lingkup dan nama paket yang dipisahkan oleh titik. Lihat cuplikan kode mengikuti langkah selanjutnya untuk contoh.
**Tip**  
Untuk menemukan pengenal paket, Anda dapat menggunakan CodeArtifact konsol. Temukan versi paket tertentu yang ingin Anda gunakan dan rujuk petunjuk **pintasan Instal** pada halaman versi paket.

   1. Jika `Package.swift` file tidak berisi `targets` bagian, tambahkan satu.

   1. Di `targets` bagian ini, tambahkan target yang perlu menggunakan ketergantungan.

      Cuplikan berikut adalah contoh cuplikan yang menunjukkan dikonfigurasi `dependencies` dan `targets` bagian dalam file: `Package.swift`

      ```
      ...
          ],
          dependencies: [
              .package(id: "my_scope.package_name", from: "1.0.0")
          ],
          targets: [
            .target(
               name: "MyApp",
               dependencies: ["package_name"]
            ),...
          ],
      ...
      ```

1. Sekarang semuanya sudah dikonfigurasi, gunakan perintah berikut untuk mengunduh dependensi paket dari. CodeArtifact

   ```
   swift package resolve
   ```

## Mengkonsumsi paket Swift dari CodeArtifact dalam Xcode
<a name="consume-swift-packages-xcode"></a>

Gunakan prosedur berikut untuk menggunakan paket Swift dari CodeArtifact repositori di Xcode.

**Untuk menggunakan paket Swift dari CodeArtifact repositori di Xcode**

1. Jika belum, ikuti langkah-langkah [Konfigurasikan Swift Package Manager dengan CodeArtifact](configure-swift.md) untuk mengonfigurasi Swift Package Manager untuk menggunakan CodeArtifact repositori Anda dengan kredensi yang tepat.
**catatan**  
Token otorisasi yang dihasilkan berlaku selama 12 jam. Anda harus membuat yang baru jika 12 jam telah berlalu sejak token dibuat.

1. Tambahkan paket sebagai dependensi dalam proyek Anda di Xcode.

   1. Pilih **File > Tambah Paket**.

   1. Cari paket Anda menggunakan bilah pencarian. Pencarian Anda harus dalam formulir`package_scope.package_name`.

   1. Setelah ditemukan, pilih paket dan pilih **Add Package**.

   1. Setelah paket diverifikasi, pilih produk paket yang ingin Anda tambahkan sebagai dependensi, dan pilih **Add Package**.

Jika Anda mengalami masalah menggunakan CodeArtifact repositori Anda dengan Xcode, lihat [Pemecahan masalah cepat](swift-troubleshooting.md) masalah umum dan kemungkinan perbaikan.

## Menerbitkan paket Swift ke CodeArtifact
<a name="publish-swift-packages"></a>

CodeArtifact merekomendasikan Swift 5.9 atau yang lebih baru dan menggunakan `swift package-registry publish` perintah untuk mempublikasikan paket Swift. Jika Anda menggunakan versi sebelumnya, Anda harus menggunakan perintah Curl untuk mempublikasikan paket Swift ke. CodeArtifact

### Menerbitkan CodeArtifact paket dengan `swift package-registry publish` perintah
<a name="publish-swift-packages-publish-command"></a>

Gunakan prosedur berikut dengan Swift 5.9 atau yang lebih baru untuk mempublikasikan paket Swift ke CodeArtifact repositori dengan Swift Package Manager.

1. Jika belum, ikuti langkah-langkah [Konfigurasikan Swift Package Manager dengan CodeArtifact](configure-swift.md) untuk mengonfigurasi Swift Package Manager untuk menggunakan CodeArtifact repositori Anda dengan kredensi yang tepat.
**catatan**  
Token otorisasi yang dihasilkan berlaku selama 12 jam. Anda harus membuat yang baru jika 12 jam telah berlalu sejak dibuat.

1. Arahkan ke direktori proyek Swift yang berisi `Package.swift` file untuk paket Anda.

1. Jalankan `swift package-registry publish` perintah berikut untuk mempublikasikan paket. Perintah membuat arsip sumber paket dan menerbitkannya ke CodeArtifact repositori Anda.

   ```
   swift package-registry publish packageScope.packageName packageVersion
   ```

   Contoh:

   ```
   swift package-registry publish myScope.myPackage 1.0.0
   ```

1. Anda dapat mengonfirmasi bahwa paket telah diterbitkan dan ada di repositori dengan memeriksa di konsol atau menggunakan `aws codeartifact list-packages` perintah sebagai berikut:

   ```
   aws codeartifact list-packages --domain my_domain --repository my_repo
   ```

   Anda dapat membuat daftar versi tunggal paket menggunakan `aws codeartifact list-package-versions` perintah sebagai berikut:

   ```
   aws codeartifact list-package-versions --domain my_domain --repository my_repo \
   --format swift --namespace my_scope --package package_name
   ```

### Menerbitkan CodeArtifact paket dengan Curl
<a name="publish-swift-packages-curl"></a>

Meskipun disarankan untuk menggunakan `swift package-registry publish` perintah yang disertakan dengan Swift 5.9 atau yang lebih baru, Anda juga dapat menggunakan Curl untuk mempublikasikan paket Swift ke. CodeArtifact

Gunakan prosedur berikut untuk mempublikasikan paket Swift ke AWS CodeArtifact repositori dengan Curl.

1. Jika belum, buat dan perbarui variabel `CODEARTIFACT_AUTH_TOKEN` dan `CODEARTIFACT_REPO` lingkungan dengan mengikuti langkah-langkahnya[Konfigurasikan Swift Package Manager dengan CodeArtifact](configure-swift.md).
**catatan**  
Token otorisasi berlaku selama 12 jam. Anda perlu menyegarkan variabel `CODEARTIFACT_AUTH_TOKEN` lingkungan Anda dengan kredensi baru jika 12 jam telah berlalu sejak dibuat.

1. Pertama, jika Anda tidak memiliki paket Swift yang dibuat, Anda dapat melakukannya dengan menjalankan perintah berikut:

   ```
   mkdir testDir && cd testDir
   swift package init
   git init .
   swift package archive-source
   ```

1. Gunakan perintah Curl berikut untuk mempublikasikan paket Swift Anda ke: CodeArtifact

------
#### [ macOS and Linux ]

   ```
   curl -X PUT  --user "aws:$CODEARTIFACT_AUTH_TOKEN" \
   -H "Accept: application/vnd.swift.registry.v1+json" \
   -F source-archive="@test_dir_package_name.zip" \
   "${CODEARTIFACT_REPO}my_scope/package_name/packageVersion"
   ```

------
#### [ Windows ]

   ```
   curl -X PUT  --user "aws:%CODEARTIFACT_AUTH_TOKEN%" \
   -H "Accept: application/vnd.swift.registry.v1+json" \
   -F source-archive="@test_dir_package_name.zip" \
   "%CODEARTIFACT_REPO%my_scope/package_name/packageVersion"
   ```

------

1. Anda dapat mengonfirmasi bahwa paket telah diterbitkan dan ada di repositori dengan memeriksa di konsol atau menggunakan `aws codeartifact list-packages` perintah sebagai berikut:

   ```
   aws codeartifact list-packages --domain my_domain --repository my_repo
   ```

   Anda dapat membuat daftar versi tunggal paket menggunakan `aws codeartifact list-package-versions` perintah sebagai berikut:

   ```
   aws codeartifact list-package-versions --domain my_domain --repository my_repo \
   --format swift --namespace my_scope --package package_name
   ```

## Mengambil paket Swift dari GitHub dan menerbitkan ulang ke CodeArtifact
<a name="publish-swift-packages-from-github"></a>

Gunakan prosedur berikut untuk mengambil paket Swift dari GitHub dan menerbitkannya kembali ke repositori. CodeArtifact 

**Untuk mengambil paket Swift dari GitHub dan menerbitkannya kembali ke CodeArtifact**

1. Jika belum, ikuti langkah-langkah [Konfigurasikan Swift Package Manager dengan CodeArtifact](configure-swift.md) untuk mengonfigurasi Swift Package Manager untuk menggunakan CodeArtifact repositori Anda dengan kredensi yang tepat.
**catatan**  
Token otorisasi yang dihasilkan berlaku selama 12 jam. Anda harus membuat yang baru jika 12 jam telah berlalu sejak token dibuat.

1. Kloning repositori git dari paket Swift yang ingin Anda ambil dan terbitkan ulang dengan menggunakan perintah berikut. `git clone` Untuk informasi tentang kloning GitHub repositori, lihat [Mengkloning repositori di](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) Dokumen. GitHub 

   ```
   git clone repoURL
   ```

1. Arahkan ke repositori yang baru saja Anda kloning:

   ```
   cd repoName
   ```

1. Buat paket dan publikasikan ke CodeArtifact.

   1. **Direkomendasikan:** Jika Anda menggunakan Swift 5.9 atau yang lebih baru, Anda dapat menggunakan `swift package-registry publish` perintah berikut untuk membuat paket dan mempublikasikannya ke repositori yang dikonfigurasi CodeArtifact .

      ```
      swift package-registry publish packageScope.packageName versionNumber
      ```

      Contoh:

      ```
      swift package-registry publish myScope.myPackage 1.0.0
      ```

   1. Jika Anda menggunakan versi Swift yang lebih tua dari 5.9, Anda harus menggunakan `swift archive-source` perintah untuk membuat paket dan kemudian menggunakan perintah Curl untuk mempublikasikannya.

      1. Jika Anda belum mengonfigurasi variabel `CODEARTIFACT_AUTH_TOKEN` dan `CODEARTIFACT_REPO` lingkungan, atau sudah lebih dari 12 jam sejak Anda memilikinya, ikuti langkah-langkahnya[Konfigurasikan Swift tanpa perintah login](configure-swift.md#configure-swift-without-login-command).

      1. Buat paket Swift dengan menggunakan `swift package archive-source` perintah:

         ```
         swift package archive-source
         ```

         Jika berhasil, Anda akan melihat `Created package_name.zip` di baris perintah.

      1. Gunakan perintah Curl berikut untuk mempublikasikan paket Swift ke: CodeArtifact

------
#### [ macOS and Linux ]

         ```
         curl -X PUT  --user "aws:$CODEARTIFACT_AUTH_TOKEN" \
         -H "Accept: application/vnd.swift.registry.v1+json" \
         -F source-archive="@package_name.zip" \
         "${CODEARTIFACT_REPO}my_scope/package_name/packageVersion"
         ```

------
#### [ Windows ]

         ```
         curl -X PUT  --user "aws:%CODEARTIFACT_AUTH_TOKEN%" \
         -H "Accept: application/vnd.swift.registry.v1+json" \
         -F source-archive="@package_name.zip" \
         "%CODEARTIFACT_REPO%my_scope/package_name/packageVersion"
         ```

------

1. Anda dapat mengonfirmasi bahwa paket telah diterbitkan dan ada di repositori dengan memeriksa di konsol atau menggunakan `aws codeartifact list-packages` perintah sebagai berikut:

   ```
   aws codeartifact list-packages --domain my_domain --repository my_repo
   ```

   Anda dapat membuat daftar versi tunggal paket menggunakan `aws codeartifact list-package-versions` perintah sebagai berikut:

   ```
   aws codeartifact list-package-versions --domain my_domain --repository my_repo \
   --format swift --namespace my_scope --package package_name
   ```

# Nama paket Swift dan normalisasi namespace
<a name="swift-name-normalization"></a>

CodeArtifact menormalkan nama paket dan ruang nama sebelum menyimpannya, yang berarti nama di CodeArtifact mungkin berbeda dari yang disediakan saat paket diterbitkan.

**Nama paket dan normalisasi namespace: CodeArtifact menormalkan** nama paket Swift dan ruang nama dengan mengonversi semua huruf menjadi huruf kecil.

**Normalisasi versi paket:** CodeArtifact tidak menormalkan versi paket Swift. [Perhatikan bahwa CodeArtifact hanya mendukung pola versi Semantic Versioning 2.0, untuk informasi selengkapnya tentang Pembuatan Versi Semantik, lihat Versi Semantik 2.0.0.](https://semver.org/spec/v2.0.0.html)

Nama paket dan namespace yang tidak dinormalisasi dapat digunakan dengan permintaan API dan CLI karena CodeArtifact melakukan normalisasi pada input untuk permintaan tersebut. Misalnya, input `--package myPackage` dan `--namespace myScope` akan dinormalisasi dan mengembalikan paket yang memiliki nama paket dinormalisasi `mypackage` dan namespace dari. `myscope`

**Anda harus menggunakan nama yang dinormalisasi ARNs, seperti dalam kebijakan IAM.**

Untuk menemukan nama paket yang dinormalisasi, gunakan `aws codeartifact list-packages` perintah. Untuk informasi selengkapnya, lihat [Mencantumkan nama paket](list-packages.md).

# Pemecahan masalah cepat
<a name="swift-troubleshooting"></a>

Informasi berikut dapat membantu Anda memecahkan masalah umum dengan Swift dan. CodeArtifact

## Saya mendapatkan kesalahan 401 di Xcode bahkan setelah mengonfigurasi Swift Package Manager
<a name="swift-troubleshooting-xcode"></a>

**Masalah:** [Ketika Anda mencoba menambahkan paket dari CodeArtifact repositori Anda sebagai ketergantungan ke proyek Swift Anda di Xcode, Anda mendapatkan kesalahan 401 yang tidak sah bahkan setelah Anda mengikuti instruksi untuk menghubungkan Swift ke. CodeArtifact](configure-swift.md)

**Kemungkinan perbaikan:** Ini dapat disebabkan oleh masalah dengan aplikasi macOS Keychain, tempat kredensil CodeArtifact Anda disimpan. Untuk memperbaikinya, kami sarankan untuk membuka aplikasi Keychain dan menghapus semua CodeArtifact entri dan mengonfigurasi Swift Package Manager dengan CodeArtifact repositori Anda lagi dengan mengikuti instruksi di. [Konfigurasikan Swift Package Manager dengan CodeArtifact](configure-swift.md)

## Xcode hang pada mesin CI karena permintaan gantungan kunci untuk kata sandi
<a name="swift-troubleshooting-ci-machine"></a>

**Masalah:** Saat Anda mencoba menarik paket Swift dari CodeArtifact sebagai bagian dari build Xcode di server continuous integration (CI), seperti dengan GitHub Actions, otentikasi dengan CodeArtifact dapat hang dan akhirnya gagal dengan pesan kesalahan yang mirip dengan berikut ini:

`Failed to save credentials for \'https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com\' to keychain: status -60008`

**Kemungkinan perbaikan:** Ini disebabkan oleh kredensil yang tidak disimpan ke gantungan kunci pada mesin CI, dan Xcode hanya mendukung kredensil yang disimpan di Keychain. Untuk memperbaikinya, kami sarankan membuat entri gantungan kunci secara manual menggunakan langkah-langkah berikut:

1. Siapkan gantungan kunci.

   ```
   KEYCHAIN_PASSWORD=$(openssl rand -base64 20)
   KEYCHAIN_NAME=login.keychain
   SYSTEM_KEYCHAIN=/Library/Keychains/System.keychain
   
   if [ -f $HOME/Library/Keychains/"${KEYCHAIN_NAME}"-db ]; then
       echo "Deleting old ${KEYCHAIN_NAME} keychain"
       security delete-keychain "${KEYCHAIN_NAME}"
   fi
   echo "Create Keychain"
   security create-keychain -p "${KEYCHAIN_PASSWORD}" "${KEYCHAIN_NAME}"
   
   EXISTING_KEYCHAINS=( $( security list-keychains | sed -e 's/ *//' | tr '\n' ' ' | tr -d '"') )
   sudo security list-keychains -s "${KEYCHAIN_NAME}" "${EXISTING_KEYCHAINS[@]}"
   
   echo "New keychain search list :"
   security list-keychain 
   
   echo "Configure keychain : remove lock timeout"
   security unlock-keychain -p "${KEYCHAIN_PASSWORD}" "${KEYCHAIN_NAME}"
   security set-keychain-settings "${KEYCHAIN_NAME}"
   ```

1. Dapatkan token CodeArtifact otentikasi dan titik akhir repositori Anda.

   ```
   export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token \
                                       --region us-west-2 \
                                       --domain my_domain   \
                                       --domain-owner 111122223333   \
                                       --query authorizationToken  \
                                       --output text`
                                        
   export CODEARTIFACT_REPO=`aws codeartifact get-repository-endpoint  \
                                 --region us-west-2   \
                                 --domain my_domain   \
                                 --domain-owner 111122223333   \
                                 --format swift     \
                                 --repository my_repo    \
                                 --query repositoryEndpoint   \
                                 --output text`
   ```

1. Buat entri Keychain secara manual.

   ```
   SERVER=$(echo $CODEARTIFACT_REPO | sed  's/https:\/\///g' | sed 's/.com.*$/.com/g')
   AUTHORIZATION=(-T /usr/bin/security -T /usr/bin/codesign -T /usr/bin/xcodebuild -T /usr/bin/swift \
                  -T /Applications/Xcode-15.2.app/Contents/Developer/usr/bin/xcodebuild)
   
   security delete-internet-password -a token -s $SERVER -r htps "${KEYCHAIN_NAME}"
   
   security add-internet-password -a token \
                                  -s $SERVER \
                                  -w $CODEARTIFACT_AUTH_TOKEN \
                                  -r htps \
                                  -U \
                                  "${AUTHORIZATION[@]}" \
                                  "${KEYCHAIN_NAME}"
   
   security set-internet-password-partition-list \
                -a token \
                -s $SERVER \
                -S "com.apple.swift-package,com.apple.security,com.apple.dt.Xcode,apple-tool:,apple:,codesign" \
                -k "${KEYCHAIN_PASSWORD}" "${KEYCHAIN_NAME}"
   
   security find-internet-password   "${KEYCHAIN_NAME}"
   ```

Untuk informasi selengkapnya tentang kesalahan ini dan solusinya, lihat [https://github.com/apple/swift-package-manager/issues/7236](https://github.com/apple/swift-package-manager/issues/7236).