AWS Glacier新手求助:如何通过PowerShell连接存储并上传文件?
用PowerShell操作AWS Glacier的完整实操步骤
一、配置AWS凭证(解决凭证配置模糊问题)
有两种常用配置方式,按需选择:
方式1:永久凭证配置(推荐,无需每次重复输入)
- 打开PowerShell,执行以下命令存储凭证(替换
YOUR_ACCESS_KEY和YOUR_SECRET_KEY为AWS IAM用户的密钥,该用户需拥有Glacier操作权限,比如AmazonGlacierFullAccess):Set-AWSCredential -AccessKey YOUR_ACCESS_KEY -SecretKey YOUR_SECRET_KEY -StoreAs GlacierProfile - 设置默认AWS区域(替换为你实际使用的区域,比如
us-east-1):Set-DefaultAWSRegion -Region us-east-1 - 后续操作可通过
-ProfileName指定该凭证,示例:Get-GLCVault -ProfileName GlacierProfile
方式2:临时会话凭证(适合单次临时操作)
每次操作前先初始化凭证:
Initialize-AWSDefaults -AccessKey YOUR_ACCESS_KEY -SecretKey YOUR_SECRET_KEY -Region us-east-1
二、创建Glacier存储库(Vault)
运行以下命令创建Vault,替换MyGlacierVault为自定义名称:
New-GLCVault -VaultName MyGlacierVault -ProfileName GlacierProfile
验证创建结果:
Get-GLCVault -ProfileName GlacierProfile
三、上传文件到Glacier
Glacier分小文件直接上传、大文件分块上传两种场景,以下是实操步骤:
1. 小文件(<100MB)直接上传
替换本地文件路径C:\test\small-file.zip和Vault名称:
# 上传后会返回存档ID(ArchiveId),务必保存该ID用于后续读取 $archiveId = Write-GLCArchive -VaultName MyGlacierVault -FilePath C:\test\small-file.zip -ProfileName GlacierProfile Write-Host "存档ID:$archiveId"
2. 大文件(>100MB)分块上传
以C:\test\large-file.iso为例:
- 第一步:初始化分块上传,获取上传ID(UploadId)
# PartSize为分块大小(字节),需为2的幂,示例为100MB(104857600字节) $uploadId = Initiate-GLCMultipartUpload -VaultName MyGlacierVault -PartSize 104857600 -ProfileName GlacierProfile Write-Host "上传ID:$uploadId" - 第二步:循环分块上传文件
$filePath = "C:\test\large-file.iso" $fileSize = (Get-Item $filePath).Length $partSize = 104857600 $partCount = [math]::Ceiling($fileSize / $partSize) for ($i=0; $i -lt $partCount; $i++) { $startByte = $i * $partSize $endByte = [math]::Min(($i+1)*$partSize - 1, $fileSize - 1) Write-Host "正在上传第$($i+1)/$partCount块,范围:$startByte-$endByte" Write-GLCMultipartPart -VaultName MyGlacierVault -UploadId $uploadId -FilePath $filePath -Range "bytes $startByte-$endByte/*" -ProfileName GlacierProfile } - 第三步:完成分块上传,获取存档ID
$archiveId = Complete-GLCMultipartUpload -VaultName MyGlacierVault -UploadId $uploadId -ArchiveDescription "Large ISO file" -ProfileName GlacierProfile Write-Host "存档ID:$archiveId"
四、读取(恢复)Glacier中的文件
Glacier是归档存储,无法直接读取,需先发起恢复请求,等待存档变为可下载状态(恢复时长取决于选择的优先级):
1. 发起存档恢复请求
替换YOUR_ARCHIVE_ID为上传时保存的存档ID,可选择三种恢复层级:
Standard:3-5小时,标准收费Expedited:1-5分钟,额外收费Bulk:5-12小时,最低收费
$jobId = Initiate-GLCJob -VaultName MyGlacierVault -JobType ArchiveRetrieval -ArchiveId YOUR_ARCHIVE_ID -Tier Standard -ProfileName GlacierProfile Write-Host "恢复任务ID:$jobId"
2. 检查恢复任务状态
每隔一段时间执行该命令,直到状态变为Completed:
Get-GLCJob -VaultName MyGlacierVault -JobId $jobId -ProfileName GlacierProfile
3. 下载恢复后的文件
替换保存路径C:\test\recovered-file.zip:
Get-GLCJobOutput -VaultName MyGlacierVault -JobId $jobId -FilePath C:\test\recovered-file.zip -ProfileName GlacierProfile
五、常用辅助命令
- 列出Vault中的所有恢复任务:
Get-GLCJobList -VaultName MyGlacierVault -ProfileName GlacierProfile - 删除空Vault(Vault必须无存档才能删除):
Remove-GLCVault -VaultName MyGlacierVault -ProfileName GlacierProfile
内容的提问来源于stack exchange,提问作者user216652
相关产品推荐
相关产品推荐

