

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# CodeArtifact를 사용하여 Swift Package Manager 설정
<a name="configure-swift"></a>

Swift Package Manager를 사용하여 AWS CodeArtifact에 패키지를 게시하거나 사용하려면 먼저 CodeArtifact 리포지토리에 액세스하기 위한 자격 증명을 설정해야 합니다. CodeArtifact 보안 인증 및 리포지토리 엔드포인트를 사용하여 Swift Package Manager CLI를 구성하는 권장 방법은 `aws codeartifact login` 명령을 사용하는 것입니다. Swift Package Manager를 수동으로 구성할 수도 있습니다.

## 로그인 명령으로 Swift 구성
<a name="configure-swift-login-command"></a>

`aws codeartifact login` 명령을 사용하여 CodeArtifact로 Swift Package Manager를 구성합니다.

**참고**  
로그인 명령을 사용하려면 Swift 5.8 이상이 필요하며 Swift 5.9 이상을 사용하는 것이 좋습니다.

`aws codeartifact login` 명령은 다음을 수행합니다.

1. CodeArtifact에서 인증 토큰을 가져와 사용자 환경에 저장합니다. 보안 인증이 저장되는 방식은 환경의 운영 체제에 따라 달라집니다.

   1. **macOS:** macOS 키체인 애플리케이션에 항목이 생성됩니다.

   1. **Linux 및 Windows:** `~/.netrc` 파일에 항목이 생성됩니다.

   모든 운영 체제에서 보안 인증 항목이 있는 경우 이 명령은 해당 항목을 새 토큰으로 대체합니다.

1. CodeArtifact 리포지토리 엔드포인트 URL을 가져와서 Swift 구성 파일에 추가합니다. 이 명령은 `/path/to/project/.swiftpm/configuration/registries.json`에 있는 프로젝트 수준 구성 파일에 리포지토리 엔드포인트 URL을 추가합니다.

**참고**  
이 `aws codeartifact login` 명령은 `Package.swift` 파일이 포함된 디렉터리에서 실행해야 하는 `swift package-registry` 명령을 호출합니다. 따라서 `aws codeartifact login` 명령은 Swift 프로젝트 내에서 실행해야 합니다.

**로그인 명령으로 Swift를 구성하려면**

1. `Package.swift` 프로젝트 파일이 포함된 Swift 프로젝트 디렉터리로 이동합니다.

