No RegionEndpoint or ServiceURL settings

I am writing code to upload files to AWS S3 and get the following exception:

AmazonClientException: RegionEndpoint or ServiceURL not configured

My code is:

Console.WriteLine("ready to upload");
AWSCredentials credentials;
credentials = new BasicAWSCredentials(accessKeyID.Trim(), secretKey.Trim());
AmazonS3Client s3Client = new AmazonS3Client(accessKeyID.Trim(), secretKey.Trim(), Amazon.RegionEndpoint.USEast1);
Console.WriteLine("Successful verification");
Console.WriteLine("Check if the bucket exists");
if (!CheckBucketExists(s3Client, bucketName))
{
    s3Client.PutBucket(bucketName);
    Console.WriteLine("create bucket");
}
TransferUtility utility = new TransferUtility();
Console.WriteLine("Upload  Directory......");
//exception here
utility.UploadDirectory(@"E:\telerikFile\13ginabdfglil.com", bucketName);

An exception:

Amazon.Runtime.AmazonClientException: No RegionEndpoint or ServiceURL configured
  Amazon.Runtime.ClientConfig.Validate()
  Amazon.S3.AmazonS3Config.Validate()
  Amazon.Runtime.AmazonServiceClient..ctor(AWSCredentials credentials, ClientConfig config)
  Amazon.S3.AmazonS3Client..ctor()
  Amazon.S3.Transfer.TransferUtility..ctor()
  Telerik2Amazon.Program.UploadFile()

What should I do?

+13
source share
5 answers

Short answer to the error ...

Amazon.Runtime.AmazonClientException: no RegionEndpoint or ServiceURL settings

... in my case, it was necessary to indicate the area when constructing the client object (for me it was AmazonSimpleEmailServiceClient).

Assuming you are using BasicAWSCredentials, try the following:

var credentials = new BasicAWSCredentials(accessKeyID, secretKey);

new AmazonS3Client(credentials, RegionEndpoint.USEast1);

//                              ^^^^^^^^^^^^^^^^^^^^^^  add this
+6

Asp.Net , Web.config:

<add key="AWSRegion" value="us-east-1" />

AWSSDK.SimpleEmail v3.3

+2

.
TransferUtility PutObjectRequest .
attontion: PutObjectRequests Property Key, " .
:

        String s3Path = "987977/Baby.db";
        Console.WriteLine("Ready to upload");
        AWSCredentials credentials;
        credentials = new BasicAWSCredentials(accessKeyID.Trim(), secretKey.Trim());
        AmazonS3Client s3Client = new AmazonS3Client(accessKeyID.Trim(), secretKey.Trim(), Amazon.RegionEndpoint.USEast1);
        Console.WriteLine("Successful verification");
        Console.WriteLine("Check: if the bucket exists");
        if (!CheckBucketExists(s3Client, bucketName))
        {
            s3Client.PutBucket(bucketName);
            Console.WriteLine("Creat bucket");
        }
        string localPath = @"E:\telerikFile\987977\Baby.db";
        PutObjectRequest obj = new PutObjectRequest();
        var fileStream = new FileStream(localPath, FileMode.Open, FileAccess.Read);
  //      obj.FilePath= @"E:\telerikFile\987977\Baby.db";
        obj.InputStream = fileStream;
        obj.BucketName = bucketName;
        obj.Key = s3Path;
       // obj.ContentBody = "This is sample content...";
        obj.CannedACL = S3CannedACL.PublicRead;
        Console.WriteLine("uploading");
        // default to set public right  
        s3Client.PutObject(obj);
+1

TransferUtility() :

var credentials = new BasicAWSCredentials(accessKeyID, secretKey);

var S3Client = new AmazonS3Client(credentials, RegionEndpoint.USEast1);

this._transferUtility = new TransferUtility(S3Client);
0

, aws.

. , .Net Core:

.NET Core ConfigurationManager app.config web.config.

https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-netcore.html

, . Https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html.

, C:\Users\<USERNAME>\.aws\credentials Windows

[default]
aws_access_key_id = your_access_key_id
aws_secret_access_key = your_secret_access_key

- :

var dbClient = new AmazonDynamoDBClient(new StoredProfileAWSCredentials(), 
                     RegionEndpoint.USEast1);

More complicated way: https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-netcore.html#net-core-configuration-builder

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables();
    Configuration = builder.Build();
}

appsettings.Development.json

{
  "AWS": {
    "Profile": "local-test-profile",
    "Region": "us-west-2"
  }
}


var options = Configuration.GetAWSOptions();
IAmazonS3 client = options.CreateServiceClient<IAmazonS3>();
0
source

Source: https://habr.com/ru/post/1681264/


All Articles