Mart 2018'de olduğu gibi, .NET Core için AWS SDK'nın en son sürümü değişti. Şimdi asenkron programlama kullanıyor. Yöntem imzalarının çoğu değişti. Yine de, Dan'in önerdiği nesne kopyalama çözümü olmadan meta verileri değiştiremezsiniz, ancak bunu yapacak kod vardır.
Çözümüm, mevcut S3 nesnesini değiştirilmiş meta verilerle güncellemektir.
Aşağıdakiler, tek bir meta veri değerini (anahtar ve yeni değere bağlı olarak) güncelleştirmek için çalışır. Ben meta ayarlamak için iki döngüler var ama sadece bir sahip olacak şekilde optimize edilebilir: Çok kafa karıştırıcı meta konu üzerine AWS belgeleri bulabilirsiniz
string fileContents = string.Empty;
Dictionary<string, string> fileMetaData = null;
GetObjectRequest request = new GetObjectRequest
{
BucketName = bucketName,
Key = setKeyName
};
var response = await s3Client.GetObjectAsync(request);
// Read the contents of the file
using (var stream = response.ResponseStream)
{
// Get file contents
TextReader tr = new StreamReader(stream);
fileContents = tr.ReadToEnd();
}
// Create the File Metadata collection
fileMetaData = new Dictionary<string, string>();
foreach (string metadataKey in response.Metadata.Keys)
{
fileMetaData.Add(metadataKey, response.Metadata[metadataKey]);
}
// Update the metadata value (key to update, new value)
fileMetaData[metaDataKeyToUpdate] = metaDataNewValue;
// Update the existing S3 object
PutObjectRequest putRequest1 = new PutObjectRequest
{
BucketName = bucketName,
Key = setKeyName,
ContentBody = fileContents
};
// Set the metadata
foreach (string metadataKey in response.Metadata.Keys)
{
putRequest1.Metadata.Add(metadataKey, fileMetaData[metadataKey]);
}
PutObjectResponse response1 = await s3Client.PutObjectAsync(putRequest1);
- Sağladığınız tarafta birlikte bağlantı, başka bulundu Yönetim konsolunu kullanarak nesne meta verilerini nasıl ekleyeceğinizi veya sildiğinizi gösteren Kullanıcı Kılavuzlarına bağlantı verin. Bu anlaşmazlığın üstesinden gelebileceğim tek çözüm, "nesne meta verilerini değiştiremezsiniz" dediğinde, belirli bir meta veri anahtarının değerini değiştiremezsiniz demektir. senin düşüncen nedir http://docs.aws.amazon.com/AmazonS3/latest/UG/Ekran TakibiObject.html – Israel
Belki de meta verileri REST arabirimiyle değiştiremezsiniz, ancak yönetim konsolu üzerinden yapabilecekleriniz mi? (Sahnelerin arkasında muhtemelen klonlayıp siler). – kaifong
Aşağıdaki çözümüme bakın, mevcut bir S3 nesnesini güncelleyebilir ve yeni/güncellenmiş meta verileri aynı anda ayarlayabilirsiniz. Kopyalama çözümüne benzer. – robnick