1. 다음 `aws codeartifact login` 명령을 실행합니다.

   자신이 소유한 도메인의 리포지토리에 액세스하는 경우 `--domain-owner`를 포함하지 않아도 됩니다. 자세한 내용은 [크로스 계정 도메인](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` 옵션은 CodeArtifact 리포지토리의 패키지가 지정된 네임스페이스에 있는 경우에만 해당 패키지를 사용하도록 애플리케이션을 구성합니다. [CodeArtifact 네임스페이스](codeartifact-concepts.md#welcome-concepts-package-namespace)는 범위와 동의어로, 코드를 논리적 그룹으로 구성하고 코드베이스에 여러 라이브러리가 포함된 경우 발생할 수 있는 이름 충돌을 방지하는 데 사용됩니다.

`login` 호출 후의 기본 승인 기간은 12시간이며, 토큰을 주기적으로 재발급하려면 `login`를 호출해야 합니다. `login` 명령으로 만든 인증 토큰에 관한 자세한 내용은 [`login` 명령으로 생성된 토큰](tokens-authentication.md#auth-token-login)을 참조하세요.

## 로그인 명령 없이 Swift 구성
<a name="configure-swift-without-login-command"></a>

[`aws codeartifact login` 명령을 사용하여 Swift를 구성](#configure-swift-login-command)하는 것이 좋지만 Swift Package Manager 구성을 수동으로 업데이트하여 로그인 명령 없이 Swift Package Manager를 구성할 수도 있습니다.

다음 절차에서는 AWS CLI 를 사용하여 다음을 수행합니다.

1. CodeArtifact에서 인증 토큰을 가져와 사용자 환경에 저장합니다. 보안 인증이 저장되는 방식은 환경의 운영 체제에 따라 달라집니다.

   1. **macOS:** macOS 키체인 애플리케이션에 항목이 생성됩니다.

   1. **Linux 및 Windows:** `~/.netrc` 파일에 항목이 생성됩니다.

1. CodeArtifact 리포지토리 엔드포인트 URL을 가져옵니다.

1. `~/.swiftpm/configuration/registries.json` 구성 파일에 리포지토리 엔드포인트 URL 및 인증 유형이 포함된 항목을 추가합니다.

**로그인 명령 없이 Swift를 구성하려면**

1. 명령줄에서 다음 명령을 사용하여 CodeArtifact 인증 토큰을 가져와 환경 변수에 저장합니다.
   + *my\$1domain*을 CodeArtifact 도메인 이름으로 변경합니다.
   + *111122223333*을 도메인 소유자의 AWS 계정 ID로 바꿉니다. 소유한 도메인의 리포지토리에 액세스하는 경우 `--domain-owner`를 포함하지 않아도 됩니다. 자세한 내용은 [크로스 계정 도메인](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(기본 명령 쉘 사용):

     ```
     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
     ```
   + Windows PowerShell:

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

------

1. 다음 명령을 실행하여 CodeArtifact 리포지토리의 엔드포인트를 가져올 수 있습니다. 리포지토리 엔드포인트는 패키지를 사용하거나 게시하도록 Swift Package Manager를 리포지토리로 이동하는 데 사용됩니다.
   + *my\$1domain*을 CodeArtifact 도메인 이름으로 변경합니다.
   + *111122223333*을 도메인 소유자의 AWS 계정 ID로 바꿉니다. 소유한 도메인의 리포지토리에 액세스하는 경우 `--domain-owner`를 포함하지 않아도 됩니다. 자세한 내용은 [크로스 계정 도메인](domain-overview.md#domain-overview-cross-account) 단원을 참조하십시오.
   + *my\$1repo*를 CodeArtifact 리포지토리 이름으로 변경합니다.

------
#### [ 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 ]
   + 윈도우(기본 커맨드 쉘 사용):

     ```
     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
     ```
   + Windows 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은 리포지토리 엔드포인트의 예입니다.

   ```
   https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/swift/my_repo/
   ```
**참고**  
듀얼 스택 엔드포인트를 사용하려면 `codeartifact.region.on.aws` 엔드포인트를 사용합니다.
**중요**  
Swift Package Manager를 구성하는 데 사용할 때는 리포지토리 URL 엔드포인트 끝에 `login`을 추가해야 합니다. 이 절차는 이 절차의 명령으로 자동으로 수행됩니다.

1. 이 두 값을 환경 변수에 저장한 후 `swift package-registry login` 명령을 사용하여 Swift에 전달합니다.

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

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

------
#### [ Windows ]
   + 윈도우(기본 커맨드 쉘 사용):

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

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

------

1. 그런 다음 애플리케이션에서 사용하는 패키지 레지스트리를 업데이트하여 CodeArtifact 리포지토리에서 모든 종속성을 가져올 수 있도록 합니다. 이 명령은 패키지 종속성을 해결하려는 프로젝트 디렉터리에서 실행해야 합니다.

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

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

------
#### [ Windows ]
   + Windows(기본 명령 쉘 사용):

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

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

------

   이 `--scope` 옵션은 CodeArtifact 리포지토리의 패키지가 지정된 범위 내에 있는 경우에만 해당 패키지를 사용하도록 애플리케이션을 구성합니다. 범위는 [CodeArtifact 네임스페이스](codeartifact-concepts.md#welcome-concepts-package-namespace)와 동의어이며 코드를 논리적 그룹으로 구성하고 코드 베이스에 여러 라이브러리가 포함된 경우 발생할 수 있는 이름 충돌을 방지하는 데 사용됩니다.

1. 프로젝트 디렉터리에서 다음 명령을 실행하여 프로젝트 수준 `.swiftpm/configuration/registries.json` 파일의 내용을 보면 구성이 올바르게 설정되었는지 확인할 수 있습니다.

   ```
   $ 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
   }
   ```

CodeArtifact 리포지토리로 Swift Package Manager를 구성했으니, 이제 이 리포지토리를 사용하여 Swift 패키지를 게시하고 이 리포지토리에서 Swift 패키지를 사용할 수 있습니다. 자세한 내용은 [Swift 패키지 사용 및 게시](swift-publish-consume.md) 단원을 참조하십시오.