

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

# CodeArtifact 토큰 새로고침
<a name="samples-code-artifact"></a>

CodeArtifact를 사용하여 Python 종속성을 설치하는 경우 Amazon MWAA에는 활성 토큰이 필요합니다. Amazon MWAA가 런타임의 CodeArtifact 리포지토리에 액세스할 수 있도록 하려면 [시작 스크립트](using-startup-script.md)를 사용하고 토큰과 [https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-extra-index-url](https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-extra-index-url)을 설정하면 됩니다.

다음 주제에서는 [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/codeartifact.html#CodeArtifact.Client.get_authorization_token](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/codeartifact.html#CodeArtifact.Client.get_authorization_token) CodeArtifact API 작업을 사용하여 환경이 시작되거나 업데이트될 때마다 새 토큰을 검색하는 시작 스크립트를 만드는 방법을 설명합니다.

**Topics**
+ [버전](#samples-code-artifact-version)
+ [사전 조건](#samples-code-artifact-prereqs)
+ [권한](#samples-code-artifact-permissions)
+ [코드 샘플](#samples-code-artifact-code)
+ [다음 단계](#samples-code-artifact-next-up)

## 버전
<a name="samples-code-artifact-version"></a>

이 페이지의 코드 예제는 [Python 3.10](https://peps.python.org/pep-0619/)의 **Apache Airflow v2** 및 [Python 3.11](https://peps.python.org/pep-0664/)의 **Apache Airflow v3**에서 사용할 수 있습니다.

## 사전 조건
<a name="samples-code-artifact-prereqs"></a>

이 페이지의 이 샘플 코드를 사용하려면 다음 항목이 필요합니다.
+ [Amazon MWAA 환경](get-started.md).
+ 환경에 대한 종속성을 저장하는 [CodeArtifact 리포지토리](https://docs.aws.amazon.com/codeartifact/latest/ug/create-repo.html)입니다.

## 권한
<a name="samples-code-artifact-permissions"></a>

CodeArtifact 토큰을 새로 고치고 결과를 Amazon S3에 쓰려면 Amazon MWAA의 실행 역할에 다음과 같은 권한이 있어야 합니다.
+ 이 `codeartifact:GetAuthorizationToken` 작업을 통해 Amazon MWAA는 CodeArtifact에서 새 토큰을 검색할 수 있습니다. 다음 정책은 사용자가 생성하는 모든 CodeArtifact 도메인에 권한을 부여합니다. 명령문의 리소스 값을 수정하고 사용자 환경에서 액세스할 도메인만 지정하여 도메인에 대한 액세스를 추가로 제한할 수 있습니다.

  ```
  {
    "Effect": "Allow",
    "Action": "codeartifact:GetAuthorizationToken",
    "Resource": "arn:aws:codeartifact:us-west-2:*:domain/*"
  }
  ```
+ CodeArtifact [https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_GetAuthorizationToken.html](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_GetAuthorizationToken.html) API 오퍼레이션을 호출하려면 `sts:GetServiceBearerToken` 액션이 필요합니다. 이 작업은 `pip`와(과) CodeArtifact 같은 패키지 관리자를 사용할 때 사용해야 하는 토큰을 반환합니다. CodeArtifact 리포지토리와 함께 패키지 관리자를 사용하려면 사용자 환경의 실행 역할 역할이 다음 정책 설명에 나열된 바와 같이 `sts:GetServiceBearerToken`을 허용해야 합니다.

  ```
  {
    "Sid": "AllowServiceBearerToken",
    "Effect": "Allow",
    "Action": "sts:GetServiceBearerToken",
    "Resource": "*"
  }
  ```

## 코드 샘플
<a name="samples-code-artifact-code"></a>

다음 단계는 CodeArtifact 토큰을 업데이트하는 시작 스크립트를 만드는 방법을 설명합니다.

1. 다음 코드 샘플의 내용을 복사하고 로컬에서 `code_artifact_startup_script.sh`로 저장합니다.

   ```
   #!/bin/sh
   
   # Startup script for MWAA, refer to https://docs.aws.amazon.com/mwaa/latest/userguide/using-startup-script.html
   
   set -eu
   
   # setup code artifact endpoint and token
   # https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-0
   # https://docs.aws.amazon.com/mwaa/latest/userguide/samples-code-artifact.html
   DOMAIN="amazon"
   DOMAIN_OWNER="112233445566"
   REGION="us-west-2"
   REPO_NAME="MyRepo"
   echo "Getting token for CodeArtifact with args: --domain $DOMAIN --region $REGION --domain-owner $DOMAIN_OWNER"
   TOKEN=$(aws codeartifact get-authorization-token --domain $DOMAIN --region $REGION --domain-owner $DOMAIN_OWNER | jq -r '.authorizationToken')
   echo "Setting Pip env var for '--index-url' to point to CodeArtifact"
   export PIP_EXTRA_INDEX_URL="https://aws:$TOKEN@$DOMAIN-$DOMAIN_OWNER.d.codeartifact.$REGION.amazonaws.com/pypi/$REPO_NAME/simple/"
   echo "CodeArtifact startup setup complete"
   ```

1. 스크립트를 저장한 폴더로 이동합니다. 새 프롬프트 창에서 `cp`를 사용하여 스크립트를 버킷에 업로드합니다. *amzn-s3-demo-bucket*을 자신의 정보로 바꿉니다.

   ```
   aws s3 cp code_artifact_startup_script.sh s3://amzn-s3-demo-bucket/code_artifact_startup_script.sh
   ```

   성공하면 Amazon S3가 객체에 대한 URL 경로를 출력합니다.

   ```
   upload: ./code_artifact_startup_script.sh to s3://amzn-s3-demo-bucket/code_artifact_startup_script.sh
   ```

   스크립트를 업로드하면 시작 시 환경이 업데이트되고 스크립트가 실행됩니다.

## 다음 단계
<a name="samples-code-artifact-next-up"></a>
+ 시작 스크립트를 사용하여 [Amazon MWAA에서 시작 스크립트 사용](using-startup-script.md)에서 환경을 사용자 지정하는 방법을 알아봅니다.
+ 이 예제의 DAG 코드를 [DAG 추가 또는 업데이트](configuring-dag-folder.md)에서 Amazon S3 버킷의 `dags` 폴더에 업로드하는 방법을 알아봅니다.
+ 이 예제의 `plugins.zip` 파일을 [사용자 지정 플러그인 설치](configuring-dag-import-plugins.md)의 Amazon S3 버킷에 업로드하는 방법에 대해 자세히 알아봅니다.