翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
リポジトリ間でのパッケージのコピー
CodeArtifact で、あるリポジトリから別のリポジトリにパッケージバージョンをコピーできます。これは、パッケージプロモーションワークフローや、チームやプロジェクト間でパッケージバージョンを共有するなどのシナリオに役立ちます。パッケージバージョンをコピーするには、ソースリポジトリと送信先リポジトリが同じドメインにある必要があります。
パッケージをコピーするのに必要な IAM 権限
CodeArtifact でパッケージバージョンをコピーするには、呼び出し元のユーザーが必要な IAM 権限を持ち、ソースリポジトリと送信先のリポジトリに添付されたリソースベースのポリシーが必要な権限を持っていることが必要です。リソースベースの権限ポリシーと CodeArtifact リポジトリの詳細については、 リポジトリポリシーを参照してください。
copy-package-versionsを呼び出しているユーザーには、ソースリポジトリに関するReadFromRepository許可およびCopyPackageVersions送信先リポジトリに関する許可が必要です。
ソースリポジトリには、ReadFromRepository許可が必要で、送信先リポジトリには IAM アカウントまたはユーザーによるパッケージのコピーに割り当てられたCopyPackageVersions許可が必要です。次のポリシーは、put-repository-permissions-policyコマンドでソースリポジトリまたは送信先リポジトリに追加されるリポジトリポリシーの例です。[111122223333] をコール元のアカウントの ID copy-package-versionsに置換する。
注記
現在のリポジトリポリシーが存在する場合、put-repository-permissions-policyをコールすると、そのポリシーは置換されます。get-repository-permissions-policyコマンドを使用して、ポリシーが存在するかどうかを確認することができます。詳細については、ポリシーを読み込むを参照してください。ポリシーが存在する場合は、そのポリシーを置換する代わりにこれらの権限をポリシーに追加することをお勧めします。
ソースリポジトリの権限ポリシーの例
送信先リポジトリの権限ポリシーの例
パッケージバージョンをコピーする
CodeArtifact のcopy-package-versionsコマンドを使用して、ひとつまたはそれ以上のパッケージバージョンをソースリポジトリから同じドメイン内のコピー先リポジトリにコピーすることができます。次の例では、my-packageという名前の npm パッケージのバージョン 6.0.2 と 4.0.0 をmy_repoリポジトリからrepo-2リポジトリへコピーします。
aws codeartifact copy-package-versions --domainmy_domain--domain-owner111122223333--source-repositorymy_repo\ --destination-repositoryrepo-2--packagemy-package--format npm \ --versions6.0.2 4.0.0
一度のオペレーションで、同じパッケージ名の複数のバージョンをコピーできます。異なるパッケージ名のバージョンをコピーするには、それぞれについてcopy-package-versionsを呼び出す必要があります。
前のコマンドでは、両方のバージョンが正常にコピーできると仮定して、次の出力が生成されます。
{ "successfulVersions": { "6.0.2": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, "4.0.0": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } }, "failedVersions": {} }
アップストリームリポジトリからパッケージをコピーする
通常、copy-package-versionsはコピーするバージョンの--source-repositoryのオプションで指定されたリポジトリ内だけを検索します。ただ、--include-from-upstreamオプションを使用してソースリポジトリとそのアップストリームリポジトリの両方からバージョンをコピーすることはできます。CodeArtifact SDK を使用する場合は、CopyPackageVersionsAPIとincludeFromUpstreamパラメータを true に設定します。詳細については、「CodeArtifact でアップストリームリポジトリを操作する」を参照してください。
スコープ指定された npm パッケージをコピーする
スコープ内の npm パッケージバージョンをコピーするには、--namespaceオプションを使用して、スコープを指定します。例えば、パッケージ@types/reactをコピーするには、--namespace typesを使用します。--namespaceを使用するときは、@記号を省略する必要があります。
aws codeartifact copy-package-versions --domainmy_domain--domain-owner111122223333--source-repositoryrepo-1\ --destination-repositoryrepo-2--format npm --namespacetypes\ --packagereact--versions0.12.2
Maven パッケージのバージョンをコピーする
リポジトリ間で Maven パッケージのバージョンをコピーするには、Maven グループ ID を --namespace オプションで、また Maven ArtifactID を --name オプションで渡して、コピーするパッケージを指定します。例えば、com.google.guava:guava の単一のバージョンをコピーするには:
aws codeartifact copy-package-versions --domainmy_domain--domain-owner111122223333\ --source-repositorymy_repo--destination-repositoryrepo-2--format maven --namespacecom.google.guava\ --packageguava--versions27.1-jre
パッケージのバージョンが正常にコピーされると、出力は以下のようになります。
{ "successfulVersions": { "27.1-jre": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } }, "failedVersions": {} }
ソースリポジトリに存在しないバージョン
ソースリポジトリに存在しないバージョンを指定すると、コピーは失敗します。ソースリポジトリにいくつかのバージョンが存在したり、存在しないバージョンがある場合、すべてのバージョンのコピーが失敗します。次の例では、array-unique npm パッケージのバージョン 0.2.0 はソースリポジトリに存在しますが、バージョン 5.6.7 は存在しません。
aws codeartifact copy-package-versions --domainmy_domain--domain-owner111122223333\ --source-repositorymy_repo--destination-repositoryrepo-2--format npm \ --packagearray-unique--versions0.2.0 5.6.7
出力は以下のようになります。
{ "successfulVersions": {}, "failedVersions": { "0.2.0": { "errorCode": "SKIPPED", "errorMessage": "Version 0.2.0 was skipped" }, "5.6.7": { "errorCode": "NOT_FOUND", "errorMessage": "Could not find version 5.6.7" } } }
SKIPPEDエラーコードは、別のバージョンをコピーできなかったために、このバージョンがコピー先のリポジトリにコピーされなかったことを示すために使用されます。
送信先リポジトリにすでに存在するバージョン
パッケージバージョンがすでに存在するリポジトリにコピーされると、CodeArtifact は二つのリポジトリ内のパッケージアセットとパッケージバージョンレベルのメタデータを比較します。
パッケージバージョンのアセットとメタデータがソースリポジトリと送信先リポジトリで同一である場合、コピーは実行されませんが、オペレーションは成功したと見なされます。つまり、copy-package-versions は冪等性です。この場合、ソースリポジトリと送信先のリポジトリの両方にすでに存在していたバージョンは、copy-package-versionsの出力には表示されません。
次の例では、npm パッケージの二つのバージョンを示します。array-uniqueはソースリポジトリrepo-1に存在します。バージョン 0.2.1 は送信先のリポジトリにも存在しますdest-repoバージョン 0.2.0 はそうではありません。
aws codeartifact copy-package-versions --domainmy_domain--domain-owner111122223333\ --source-repositorymy_repo--destination-repositoryrepo-2--format npm --packagearray-unique\ --versions0.2.1 0.2.0
出力は以下のようになります。
{ "successfulVersions": { "0.2.0": { "revision": "Yad+B1QcBq2kdEVrx1E1vSfHJVh8Pr61hBUkoWPGWX0=", "status": "Published" } }, "failedVersions": {} }
バージョン 0.2.0 がsuccessfulVersionsに一覧表示されているのは、ソースから送信先リポジトリに正常にコピーされたためです。バージョン 0.2.1 は、宛先リポジトリにすでに存在していたため、出力には表示されません。
パッケージバージョンのアセットまたはメタデータがソースリポジトリと送信先のリポジトリで異なる場合、コピー操作は失敗します。--allow-overwriteパラメータを使用して、強制的に上書きすることができます。
ソースリポジトリにいくつかのバージョンが存在したり、存在しないバージョンがある場合、すべてのバージョンのコピーが失敗します。次の例では、array-uniquenpm package パッケージのバージョン 0.3.2 は、ソースと送信先のリポジトリの両方に存在しますが、パッケージバージョンの内容は異なります。バージョン 0.2.1 はソースリポジトリに存在しますが、送信先には存在しません。
aws codeartifact copy-package-versions --domainmy_domain--domain-owner111122223333\ --source-repositorymy_repo--destination-repositoryrepo-2--format npm --packagearray-unique\ --versions0.3.2 0.2.1
出力は以下のようになります。
{ "successfulVersions": {}, "failedVersions": { "0.2.1": { "errorCode": "SKIPPED", "errorMessage": "Version 0.2.1 was skipped" }, "0.3.2": { "errorCode": "ALREADY_EXISTS", "errorMessage": "Version 0.3.2 already exists" } } }
バージョン 0.2.1 がSKIPPEDとしてマークされている理由は、コピー先のリポジトリにコピーされていないからです。バージョン 0.3.2 のコピーが送信先リポジトリにすでに存在していたが、ソースリポジトリと送信先のリポジトリでは同一ではないため、コピーは実行されませんでした。
パッケージバージョンリビジョンの指定
パッケージバージョンリビジョンは、パッケージバージョンの特定のアセットとメタデータのセットを指定する文字列です。パッケージバージョンリビジョンを指定して、特定の状態にあるパッケージバージョンをコピーできます。パッケージバージョンのリビジョンを指定するには、--version-revisionsパラメータを使用して、1 つ以上のカンマ区切りパッケージバージョンとパッケージバージョンリビジョンのペアをcopy-package-versionsコマンドに渡します。
注記
--versions または --version-revisions パラメータをcopy-package-versionsで指定する必要があります。両方を指定することはできません。
次の例では、パッケージのバージョン 0.3.2 がパッケージバージョンリビジョンREVISION-1-SAMPLE-6C81EFF7DA55CCのソースリポジトリに存在する場合、そのバージョン 0.3.2 my-package のみをコピーします。
aws codeartifact copy-package-versions --domainmy_domain--domain-owner111122223333--source-repositoryrepo-1\ --destination-repositoryrepo-2--format npm --namespacemy-namespace\ --packagemy-package--version-revisions0.3.2=REVISION-1-SAMPLE-6C81EFF7DA55CC
次の例では、パッケージの二つのバージョンをコピーしています :my-package、0.3.2と0.3.13。このコピーは、my-packageのソースリポジトリバージョン 0.3.2 にリビジョンREVISION-1-SAMPLE-6C81EFF7DA55CCがあり、バージョン0.3.13にはリビジョンREVISION-2-SAMPLE-55C752BEE772FCがある場合にのみ成功します。
aws codeartifact copy-package-versions --domainmy_domain--domain-owner111122223333--source-repositoryrepo-1\ --destination-repositoryrepo-2--format npm --namespacemy-namespace\ --packagemy-package--version-revisions0.3.2=REVISION-1-SAMPLE-6C81EFF7DA55CC,0.3.13=REVISION-2-SAMPLE-55C752BEE772FC
パッケージバージョンのリビジョンを見つけるには、describe-package-versionまたはlist-package-versionsコマンドを使用してください。
詳細については、パッケージバージョンリビジョンおよび [CodeArtifact API リファレンス] の [パッケージバージョンのコピー] を参照してください。
npm パッケージをコピーする
npm パッケージでのcopy-package-versions動作の詳細については、[npm タグ と CopyPackageVersions API] を参照してください。