我们在 SQL 作业中运行 S3 同步命令,将本地目录同步到 S3 存储桶。 有时,我们会收到错误代码为 1 或有时为 2 的同步“错误”。文档列出了每个代码的含义;错误代码 1 提供的详细信息较少,并留下了更多有关该问题的疑问。 它只是指出“一个或多个 Amazon S3 传输操作失败。仅限于 S3 命令。”
当我在 PowerShell 脚本中运行同步命令并遇到错误(即同步文档正在打开)时,窗口会显示一条错误消息以及导致问题的特定文件。
如何在 SQL 作业中捕获这些详细信息?
我已经解决了这个问题...
使用 PowerShell 脚本,在 AWS s3 同步命令中,我们将结果输出到文本文件:
aws s3 sync c:\source\dir s3://target/dir/ > F:\Source\s3Inventory\SyncOutput.txt
然后将文本文件内容读入字符串变量:
$S3Output = Get-Content -Path C:\Source\s3Inventory\SyncOutput.txt -Raw
如果同步命令中的 $LASTEXITCODE 不等于 0(表示错误),那么我们会发送一封包含结果的电子邮件:
if ($LASTEXITCODE -ne 0)
{
#Send email containing the value of string variable $S3Output
}
这已投入生产,我们终于能够确定哪个文件/对象出现故障。
当然可以将文本文件附加到电子邮件中,而不是将内容读入字符串中。
希望这对其他人有帮助!
可以在调试模式下运行并检查;这在 Windows 中对我有用。
aws s3 sync "my local directory" s3://mybucket --debug 2> "logname.txt"