对象相关接口 请求参数 PutACL可设置的参数如下: 参数 类型 说明 是否必要 CannedACL S3CannedACL 配置对象的预定义的标准ACL信息 否 AccessControlList S3AccessControlList 配置自定义的ACL信息 否 BucketName string 桶的名称 是 Key string 对象的key 是 VersionId string 设置对象的version id 否 S3CannedACL包含了一组预定义的访问控制权限,可以应用于对象的访问权限如下: 权限 说明 NoACL 默认访问权限,对象的所有者拥有FULLCONTROL权限,其他用户没有访问权限 Private 对象的所有者拥有FULLCONTROL权限,其他用户没有访问权限 PublicRead 对象的所有者拥有FULLCONTROL权限,其他用户拥有READ权限 PublicReadWrite 对象的所有者拥有FULLCONTROL权限,其他用户拥有READ和WRITE权限 BucketOwnerRead 对象的所有者拥有FULLCONTROL权限,桶的所有者拥有READ权限 BucketOwnerFullControl 对象的所有者和桶的所有者拥有FULLCONTROL权限 获取对象访问权限 功能说明 GetACL操作可以获取对象的access control list(ACL)信息。对象的ACL可以在上传对象的时候设置并且通过API查看,用户需要具有READACP(读取桶ACL信息)权限才可以查询对象的ACL信息。 代码示例 plaintext using System; using System.Threading.Tasks; using Amazon.Runtime; using Amazon.S3; using Amazon.S3.Model; namespace DotNetSDK.ObjectOperation { public class GetObjectACLExample { public static async Task GetObjectACL() { var accessKey " "; var secretKey " "; var endpoint " "; var bucketName " "; var key " "; try { var credentials new BasicAWSCredentials(accessKey, secretKey); var conf new AmazonS3Config { ServiceURL endpoint }; var s3Client new AmazonS3Client(credentials, conf); var getAclRequest new GetACLRequest() { BucketName bucketName, Key key }; var result await s3Client.GetACLAsync(getAclRequest); if (result.HttpStatusCode ! System.Net.HttpStatusCode.OK) { Console.WriteLine("fail to get ACL of bucket {0}, HttpStatusCode:{1}, ErrorCode:{2}.", bucketName, (int) result.HttpStatusCode, result.HttpStatusCode); return; } foreach (var grant in result.AccessControlList.Grants) { Console.WriteLine("Type:{0}, CanonicalUser:{1}, DisplayName:{2}, EmailAddress:{3}, URI:{4}, Permission:{5}", grant.Grantee.Type, grant.Grantee.CanonicalUser, grant.Grantee.DisplayName, grant.Grantee.EmailAddress, grant.Grantee.URI, grant.Permission.Value); } Console.WriteLine("OwnerId:{0}, OwnerDisplayName:{1}.", result.AccessControlList.Owner.Id, result.AccessControlList.Owner.DisplayName); } catch (Exception e) { Console.WriteLine(e.Message); } } } }
来自: