

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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/*"
  }
  ```
+ `sts:GetServiceBearerToken` アクションは、CodeArtifact [https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_GetAuthorizationToken.html](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_GetAuthorizationToken.html) APIオペレーションを呼び出すために必要です。この操作は、`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 コードを Amazon S3 バケットの `dags` フォルダにアップロードする方法については、[DAG の追加と更新](configuring-dag-folder.md) を参照してください。
+ この例の `plugins.zip` ファイルを Amazon S3 バケットにアップロードする方法について詳しくは、[カスタムプラグインのインストール](configuring-dag-import-plugins.md) をご覧ください。