Я пытаюсь определить, существует ли папка в моей корзине Amazon S3, и если нет, я хочу ее создать. .
На данный момент я могу создать папку с помощью .NET SDK следующим образом:
public void CreateFolder(string bucketName, string folderName)
{
var folderKey = folderName + "/"; //end the folder name with "/"
var request = new PutObjectRequest();
request.WithBucketName(bucketName);
request.StorageClass = S3StorageClass.Standard;
request.ServerSideEncryptionMethod = ServerSideEncryptionMethod.None;
//request.CannedACL = S3CannedACL.BucketOwnerFullControl;
request.WithKey(folderKey);
request.WithContentBody(string.Empty);
S3Response response = m_S3Client.PutObject(request);
}
Теперь, когда я пытаюсь проверить, существует ли папка, используя этот код:
public bool DoesFolderExist(string key, string bucketName)
{
try
{
S3Response response = m_S3Client.GetObjectMetadata(new GetObjectMetadataRequest()
.WithBucketName(bucketName)
.WithKey(key));
return true;
}
catch (Amazon.S3.AmazonS3Exception ex)
{
if (ex.StatusCode == System.Net.HttpStatusCode.NotFound)
return false;
//status wasn't not found, so throw the exception
throw;
}
}
Не удается найти папку. Странно то, что если я создам папку с помощью Консоли управления AWS, метод «DoesFolderExist» сможет ее увидеть.
Я не уверен, связано ли это с ACL/IAM, но не уверен, как это решить.