AzureFileCopy@3 - Azure ファイル コピー v3 タスク
ファイルをAzure Blob Storageまたは仮想マシンにコピーします。
注意
このタスクでは、ワークフロー ID フェデレーションを使用した Azure Resource Manager認証はサポートされていません。
構文
# Azure file copy v3
# Copy files to Azure Blob Storage or virtual machines.
- task: AzureFileCopy@3
inputs:
SourcePath: # string. Required. Source.
azureSubscription: # string. Alias: ConnectedServiceNameARM. Required. Azure Subscription.
Destination: # 'AzureBlob' | 'AzureVMs'. Required. Destination Type.
storage: # string. Alias: StorageAccountRM. Required. RM Storage Account.
#ContainerName: # string. Required when Destination = AzureBlob. Container Name.
#BlobPrefix: # string. Optional. Use when Destination = AzureBlob. Blob Prefix.
#resourceGroup: # string. Alias: EnvironmentNameRM. Required when Destination = AzureVMs. Resource Group.
#ResourceFilteringMethod: 'machineNames' # 'machineNames' | 'tags'. Optional. Use when Destination = AzureVMs. Select Machines By. Default: machineNames.
#MachineNames: # string. Optional. Use when Destination = AzureVMs. Filter Criteria.
#vmsAdminUserName: # string. Required when Destination = AzureVMs. Admin Login.
#vmsAdminPassword: # string. Required when Destination = AzureVMs. Password.
#TargetPath: # string. Required when Destination = AzureVMs. Destination Folder.
#AdditionalArgumentsForBlobCopy: # string. Optional Arguments (for uploading files to blob).
#AdditionalArgumentsForVMCopy: # string. Optional. Use when Destination = AzureVMs. Optional Arguments (for downloading files to VM).
#enableCopyPrerequisites: false # boolean. Optional. Use when Destination = AzureVMs. Enable Copy Prerequisites. Default: false.
#CopyFilesInParallel: true # boolean. Optional. Use when Destination = AzureVMs. Copy in Parallel. Default: true.
#CleanTargetBeforeCopy: false # boolean. Optional. Use when Destination = AzureVMs. Clean Target. Default: false.
#skipCACheck: true # boolean. Optional. Use when Destination = AzureVMs. Test Certificate. Default: true.
# Output
#outputStorageUri: # string. Storage Container URI.
#outputStorageContainerSasToken: # string. Storage Container SAS Token.
#sasTokenTimeOutInMinutes: # string. SAS Token Expiration Period In Minutes.
入力
SourcePath
- ソース
string
. 必須です。
ソース フォルダーの絶対パス、またはローカル コンピューター上のファイル、または UNC 共有を指定します。 などの $(Build.Repository.LocalPath)
定義済みのシステム変数を使用できます。 *.zip
などのワイルドカードを含む名前はサポートされていません。 指定する値または式は、1 つのフォルダーまたはファイル名を返す必要があります。
azureSubscription
- Azure サブスクリプション
入力エイリアス: ConnectedServiceNameARM
。 string
. 必須です。
ターゲットの Azure サービス、仮想マシン、またはストレージ アカウントがあるサブスクリプション用に構成された Azure Resource Manager サービス接続の名前を指定します。 詳細については、Azure Resource Manager の概要に関するページを参照してください。
Destination
- 送信先の種類
string
. 必須です。 使用できる値: AzureBlob
(Azure BLOB) AzureVMs
、(Azure VM)。
変換先の種類を指定します。
storage
- RM ストレージ アカウント
入力エイリアス: StorageAccountRM
。 string
. 必須です。
既存の ARM ストレージ アカウントを指定します。 これは、Azure VM にファイルをコピーするための仲介役として使用されるストレージ アカウントです。
ContainerName
- コンテナー名
string
. Destination = AzureBlob
の場合に必要です。
ファイルがコピーされるコンテナーの名前。 指定したコンテナーがストレージ アカウントに存在しない場合は、作成されます。
コンテナー内に仮想ディレクトリを作成するには、BLOB プレフィックス入力を使用します。 たとえば、ターゲットの場所https://myaccount.blob.core.windows.net/mycontainer/vd1/vd2/
に対して、コンテナー名mycontainer
と BLOB プレフィックスを指定します。 vd1/vd2
BlobPrefix
- BLOB プレフィックス
string
. 省略可能。 の場合は Destination = AzureBlob
を使用します。
ファイルのフィルター処理に使用できるプレフィックスを指定します。
例: ビルド番号を追加して、同じビルド番号を持つすべての BLOB のファイルをフィルター処理できます。
例: BLOB プレフィックス myvd1
を指定すると、コンテナー内に仮想ディレクトリが作成されます。 ファイルは、ソースから に https://myaccount.blob.core.windows.net/mycontainer/myvd1/
コピーされます。
resourceGroup
- リソース グループ
入力エイリアス: EnvironmentNameRM
。 string
. Destination = AzureVMs
の場合に必要です。
ファイルのコピー先となるターゲット リソース グループの名前を指定します。
ResourceFilteringMethod
- 以下の条件でコンピューターを選択
string
. 省略可能。 の場合は Destination = AzureVMs
を使用します。 使用できる値: machineNames
(マシン名)、 tags
。 既定値: machineNames
。
リソース グループ内の VM のサブセットを識別する VM ホスト名またはタグを指定します。 タグは、Azure Resource Manager経由で作成されたリソースでのみサポートされます。
MachineNames
- フィルター条件
string
. 省略可能。 の場合は Destination = AzureVMs
を使用します。
タスクの対象となる VM を識別する VM 名またはタグ名の一覧を指定します。 有効なフィルター条件には、次のものが含まれます。
- Azure リソース グループの名前。
- 前のタスクの出力変数。
- タグ名または VM 名のコンマ区切りのリスト。
- FQDN または IP アドレスのコンマ区切りの一覧を使用して VM 名を書式設定します。
- フィルターのタグ名を として
{TagName}:{Value}
書式設定します。 例:Role:DB;OS:Win8.1
、ffweb
、、ffdb
、 などのRole:DB
Web
OS:Win8.1
タグ。
注: タグの有効な区切り記号には、,(コンマ)、:(colon)、;(semicolon) があります。 複数のタグを指定すると、タスクは指定されたタグを含む VM でのみ実行されます。 既定では、タスクはすべての VM で実行されます。
vmsAdminUserName
- 管理者ログイン
string
. Destination = AzureVMs
の場合に必要です。
すべてのターゲット VM に対する管理アクセス許可を持つアカウントのユーザー名を指定します。
- サポートされている形式は、
username
、、machine-name\username
domain\username
、および.\username
です。 - などの組み込みシステム アカウントを
NT Authority\System
含むusername@domain.com
UPN 形式はサポートされていません。
vmsAdminPassword
- パスワード
string
. Destination = AzureVMs
の場合に必要です。
VM の管理者パスワードを指定します。
有効な入力には、 などの $(passwordVariable)
ビルドパイプラインまたはリリース パイプラインで定義された変数が含まれます。 パスワードをセキュリティで保護するには、 として secret
マークします。
TargetPath
- ターゲット フォルダー
string
. Destination = AzureVMs
の場合に必要です。
ファイルのコピー先となる Azure VM 内のフォルダーへのパスを指定します。
$env:windir
、$env:systemroot
などの環境変数がサポートされています。 例: $env:windir\FabrikamFiber\Web
、c:\FabrikamFiber
AdditionalArgumentsForBlobCopy
- オプションの引数 (BLOB へのファイルのアップロード用)
string
.
などの /NC:10
BLOB にAzCopy.exe
アップロードするときに適用できる に追加の引数を指定します。
省略可能な引数が指定されていない場合は、既定で次の引数が追加されます。
/Y
/SetContentType
/Z
/V
/S
- コンテナー名が でない$root
場合に追加されます。/BlobType:page
-指定したストレージ アカウントが Premium アカウントの場合に追加されます。/Pattern
- ソース パスがファイルの場合に追加されます。 その他の指定された省略可能な引数に含まれます。
AdditionalArgumentsForVMCopy
- オプションの引数 (VM へのファイルのダウンロード用)
string
. 省略可能。 の場合は Destination = AzureVMs
を使用します。
などの /NC:10
VM にAzCopy.exe
ダウンロードするときに適用できる に追加の引数を指定します。
省略可能な引数が指定されていない場合は、既定で次の項目が追加されます。
/Y
/S
/Z
/V
enableCopyPrerequisites
- コピーの前提条件を有効にする
boolean
. 省略可能。 の場合は Destination = AzureVMs
を使用します。 既定値: false
。
有効にすると、自己署名証明書を使用して、HTTPS プロトコルではなくポート 5986 で Windows リモート管理 (WinRM) リスナーを構成します。 Azure VM でコピー操作を実行するために必要です。 ターゲット VM でロード バランサーを使用する場合は、ターゲット ポート (5986) の受信 NAT 規則を構成します。 ARM VM にのみ適用されます。 ネットワーク セキュリティ グループ (NSG) に関連付けられているターゲット VM で、ポート 5986 でのアクセスを許可するように受信セキュリティ規則を構成します。
CopyFilesInParallel
- 並列でのコピー
boolean
. 省略可能。 の場合は Destination = AzureVMs
を使用します。 既定値: true
。
を指定 true
して、ターゲット VM に並列でファイルをコピーします。 この値を使用すると、アクションの実行にかかる全体的な時間を短縮できます。
CleanTargetBeforeCopy
- ターゲットをクリーンにする
boolean
. 省略可能。 の場合は Destination = AzureVMs
を使用します。 既定値: false
。
コピー アクションを実行する前に true
、この値を設定してコピー先フォルダーをクリーンアップします。
skipCACheck
- テスト証明書
boolean
. 省略可能。 の場合は Destination = AzureVMs
を使用します。 既定値: true
。
HTTPS 経由で接続する前に、サーバー証明書が信頼された CA によって署名されたかどうかは、既定値では検証されません。
outputStorageUri
- ストレージ コンテナー URI
string
.
ファイルのコピー先のストレージ コンテナー URI に使用される変数の名前を指定します。 選択した宛先が Azure BLOB の場合にのみ有効です。
outputStorageContainerSasToken
- ストレージ コンテナー SAS トークン
string
.
コピーされたファイルにアクセスするストレージ コンテナー SAS トークンに使用される変数の名前を指定します。 この変数は、後続のタスクへの入力として使用します。 既定では、SAS トークンは 4 時間で期限が切れます。
sasTokenTimeOutInMinutes
- SAS トークンの有効期間 (分)
string
.
SAS トークンの有効期限が切れる時間を分単位で指定します。 選択した宛先が Azure BLOB の場合にのみ有効です。
タスク制御オプション
すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「 コントロール オプションと一般的なタスク プロパティ」を参照してください。
出力変数
[なし] :
解説
バージョン AzureFileCopy@3の新機能
AzureFileCopy@3は Az Module をサポートし、Azure クラシック サービス エンドポイントのサポートを停止しました。
このタスクは、PowerShell スクリプト、PowerShell-DSC モジュールなど、アプリのインストールに必要なアプリケーション ファイルやその他の成果物をコピーするために使用されます。
ターゲットが Azure VM の場合、ファイルは最初に自動的に生成された Azure BLOB コンテナーにコピーされ、その後 VM にダウンロードされます。 ファイルが VM に正常にコピーされると、コンテナーが削除されます。
このタスクでは、Azure ストレージ アカウントとの間でデータをすばやくコピーするために構築されたコマンド ライン ユーティリティである AzCopy を使用します。 タスク バージョン 3 以下では AzCopy V7 を使用します。
仮想マシンを含む Azure リソース グループを動的にデプロイするには、Azure リソース グループのデプロイ タスクを使用します。 このタスクには、VM で WinRM HTTPS プロトコルを設定し、ファイアウォールでポート 5986 を開き、テスト証明書をインストールするために必要な操作を実行できるサンプル テンプレートがあります。
Note
Blob Storage のコンテナーとして Azure Static Websites にデプロイする場合は、$webコンテナー名を保持するためにバージョン 2 以降を使用します。
よく寄せられる質問
このタスクを使用するための Azure PowerShell の前提条件は何ですか?
タスクでは、自動化エージェントを実行しているマシンにAzure PowerShellがインストールされている必要があります。 推奨されるバージョンは 1.0.2 ですが、タスクはバージョン 0.9.8 以降で動作します。 Azure PowerShell インストーラー v1.0.2 を使用して、推奨されるバージョンを取得します。
このタスクの WinRM の前提条件は何ですか?
このタスクでは、WinRM HTTPS プロトコルを使用して、ストレージ BLOB コンテナーから Azure VM にファイルをコピーします。 WinRM HTTPS サービスは、VM に構成し、適切な証明書がインストールされている必要があります。
WinRM HTTPS ポートを開かずに VM を作成する場合は、次の手順に従います。
- 各 VM のポート 5986 で HTTPS を許可するようにインバウンド アクセス規則を構成します。
- UAC リモート制限を無効にします。
- ドメイン参照なしで ユーザー名 として書式設定された管理者レベルのログインを使用して VM にアクセスするためのタスクの資格情報を指定します。
- 自動化エージェントを実行するマシンに証明書をインストールします。
- 自己署名証明書のタスクの [Test Certificate ]\(証明書のテスト\) パラメーターを設定します。
どの種類のサービス接続を選択する必要がありますか?
次の表に、ストレージ アカウントの種類と関連するサービス接続を示します。 ストレージ アカウントがクラシック API または Resource Manager API に基づいているかどうかを識別するには、Azure portalにログインし、ストレージ アカウント (クラシック) またはストレージ アカウントを検索します。
ストレージ アカウントの種類 | TFS/TS での Azure サービス接続 |
---|---|
リソース マネージャー | Azure Resource Manager サービス接続 |
クラシック | 学校または職場アカウントを使用した証明書ベースまたは資格情報ベースの認証による Azure サービス接続 |
Azure クラシック リソースの場合は、証明書または資格情報ベースの認証で [Azure] サービス接続の種類を使用します。 資格情報ベースの認証を使用している場合は、資格情報が 学校または職場アカウント用であることを確認します。
joe@live.com
、joe@hotmail.com
などの Microsoft アカウントはサポートされていません。Azure Resource Manager VM の場合は、[Azure Resource Manager] サービス接続の種類を使用します。 詳細については、「 サービス プリンシパルを使用した Azure リソース グループのデプロイの自動化」を参照してください。
Azure Resource Manager サービス接続の種類、または証明書ベースの認証で Azure サービス接続の種類を使用している場合、タスクは適切なクラシック ストレージ アカウント、新しい Azure Resource Manager ストレージ アカウント、およびその他のフィールドを自動的にフィルター処理します。 たとえば、リソース グループやクラウド サービス、仮想マシンです。
Note
現在、資格情報ベースの認証を使用する Azure サービス接続の種類では、ストレージ、リソース グループまたはクラウド サービス、仮想マシンの各フィールドはフィルター処理されません。
エラー '403: この要求には、このアクセス許可を使用してこの操作を実行する権限がありません' を修正するには、どうすればよいですか?
Azure DevOps は、Azure へのサービス接続を作成して認可するとき、サブスクリプションの Active Directory にアプリ登録を作成します。 この ID は、認可するように選択したリソース グループ内のすべてのリソースへの Contributor
役割を伴って自動的に追加されます。 BLOB をストレージ アカウントにアップロードするには、 はContributor
十分ではありません。 Storage Blob Data Contributor
役割をアプリ登録 ID に手動で割り当てる必要があります。
IAM ペインに表示される既存の継承されたエントリ Contributor
からアプリ ID をコピーし、UI で Add role assignment
明示的に検索します。 ID がドロップダウンに表示されない場合は、その識別子を検索する必要があります。
リソース グループにクラシック VM と Resource Manager VM の両方が含まれている場合はどうなりますか?
指定したリソース グループに Azure Resource Manager VM とクラシック VM の両方が含まれている場合、対象となる VM のセットは接続の種類によって異なります。
- 証明書ベースの接続と資格情報ベースの接続の場合、コピー操作はクラシック VM でのみ実行されます。
- サービス プリンシパル名ベースの接続の場合、コピー操作はResource Manager VM でのみ実行されます。
このタスクで使用する学校または職場アカウントを作成するには、どうすればよいですか?
サービス接続で使用するための適切なアカウントを簡単に作成できます。
- Azure portal を使用して、Azure Active Directory に新しいユーザー アカウントを作成します。
- Azure サブスクリプションで共同管理者グループに Azure Active Directory ユーザー アカウントを追加します。
- このユーザー アカウントで Azure portal にサインインし、パスワードを変更します。
- サービス接続で、このアカウントの新しい資格情報を使用します。 デプロイは、このアカウントを使用して処理されます。
例
# Example: Upload files from Pipeline staging directory to blob storage.
- task: AzureFileCopy@3
displayName: 'Example Step Name'
inputs:
sourcePath: '$(Build.ArtifactStagingDirectory)/BlobsToUpload'
additionalArgumentsForBlobCopy: |
'/Y' # Supresses all AZCopy Confirmations. Used here to allow overwrites
'/Pattern:*' # Pattern of files to copy.
'/S' # Recursive Copy
azureSubscription: 'Subscription Name'
destination: AzureBlob
storage: storageaccountname
containerName: storagecontainername
blobPrefix: targetdirectoryincontainer