/// <summary> /// Gets the current representation of the given bucket in the given Object Storage namespace. /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <GetBucketResponse> GetBucket(GetBucketRequest request) { var uri = new Uri($"{GetEndPointNoneVersion(ObjectStorageServices.Bucket(request.NamespaceName), this.Region)}/{request.BucketName}/"); var httpRequestHeaderParam = new HttpRequestHeaderParam() { IfMatch = request.IfMatch, IfNoneMatch = request.IfNoneMatch, OpcClientRequestId = request.OpcClientRequestId }; var webResponse = await this.RestClientAsync.Get(uri, httpRequestHeaderParam, request.Fields); using (var stream = webResponse.GetResponseStream()) using (var reader = new StreamReader(stream)) { var response = reader.ReadToEnd(); return(new GetBucketResponse() { Bucket = JsonSerializer.Deserialize <Bucket>(response), ETag = webResponse.Headers.Get("ETag"), OpcRequestId = webResponse.Headers.Get("opc-request-id"), OpcClientRequestId = webResponse.Headers.Get("opc-client-request-id") }); } }
/// 获取对象列表与子目录 public void GetBucketWithDelimiter() { //.cssg-snippet-body-start:[get-bucket-with-delimiter] try { string bucket = "examplebucket-1250000000"; //格式:BucketName-APPID GetBucketRequest request = new GetBucketRequest(bucket); //获取 a/ 下的对象以及子目录 request.SetPrefix("a/"); //执行请求 GetBucketResult result = cosXml.GetBucket(request); //bucket的相关信息 ListBucket info = result.listBucket; // 对象列表 List <ListBucket.Contents> objects = info.contentsList; // 子目录列表 List <ListBucket.CommonPrefixes> subDirs = info.commonPrefixesList; } catch (COSXML.CosException.CosClientException clientEx) { //请求失败 Console.WriteLine("CosClientException: " + clientEx); } catch (COSXML.CosException.CosServerException serverEx) { //请求失败 Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } //.cssg-snippet-body-end }
public void testCustomHost() { string customHost = "www.my.custom.host.com"; // test host CosXmlConfig configWithHost = new CosXmlConfig.Builder() .setHost(customHost) .Build(); string bucket = "bucket-125000"; CosXmlServer cosXml = new CosXmlServer(configWithHost, null); GetBucketRequest bucketRequest = new GetBucketRequest(bucket); try { cosXml.GetBucket(bucketRequest); } catch (Exception e) { // ignore } Assert.AreEqual(customHost, bucketRequest.GetHost()); GetObjectRequest request = new GetObjectRequest(bucket, "aKey", null, null); try { cosXml.GetObject(request); } catch (Exception e) { // ignore } Assert.AreEqual(customHost, request.GetHost()); GetServiceRequest serviceRequest = new GetServiceRequest(); Assert.AreEqual("service.cos.myqcloud.com", serviceRequest.GetHost()); }
/// 获取第二页对象列表 public void GetBucketNextPage() { //.cssg-snippet-body-start:[get-bucket-next-page] try { string bucket = "examplebucket-1250000000"; //格式:BucketName-APPID GetBucketRequest request = new GetBucketRequest(bucket); //上一次拉取数据的下标 request.SetMarker(this.nextMarker); //执行请求 GetBucketResult result = cosXml.GetBucket(request); //bucket的相关信息 ListBucket info = result.listBucket; } catch (COSXML.CosException.CosClientException clientEx) { //请求失败 Console.WriteLine("CosClientException: " + clientEx); } catch (COSXML.CosException.CosServerException serverEx) { //请求失败 Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } //.cssg-snippet-body-end }
/// <summary> /// 列出指定容器下的对象列表 /// </summary> /// <param name="containerName"></param> /// <returns></returns> public async Task <IList <BlobFileInfo> > ListBlobs(string containerName) { if (!string.IsNullOrWhiteSpace(containerName) && !containerName.EndsWith("/")) { containerName += "/"; } var req = new GetBucketRequest(_tcConfig.BucketName); req.SetPrefix(containerName); var resp = _cosXmlServer.GetBucket(req); await resp.HandlerError("获取对象列表出错!"); var list = resp.listBucket.contentsList .Select(obj => new BlobFileInfo { Container = containerName?.Trim('/'), ETag = obj.eTag, Length = obj.size, LastModified = Convert.ToDateTime(obj.lastModified), Name = obj.key.Replace(containerName, string.Empty), Url = GetUrlByKey(obj.key), //ContentMD5 = }); return(list.ToArray()); }
protected override void ProcessRecord() { base.ProcessRecord(); GetBucketRequest request; try { request = new GetBucketRequest { NamespaceName = NamespaceName, BucketName = BucketName, IfMatch = IfMatch, IfNoneMatch = IfNoneMatch, OpcClientRequestId = OpcClientRequestId, Fields = Fields }; response = client.GetBucket(request).GetAwaiter().GetResult(); WriteOutput(response, response.Bucket); FinishProcessing(response); } catch (Exception ex) { TerminatingErrorDuringExecution(ex); } }
public async Task <ResponseModel> SelectObjectList() { try { string bucket = _buketName + "-" + _appid; //存储桶名称 格式:BucketName-APPID GetBucketRequest request = new GetBucketRequest(bucket); //设置签名有效时长 request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); //执行请求 GetBucketResult result = await Task.FromResult(_cosXml.GetBucket(request)); return(new ResponseModel { Code = 200, Data = result.GetResultInfo() }); } catch (CosClientException clientEx) { return(new ResponseModel { Code = 0, Data = "CosClientException: " + clientEx.Message }); } catch (CosServerException serverEx) { return(new ResponseModel { Code = 0, Data = "CosServerException: " + serverEx.GetInfo() }); } }
public void AsyncGetBucket() { ManualResetEvent manualResetEvent = new ManualResetEvent(false); GetBucketRequest request = new GetBucketRequest(QCloudServer.Instance().bucketForObjectTest); ///执行请求 QCloudServer.Instance().cosXml.GetBucket(request, delegate(CosResult cosResult) { GetBucketResult result = cosResult as GetBucketResult; Assert.True(result.httpCode == 200); manualResetEvent.Set(); }, delegate(CosClientException clientEx, CosServerException serverEx) { if (clientEx != null) { Console.WriteLine("CosClientException: " + clientEx.Message); } if (serverEx != null) { Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } Assert.Fail(); manualResetEvent.Set(); } ); manualResetEvent.WaitOne(); }
/// 获取对象列表 public void GetBucket() { //.cssg-snippet-body-start:[get-bucket] try { string bucket = "examplebucket-1250000000"; //格式:BucketName-APPID GetBucketRequest request = new GetBucketRequest(bucket); //执行请求 GetBucketResult result = cosXml.GetBucket(request); //bucket的相关信息 ListBucket info = result.listBucket; if (info.isTruncated) { // 数据被截断,记录下数据下标 this.nextMarker = info.nextMarker; } } catch (COSXML.CosException.CosClientException clientEx) { //请求失败 Console.WriteLine("CosClientException: " + clientEx); } catch (COSXML.CosException.CosServerException serverEx) { //请求失败 Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } //.cssg-snippet-body-end }
private IEnumerable <Picture> GetPicturesByBucket(string bucket) { var request = new GetBucketRequest(bucket); //设置签名有效时长 request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), _cosConfig.DurationSecond); var response = _cosXml.GetBucket(request); var result = response.listBucket.contentsList .Select(it => { var picture = new Picture { Url = $"{_cosConfig.BaseUrl}/{HttpUtility.HtmlEncode(it.key)}", Size = it.size, ETag = it.eTag }; DateTime.TryParse(it.lastModified, out var time); picture.LastModified = time; return(picture); }) .OrderByDescending(it => it.LastModified); return(result); }
public Task <GetBucketResponse> GetAsync(string bucketName, Action <GetBucketRequest> config = null, CancellationToken token = default) { GetBucketRequest req = new GetBucketRequest(bucketName); config?.Invoke(req); return(_requestHandler.SendRequestAsync <GetBucketRequest, GetBucketResponse>(req, token)); }
/// <summary> /// 获取bukect中的所有文件 /// </summary> /// <param name="bucketName"></param> /// <param name="config"></param> /// <param name="cosCredentialProvider"></param> /// <returns></returns> public static List <CloudFile> ListObjects() { if (BosConfig == null) { return(null); } //初始化 CosXmlServer CosXmlServer cosXml = getCosXmlServer(); GetBucketRequest request = new GetBucketRequest(BosConfig.BucketName); //设置签名有效时长 request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); request.SetMaxKeys(1 + ""); //执行请求 GetBucketResult result = cosXml.GetBucket(request); ListBucket listBucket = result.listBucket; List <ListBucket.Contents> contents = listBucket.contentsList; List <CloudFile> cloudFiles = new List <CloudFile>(); foreach (ListBucket.Contents content in contents) { CloudFile cloudFile = new CloudFile { Key = content.key, Size = content.size, LastModified = content.lastModified }; cloudFiles.Add(cloudFile); } while (result.listBucket.nextMarker != null) { request.SetMarker(result.listBucket.nextMarker); //执行请求 result = cosXml.GetBucket(request); foreach (ListBucket.Contents content in result.listBucket.contentsList) { CloudFile cloudFile = new CloudFile { Key = content.key, Size = content.size, LastModified = content.lastModified }; cloudFiles.Add(cloudFile); } } Console.WriteLine(cloudFiles); return(cloudFiles); }
public static void test(CosXml cosXml) { List <string> keys = new List <string>(); string bucket = "android-demo-ap-guangzhou"; GetBucketRequest getBucket = new GetBucketRequest(bucket); getBucket.Region = EnumUtils.GetValue(CosRegion.AP_Guangzhou); getBucket.SetSign(COSXML.Utils.TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); GetBucketResult result = cosXml.GetBucket(getBucket); Console.WriteLine(result.GetResultInfo()); foreach (ListBucket.Contents content in result.listBucket.contentsList) { if (content != null) { keys.Add(content.key); } } if (keys.Count > 0) { COSXML.Model.Object.DeleteMultiObjectRequest deleteMults = new COSXML.Model.Object.DeleteMultiObjectRequest(bucket); deleteMults.SetSign(COSXML.Utils.TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); deleteMults.Region = EnumUtils.GetValue(CosRegion.AP_Guangzhou); deleteMults.SetObjectKeys(keys); COSXML.Model.Object.DeleteMultiObjectResult deleteMultisResult = cosXml.DeleteMultiObjects(deleteMults); Console.WriteLine(deleteMultisResult.GetResultInfo()); } ListMultiUploadsRequest listMultis = new ListMultiUploadsRequest(bucket); listMultis.Region = EnumUtils.GetValue(CosRegion.AP_Guangzhou); listMultis.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); ListMultiUploadsResult listMultisResult = cosXml.ListMultiUploads(listMultis); Console.WriteLine(listMultisResult.GetResultInfo()); if (listMultisResult.listMultipartUploads.uploads.Count > 0) { foreach (ListMultipartUploads.Upload upload in listMultisResult.listMultipartUploads.uploads) { if (upload == null) { continue; } string key = upload.key; string uploadId = upload.uploadID; COSXML.Model.Object.AbortMultiUploadRequest abort = new COSXML.Model.Object.AbortMultiUploadRequest(bucket, key, uploadId); abort.Region = EnumUtils.GetValue(CosRegion.AP_Guangzhou); abort.SetSign(COSXML.Utils.TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); COSXML.Model.Object.AbortMultiUploadResult abortResult = cosXml.AbortMultiUpload(abort); } } }
public void TestSetSign() { GetBucketRequest request = new GetBucketRequest(QCloudServer.Instance().bucketForObjectTest); request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.Seconds), 600); ///执行请求 GetBucketResult result = QCloudServer.Instance().cosXml.GetBucket(request); Assert.AreEqual(result.httpCode, 200); }
public void ThrowExceptionGetBucketCustomEndpointAndOutpostsDualstackNotSupported() { var request = new GetBucketRequest { Bucket = "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:bucket:mybucket" }; var config = CreateConfig("https://beta.example.com", Flags.Dualstack); S3ControlArnTestUtils.RunMockRequest(request, GetBucketRequestMarshaller.Instance, config); }
public void VpceEndpointTests_GetBucket(string bucketName, string serviceUrl, Flags flags, string expectedUri, string expectedRegion, string expectedService) { var request = new GetBucketRequest { Bucket = bucketName }; RunTestRequest(request, GetBucketRequestMarshaller.Instance, Arn.IsArn(bucketName), serviceUrl, flags, expectedUri, expectedRegion, expectedService); }
/// <summary> /// 查询指定路径下面的对象 /// </summary> /// <param name="tEST"></param> /// <returns></returns> public ResultModel <ListBucket> GetBucketResult(string tEST) { CosXmlConfig config = new CosXmlConfig.Builder() .SetConnectionTimeoutMs(SetConnectionTimeoutMs) //设置连接超时时间,单位毫秒,默认45000ms .SetReadWriteTimeoutMs(SetReadWriteTimeoutMs) //设置读写超时时间,单位毫秒,默认45000ms .IsHttps(IsHttps) //设置默认 HTTPS 请求 .SetAppid(SetAppid) //设置腾讯云账户的账户标识 APPID .SetRegion(SetRegion) //设置一个默认的存储桶地域 .Build(); string secretId = SecretId; //云 API 密钥 SecretId string secretKey = SecretKey; //云 API 密钥 SecretKey long durationSecond = 600; //每次请求签名有效时长,单位为秒 QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, secretKey, durationSecond); CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider); ResultModel <ListBucket> resu = new ResultModel <ListBucket>(); try { string bucket = "yuanguhl"; //格式:BucketName-APPID GetBucketRequest request = new GetBucketRequest(bucket); request.Region = "ap-beijing"; //设置签名有效时长 request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); //获取 a/ 下的对象 if (!string.IsNullOrEmpty(tEST)) { request.SetPrefix(tEST); } //执行请求 GetBucketResult result = cosXml.GetBucket(request); //请求成功 resu.date = result.listBucket; resu.success = true; return(resu); } catch (COSXML.CosException.CosClientException clientEx) { //请求失败 resu.success = false; resu.message = clientEx.InnerException.ToString(); return(resu); } catch (COSXML.CosException.CosServerException serverEx) { //请求失败 resu.success = false; resu.message = serverEx.InnerException.ToString(); return(resu); } }
/// 指定前缀批量删除对象 public void DeletePrefix() { //.cssg-snippet-body-start:[delete-prefix] try { String nextMarker = null; // 循环请求直到没有下一页数据 do { string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID string prefix = "folder1/"; //指定前缀 GetBucketRequest listRequest = new GetBucketRequest(bucket); //获取 folder1/ 下的所有对象以及子目录 listRequest.SetPrefix(prefix); listRequest.SetMarker(nextMarker); //执行列出对象请求 GetBucketResult listResult = cosXml.GetBucket(listRequest); ListBucket info = listResult.listBucket; // 对象列表 List <ListBucket.Contents> objects = info.contentsList; // 下一页的下标 nextMarker = info.nextMarker; DeleteMultiObjectRequest deleteRequest = new DeleteMultiObjectRequest(bucket); //设置返回结果形式 deleteRequest.SetDeleteQuiet(false); //对象列表 List <string> deleteObjects = new List <string>(); foreach (var content in objects) { deleteObjects.Add(content.key); } deleteRequest.SetObjectKeys(deleteObjects); //执行批量删除请求 DeleteMultiObjectResult deleteResult = cosXml.DeleteMultiObjects(deleteRequest); //打印请求结果 Console.WriteLine(deleteResult.GetResultInfo()); } while (nextMarker != null); } catch (COSXML.CosException.CosClientException clientEx) { //请求失败 Console.WriteLine("CosClientException: " + clientEx); } catch (COSXML.CosException.CosServerException serverEx) { //请求失败 Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } //.cssg-snippet-body-end }
public IEnumerable <IFileEntry> List() { bool isTruncated = true; string filename = null; while (isTruncated) { cosXml = GetCosXml(); string bucket = _cosOptions.Bucket; string prefix = _cosOptions.Path; GetBucketRequest request = new GetBucketRequest(bucket); request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); if (!string.IsNullOrEmpty(filename)) { request.SetMarker(filename); } if (!string.IsNullOrEmpty(prefix)) { request.SetPrefix(prefix); } GetBucketResult result = cosXml.GetBucket(request); ListBucket info = result.listBucket; isTruncated = result.listBucket.isTruncated; filename = result.listBucket.nextMarker; foreach (var item in info.contentsList) { var last = DateTime.Parse(item.lastModified); var fileName = item.key; if (!string.IsNullOrWhiteSpace(prefix)) { fileName = fileName.Substring(prefix.Length); if (fileName.StartsWith("/", StringComparison.Ordinal)) { fileName = fileName.Trim('/'); } } yield return(new FileEntry(fileName, item.size, last, last)); } } }
public void 特定のバケット情報のみ取得() { GetBucketRequest getBucketRequest = new GetBucketRequest { NamespaceName = NameSpaceName, BucketName = TestBucketName }; var bucketDetails = ObjectStorageClient.GetBucket(getBucketRequest); Assert.IsNotNull(bucketDetails.Bucket); Assert.IsTrue(bucketDetails.Bucket.Name == TestBucketName); Assert.IsNotNull(bucketDetails.Bucket.TimeCreated); }
public void TestHostEndpoint() { CosXmlConfig config = new CosXmlConfig.Builder() .SetConnectionLimit(512) .SetEndpointSuffix("cos.accelerate.myqcloud.com") .Build(); CosXmlServer cosXml = new CosXmlServer(config, null); string bucket = "bucket-125000"; GetObjectRequest request = new GetObjectRequest(bucket, "aKey", null, null); try { cosXml.GetObject(request); } catch (Exception) { // ignore } Assert.AreEqual(bucket + "." + config.endpointSuffix, request.GetHost()); GetBucketRequest bucketRequest = new GetBucketRequest(bucket); try { cosXml.GetBucket(bucketRequest); } catch (Exception) { // ignore } Assert.AreEqual(bucket + "." + config.endpointSuffix, bucketRequest.GetHost()); // test service request GetServiceRequest serviceRequest = new GetServiceRequest(); Assert.AreEqual("service.cos.myqcloud.com", serviceRequest.GetHost()); string serviceHost = "service.cos.csp.com"; serviceRequest.host = serviceHost; Assert.AreEqual(serviceHost, serviceRequest.GetHost()); }
public void ArnIdSetFieldIdNotSet() { var outpostArn = "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:bucket:mybucket"; var s3ControlConfig = new AmazonS3ControlConfig { UseArnRegion = true, RegionEndpoint = RegionEndpoint.USWest2 }; var getBucketRequest = new GetBucketRequest { Bucket = outpostArn }; var marshalledRequest = S3ControlArnTestUtils.RunMockRequest(getBucketRequest, GetBucketRequestMarshaller.Instance, s3ControlConfig); Assert.AreEqual("123456789012", marshalledRequest.Headers["x-amz-account-id"]); }
/// <summary> /// Returns the Region the bucket resides in. /// </summary> /// <param name="request"></param> /// <returns></returns> public List <string> GetBucketLocation(GetBucketLocationRequest request) { ListRegionSubscriptionsRequest listRegionSubscriptionsRequest = new ListRegionSubscriptionsRequest { TenancyId = base.Config.TenancyId }; var regions = IdentityClient.ListRegionSubscriptions(listRegionSubscriptionsRequest); var nameSpaceName = GetNamespace(request); List <string> res = new List <string>(); foreach (var region in regions.Items) { ObjectStorageClient.SetRegion(region.RegionName); GetBucketRequest getBucketRequest = new GetBucketRequest { NamespaceName = nameSpaceName, BucketName = request.BucketName }; try { var b = ObjectStorageClient.GetBucket(getBucketRequest); if (b.Bucket != null) { res.Add(region.RegionName); } } catch (WebException we) { if (!(we.Status.Equals(WebExceptionStatus.ProtocolError) && ((HttpWebResponse)we.Response).StatusCode == HttpStatusCode.NotFound)) { throw; } } } if (res.Count <= 0) { throw new Exception("NoSuchBucket"); } return(res); }
public async Task <List <Item> > ListObjectsAsync(string bucketName, string prefix = null) { if (string.IsNullOrEmpty(bucketName)) { throw new ArgumentNullException(nameof(bucketName)); } bucketName = ConvertBucketName(bucketName); ListBucket info = null; string nextMarker = null; List <Item> items = new List <Item>(); do { GetBucketRequest request = new GetBucketRequest(bucketName); if (!string.IsNullOrEmpty(nextMarker)) { request.SetMarker(nextMarker); } if (!string.IsNullOrEmpty(prefix)) { request.SetPrefix(prefix); } //执行请求 GetBucketResult result = _client.GetBucket(request); //bucket的相关信息 info = result.listBucket; if (info.isTruncated) { // 数据被截断,记录下数据下标 nextMarker = info.nextMarker; } foreach (var item in info.contentsList) { items.Add(new Item() { Key = item.key, LastModified = item.lastModified, ETag = item.eTag, Size = (ulong)item.size, IsDir = false, BucketName = bucketName, VersionId = null, }); } } while (info.isTruncated); return(await Task.FromResult(items)); }
public void getBucket() { //.cssg-snippet-body-start:[get-bucket] CosXmlConfig config = new CosXmlConfig.Builder() .SetConnectionTimeoutMs(60000) //设置连接超时时间,单位毫秒,默认45000ms .SetReadWriteTimeoutMs(40000) //设置读写超时时间,单位毫秒,默认45000ms .IsHttps(true) //设置默认 HTTPS 请求 .SetAppid("1253653367") //设置腾讯云账户的账户标识 APPID .SetRegion("ap-guangzhou") //设置一个默认的存储桶地域 .Build(); string secretId = Environment.GetEnvironmentVariable("COS_KEY"); //云 API 密钥 SecretId string secretKey = Environment.GetEnvironmentVariable("COS_SECRET"); //云 API 密钥 SecretKey long durationSecond = 600; //每次请求签名有效时长,单位为秒 QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, secretKey, durationSecond); CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider); try { string bucket = "bucket-cssg-test-dotnet-1253653367"; //格式:BucketName-APPID GetBucketRequest request = new GetBucketRequest(bucket); //设置签名有效时长 request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600); //获取 a/ 下的对象 request.SetPrefix("a/"); //执行请求 GetBucketResult result = cosXml.GetBucket(request); //bucket的相关信息 ListBucket info = result.listBucket; } catch (COSXML.CosException.CosClientException clientEx) { //请求失败 Console.WriteLine("CosClientException: " + clientEx); Assert.Null(clientEx); } catch (COSXML.CosException.CosServerException serverEx) { //请求失败 Console.WriteLine("CosServerException: " + serverEx.GetInfo()); Assert.Null(serverEx); } //.cssg-snippet-body-end }
public void OutpostsBucketInputUSWest2UseArnRegionFalse() { var outpostsBucketArn = "arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:bucket:mybucket"; var s3ControlConfig = new AmazonS3ControlConfig { RegionEndpoint = RegionEndpoint.USWest2 }; var getBucketRequest = new GetBucketRequest { Bucket = outpostsBucketArn }; var marshalledRequest = S3ControlArnTestUtils.RunMockRequest(getBucketRequest, GetBucketRequestMarshaller.Instance, s3ControlConfig); Assert.AreEqual(new Uri("https://s3-outposts.us-west-2.amazonaws.com"), marshalledRequest.Endpoint); Assert.AreEqual("op-01234567890123456", marshalledRequest.Headers[HeaderKeys.XAmzOutpostId]); Assert.AreEqual("123456789012", marshalledRequest.Headers[HeaderKeys.XAmzAccountId]); }
public void ArnIdNotSetFieldIdNotSetException() { var outpostAccessPointName = "myAccessPoint"; var s3ControlConfig = new AmazonS3ControlConfig { UseArnRegion = true, RegionEndpoint = RegionEndpoint.USWest2 }; var getBucketRequest = new GetBucketRequest { Bucket = outpostAccessPointName, }; var exception = Assert.ThrowsException <AmazonS3ControlException>(() => { S3ControlArnTestUtils.RunMockRequest(getBucketRequest, GetBucketRequestMarshaller.Instance, s3ControlConfig); }); Assert.AreEqual("AccountId can only contain alphanumeric characters and dashes and must be between 1 and 63 characters long.", exception.Message); }
public void OutpostsBucketInputUSWest2UseArnRegionTrueInvalidArnException(string outpostsBucketArn) { var s3ControlConfig = new AmazonS3ControlConfig { RegionEndpoint = RegionEndpoint.USWest2, UseArnRegion = true }; var getBucketRequest = new GetBucketRequest { Bucket = outpostsBucketArn }; var exception = Assert.ThrowsException <AmazonClientException>(() => { S3ControlArnTestUtils.RunMockRequest(getBucketRequest, GetBucketRequestMarshaller.Instance, s3ControlConfig); }); Assert.AreEqual("Invalid ARN, outpost resource format is incorrect", exception.Message); }
public void OutpostsBucketInputUSGovEast1UseArnRegionTrueSystemFips() { var outpostsBucketArn = "arn:aws-us-gov:s3-outposts:us-gov-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket"; var s3ControlConfig = new AmazonS3ControlConfig { RegionEndpoint = RegionEndpoint.GetBySystemName("fips-us-gov-east-1"), UseArnRegion = true }; var getBucketRequest = new GetBucketRequest { Bucket = outpostsBucketArn }; var marshalledRequest = S3ControlArnTestUtils.RunMockRequest(getBucketRequest, GetBucketRequestMarshaller.Instance, s3ControlConfig); Assert.AreEqual(new Uri("https://s3-outposts.us-gov-east-1.amazonaws.com"), marshalledRequest.Endpoint); Assert.AreEqual("op-01234567890123456", marshalledRequest.Headers[HeaderKeys.XAmzOutpostId]); Assert.AreEqual("123456789012", marshalledRequest.Headers[HeaderKeys.XAmzAccountId]); }
public void OutpostsBucketInputUSEast1UseArnRegionFalseCrossRegionError() { var outpostsBucketArn = "arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:bucket:mybucket"; var s3ControlConfig = new AmazonS3ControlConfig { RegionEndpoint = RegionEndpoint.USWest2, UseArnRegion = false }; var getBucketRequest = new GetBucketRequest { Bucket = outpostsBucketArn }; var exception = Assert.ThrowsException <AmazonClientException>(() => { S3ControlArnTestUtils.RunMockRequest(getBucketRequest, GetBucketRequestMarshaller.Instance, s3ControlConfig); }); Assert.AreEqual("Invalid configuration, cross region Outpost Bucket ARN", exception.Message); }