是否可以在没有 AWS cli 的情况下从 AWS s3 下载文件?在我的生产服务器中,我需要下载 S3 存储桶中的配置文件。
我正在考虑让 Amazon Systems Manger 运行一个脚本,该脚本将从 S3 下载配置(YAML 文件)。但是我们不想在生产机器上安装 AWS cli。我该怎么办?
是否可以在没有 AWS cli 的情况下从 AWS s3 下载文件?在我的生产服务器中,我需要下载 S3 存储桶中的配置文件。
我正在考虑让 Amazon Systems Manger 运行一个脚本,该脚本将从 S3 下载配置(YAML 文件)。但是我们不想在生产机器上安装 AWS cli。我该怎么办?
您需要某种程序来调用 Amazon S3 API 来检索对象。例如,PowerShell 脚本(使用适用于 Windows PowerShell 的 AWS 工具)或使用 AWS 开发工具包的 Python 脚本。
您也可以生成一个Amazon S3 预签名 URL,这将允许通过正常的 HTTPS 调用(例如curl
)从 Amazon S3 下载私有对象。这可以使用适用于 Python 的 AWS 开发工具包轻松完成,或者您可以自己编写代码而不使用库(它有点复杂)。
在上述所有示例中,您都需要为脚本/程序提供一组 IAM 凭证,以便通过 AWS 进行身份验证。
只需为任何 C# 代码爱好者添加注释即可解决 .Net 问题
首先编写(C#)代码以将私有文件下载为字符串
public string DownloadPrivateFileS3(string fileKey)
{
string accessKey = "YOURVALUE";
string accessSecret = "YOURVALUE";;
string bucket = "YOURVALUE";;
using (s3Client = new AmazonS3Client(accessKey, accessSecret, "YOURVALUE"))
{
var folderPath = "AppData/Websites/Cases";
var fileTransferUtility = new TransferUtility(s3Client);
Stream stream = fileTransferUtility.OpenStream(bucket, folderPath + "/" + fileKey);
using (var memoryStream = new MemoryStream())
{
stream.CopyTo(memoryStream);
var response = memoryStream.ToArray();
return Convert.ToBase64String(response);
}
return "";
}
}
第二编写 JQuery 代码以将字符串下载为 Base64
function downloadPrivateFile() {
$.ajax({url: 'DownloadPrivateFileS3?fileName=' + fileName, success: function(result){
var link = this.document.createElement('a');
link.download = fileName;
link.href = "data:application/octet-stream;base64," + result;
this.document.body.appendChild(link);
link.click();
this.document.body.removeChild(link);
}});
}
从 HTML/C#/JQuery 的任何位置调用 downloadPrivateFile 方法 -
享受快乐的编码和复杂问题的解决方案