

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

# Amazon S3 conda 채널에 패키지 게시
<a name="publish-packages-s3-channel"></a>

Amazon Simple Storage Service(Amazon S3) 버킷에 conda 패키지를 게시하여 AWS Deadline Cloud(Deadline Cloud) 작업자가 실행 작업을 위해 설치할 수 있습니다. `rattler-build publish` 명령은 로컬 파일 시스템 채널과 동일한 방식으로 Amazon S3에서 작동합니다. 명령은 레시피를 빌드하고 결과를 게시하거나 이미 빌드한 패키지 파일을 게시할 수 있습니다. 두 경우 모두 명령은 버킷에 패키지를 업로드하고 한 번에 채널을 인덱싱합니다.

`rattler-build publish` 명령은 표준 자격 증명 체인을 AWS 사용하여를 인증하므로 모든 AWS 도구처럼 AWS 구성을 사용합니다. 자격 증명 구성에 대한 자세한 내용은 *AWS Command Line Interface (AWS CLI) 사용 설명서*의 [구성 및 자격 증명 파일 설정을](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) 참조하세요.

## 사전 조건
<a name="publish-s3-prereqs"></a>

Amazon S3에 패키지를 게시하기 전에 다음 사전 조건을 완료합니다.
+ **pixi 및rattler-build** - [pixi.sh](https://pixi.sh) pixi를 설치한 다음를 설치합니다`rattler-build`.

  ```
  pixi global install rattler-build
  ```
+ **git** - 샘플 리포지토리를 복제하는 데 필요합니다. 에서 용 Windowsgit는 일부 Windows 샘플 레시피에 필요한 `bash`쉘도 제공합니다. [https://gitforwindows.org/](https://gitforwindows.org/) 
+ **Amazon S3 버킷** - conda 채널로 사용할 Amazon S3 버킷입니다. Deadline Cloud 팜에서 작업 연결 버킷을 사용하거나 별도의 버킷을 생성할 수 있습니다.
+ **AWS 자격 증명** - `aws configure` 명령 또는 `aws login` 명령을 사용하여 워크스테이션에서 자격 증명을 구성합니다. 자세한 내용은 *AWS Command Line Interface 사용 설명서*에서 [AWS CLI설정](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html)을 참조하세요.
+ **IAM 권한** - (선택 사항) 자격 증명의 권한 범위를 줄이려면 Amazon S3 버킷 및 사용하는 채널 접두사(예: )에 대해 다음 권한만 부여하는 (IAM) 정책을 사용할 AWS Identity and Access Management 수 있습니다. `/Conda/*` 
  + `s3:GetObject`
  + `s3:PutObject`
  + `s3:DeleteObject`
  + `s3:ListBucket`
  + `s3:GetBucketLocation`

## Amazon S3 채널에 패키지 게시
<a name="publish-s3-procedure"></a>

`s3://` 대상과 `rattler-build publish` 함께를 사용하여 Amazon S3 conda 채널에 패키지를 게시합니다. 채널이 버킷에 없는 경우는 채널을 자동으로 `rattler-build` 초기화합니다. 시작하기 전에 [사전 조건을](#publish-s3-prereqs) 완료했는지 확인합니다.

다음 예제에서는 Blender의 [Deadline Cloud 샘플 리포지토리에서 4.5 샘플](https://github.com/aws-deadline/deadline-cloud-samples) 레시피를 게시합니다GitHub. 샘플 리포지토리에서 다른 레시피를 대체하거나 자체 레시피를 사용할 수 있습니다.

**Amazon S3 채널에 패키지를 게시하려면**

1. Deadline Cloud 샘플 리포지토리를 복제합니다.

   ```
   git clone https://github.com/aws-deadline/deadline-cloud-samples.git
   ```

1. 디렉터리를 `conda_recipes`로 변경합니다.

   ```
   cd deadline-cloud-samples/conda_recipes
   ```

1. 다음 명령을 실행합니다. *amzn-s3-demo-bucket*을 버킷 이름으로 바꿉니다.

   Linux 및에서 다음 명령을 macOS실행합니다.

   ```
   rattler-build publish blender-4.5/recipe/recipe.yaml \
       --to s3://amzn-s3-demo-bucket/Conda/Default
   ```

   Windows (cmd)에서 다음 명령을 실행합니다.

   ```
   rattler-build publish blender-4.5/recipe/recipe.yaml ^
       --to s3://amzn-s3-demo-bucket/Conda/Default
   ```

   `/Conda/Default` 접두사는 버킷 내에서 채널을 구성합니다. 다른 접두사를 사용할 수 있지만 접두사는 채널을 참조하는 모든 명령 및 대기열 구성에서 일관되어야 합니다.

업데이트된 패키지를 다시 빌드하고 게시하려면 `--build-number=+1`를 추가하여 빌드 번호를 자동으로 증가시킵니다.

```
rattler-build publish blender-4.5/recipe/recipe.yaml \
    --to s3://amzn-s3-demo-bucket/Conda/Default \
    --build-number=+1
```

패키지 레시피가 [conda-forge](https://conda-forge.org/)와 같은 특정 채널의 패키지에 의존하는 경우 명령에 `-c conda-forge`를 추가합니다.

로컬 빌드의 파일과 같이 이미 빌드한 패키지 `.conda` 파일을 게시할 수도 있습니다. *amzn-s3-demo-bucket*을 버킷 이름으로 바꿉니다.

```
rattler-build publish output/linux-64/blender-4.5.0-hb0f4dca_0.conda \
    --to s3://amzn-s3-demo-bucket/Conda/Default
```

## 패키지 테스트
<a name="publish-s3-test"></a>

패키지를 게시한 후 임시 pixi 프로젝트를 생성하여 패키지가 올바르게 작동하는지 확인합니다. 프로젝트는 Amazon S3 채널에서 패키지를 설치합니다.

**패키지를 테스트하려면**

1. 임시 테스트 디렉터리를 생성하고 Amazon S3 채널을 사용하여 pixi 프로젝트를 초기화합니다. *amzn-s3-demo-bucket*을 버킷 이름으로 바꿉니다.

   ```
   mkdir package-test-env
   cd package-test-env
   pixi init --channel s3://amzn-s3-demo-bucket/Conda/Default
   ```

1. 프로젝트에 패키지를 추가합니다.

   ```
   pixi add blender=4.5
   ```

1. 패키지가 올바르게 작동하는지 확인합니다.

   ```
   pixi run blender --version
   ```

## 정리
<a name="publish-s3-cleanup"></a>

테스트 후 테스트 프로젝트 디렉터리를 제거합니다.

**테스트 리소스를 정리하려면**
+ 테스트 프로젝트 디렉터리를 제거합니다.

  Linux 및에서 다음 명령을 macOS실행합니다.

  ```
  rm -rf package-test-env
  ```

  Windows (cmd)에서 다음 명령을 실행합니다.

  ```
  rmdir /s /q package-test-env
  ```

## 빌드 디버깅
<a name="publish-s3-debug"></a>

빌드에 실패하면는 사용자가 조사할 수 있도록 빌드 디렉터리를 `rattler-build` 보존합니다. 다음 명령을 실행하여 모든 환경 변수가 빌드 중에 설정된 상태로 빌드 환경에서 대화형 셸을 엽니다.

```
rattler-build debug shell
```

디버그 쉘에서 파일을 수정하고, 개별 빌드 명령을 실행하고, 종속성을 추가하여 문제를 격리할 수 있습니다. 자세한 내용은 래틀러 빌드 설명서의 빌드 [디버깅](https://rattler-build.prefix.dev/latest/debugging_builds/)을 참조하세요.

## 다른 플랫폼을 위한 패키지 빌드
<a name="publish-s3-cross-platform"></a>

명령은 `rattler-build publish` 명령이 실행되는 워크스테이션의 운영 체제에 대한 패키지를 빌드합니다. Deadline Cloud 플릿이 워크스테이션과 다른 운영 체제를 사용하거나 패키지에 다른 호스트 요구 사항이 있는 경우 다음 옵션을 사용할 수 있습니다.
+ 대상 운영 체제와 일치하는 호스트`rattler-build publish`에서를 실행합니다. 예를 들어 실행 중인 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스Linux를 사용하여 Linux플릿에 대한 패키지를 빌드합니다.
+ Deadline Cloud 패키지 빌드 대기열을 사용하여 대상 플랫폼에서 빌드를 자동화합니다. [패키지 빌드 대기열 생성을 참조하세요](automate-package-builds.md#s3-channel-create-queue).
+ (고급) 교차 컴파일을 사용하여 워크스테이션과 다른 플랫폼용 패키지를 빌드합니다. 자세한 내용은 래틀러 빌드 설명서의 [교차 컴파일](https://rattler-build.prefix.dev/latest/compilers/#cross-compilation)을 참조하세요.

## 다음 단계
<a name="publish-s3-next-steps"></a>

Amazon S3 conda 채널에 패키지를 게시한 후 채널을 사용하도록 Deadline Cloud 대기열을 구성합니다.
+ [사용자 지정 conda 패키지에 대한 프로덕션 대기열 권한 구성](configure-jobs-s3-channel.md#s3-channel-configure-permissions) - 프로덕션 대기열에 Amazon S3 conda 채널에 대한 읽기 전용 액세스 권한을 부여합니다.
+ [대기열 환경에 conda 채널 추가](configure-jobs-s3-channel.md#s3-channel-add-channel) - Amazon S3 conda 채널에서 패키지를 설치하도록 대기열 환경을 구성합니다.