Sample code for 30+ languages & platforms
Dart

Create S3 Bucket in a Region

See more Amazon S3 Examples

Demonstrates how to create an S3 bucket in a specified region. This example will create a bucket in the eu-west-2 region.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  final rest = CkRest();

  // Connect to the Amazon AWS REST server.
  final bTls = true;
  final port = 443;
  final bAutoReconnect = true;
  rest.connect('s3.amazonaws.com', port, bTls, bAutoReconnect);

  // Provide AWS credentials for the REST call.
  final authAws = CkAuthAws();
  authAws.accessKey = 'AWS_ACCESS_KEY';
  authAws.secretKey = 'AWS_SECRET_KEY';
  authAws.serviceName = 's3';
  rest.setAuthAws(authAws);

  // We'll send a PUT request having an XML body such as this:
  // <CreateBucketConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
  //   <LocationConstraint>BucketRegion</LocationConstraint> 
  //   </CreateBucketConfiguration>

  // Create the XML body specifying the region as "eu-west-2"
  final bucketRegion = 'eu-west-2';
  final sbBucketRegion = CkStringBuilder();
  sbBucketRegion.append(bucketRegion);

  // We only need to specify the LocationConstraint if the bucket's region is NOT us-east-1
  final xml = CkXml();
  if (!sbBucketRegion.contentsEqual('us-east-1', true)) {
    xml.tag = 'CreateBucketConfiguration';
    xml.addAttribute('xmlns', 'http://s3.amazonaws.com/doc/2006-03-01/');
    xml.updateChildContent('LocationConstraint', 'eu-west-2');
  }

  // --------------------------------------------------------------
  // IMPORTANT: To create a bucket in the default us-east-1 region,
  // do not add the LocationConstraint.  Adding a LocationConstraint of "us-east-1"
  // causes an error "The specified location-constraint is not valid."
  // By default, the bucket is created in us-east-1 by sending a PUT with an empty body.
  // --------------------------------------------------------------

  // Set the bucket name via the HOST header.
  // In this case, the bucket name is "chilkateuwest2".
  rest.host = 'chilkateuwest2.s3.amazonaws.com';

  // Make the call to create the bucket.
  var responseStr = '';
  if (!sbBucketRegion.contentsEqual('us-east-1', true)) {
    responseStr = rest.fullRequestString('PUT', '/', xml.getXml());
  } else {
    // If the bucket is to be created in the us-east-1 region (the default region)
    // just send a PUT with no body.
    responseStr = rest.fullRequestNoBody('PUT', '/');
  }

  if (!rest.lastMethodSuccess) {
    print(rest.lastErrorText);
    return;
  }

  if (rest.responseStatusCode != 200) {
    print('status code = ${rest.responseStatusCode}');
    final responseXml = CkXml();
    responseXml.loadXml(responseStr);
    print(responseXml.getXml());
    print('Failed.');
    return;
  }

  print('Bucket in the eu-west-2 region created.');
}