翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
リポジトリ間でのパッケージのコピー
パッケージバージョンは、あるリポジトリから別の in 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
コマンドを使用して、ポリシーが存在するかどうかを確認することができます。詳細については、ポリシーを読み込むを参照してください。ポリシーが存在する場合は、そのポリシーを置換する代わりにこれらの権限をポリシーに追加することをお勧めします。
ソースリポジトリの権限ポリシーの例
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:ReadFromRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:root" }, "Resource": "*" } ] }
送信先リポジトリの権限ポリシーの例
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:CopyPackageVersions" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:root" }, "Resource": "*" } ] }
パッケージバージョンをコピーする
in CodeArtifact copy-package-versions
コマンドを使用して、ソースリポジトリから同じドメイン内の宛先リポジトリに 1 つ以上のパッケージバージョンをコピーします。次の例では、my-package
という名前の npm パッケージのバージョン 6.0.2 と 4.0.0 をmy_repo
リポジトリからrepo-2
リポジトリへコピーします。
aws codeartifact copy-package-versions --domain
my_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 SDKWord を使用する場合は、 includeFromUpstream
パラメータを true CopyPackageVersions
に設定して API を呼び出します。詳細については、「でのアップストリームリポジトリの操作 CodeArtifact」を参照してください。
スコープ指定された npm パッケージをコピーする
スコープ内の npm パッケージバージョンをコピーするには、--namespace
オプションを使用して、スコープを指定します。例えば、パッケージ@types/react
をコピーするには、--namespace types
を使用します。--namespace
を使用するときは、@
記号を省略する必要があります。
aws codeartifact copy-package-versions --domain
my_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 --domain
my_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 --domain
my_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 は 2 つのリポジトリ内のパッケージアセットとパッケージバージョンレベルのメタデータを比較します。
パッケージバージョンのアセットとメタデータがソースリポジトリと送信先リポジトリで同一である場合、コピーは実行されませんが、オペレーションは成功したと見なされます。つまり、copy-package-versions
は冪等性です。この場合、ソースリポジトリと送信先のリポジトリの両方にすでに存在していたバージョンは、copy-package-versions
の出力には表示されません。
次の例では、npm パッケージの二つのバージョンを示します。array-unique
はソースリポジトリrepo-1
に存在します。バージョン 0.2.1 は送信先のリポジトリにも存在しますdest-repo
バージョン 0.2.0 はそうではありません。
aws codeartifact copy-package-versions --domain
my_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-unique
npm package パッケージのバージョン 0.3.2 は、ソースと送信先のリポジトリの両方に存在しますが、パッケージバージョンの内容は異なります。バージョン 0.2.1 はソースリポジトリに存在しますが、送信先には存在しません。
aws codeartifact copy-package-versions --domain
my_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 --domain
my_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 --domain
my_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
コマンドを使用してください。
詳細については、CopyPackageVersion リファレンスの パッケージバージョンリビジョンおよび Word を参照してください。 CodeArtifact API
npm パッケージをコピーする
npm パッケージcopy-package-versions
の動作の詳細については、「npm タグ」と CopyPackageVersions API」を参照してください。