Sample code for 30+ languages & platforms
SQL Server

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 SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @iTmp0 int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    -- This example requires the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

    DECLARE @rest int
    EXEC @hr = sp_OACreate 'Chilkat.Rest', @rest OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    -- Connect to the Amazon AWS REST server.
    DECLARE @bTls int
    SELECT @bTls = 1
    DECLARE @port int
    SELECT @port = 443
    DECLARE @bAutoReconnect int
    SELECT @bAutoReconnect = 1
    EXEC sp_OAMethod @rest, 'Connect', @success OUT, 's3.amazonaws.com', @port, @bTls, @bAutoReconnect

    -- Provide AWS credentials for the REST call.
    DECLARE @authAws int
    EXEC @hr = sp_OACreate 'Chilkat.AuthAws', @authAws OUT

    EXEC sp_OASetProperty @authAws, 'AccessKey', 'AWS_ACCESS_KEY'
    EXEC sp_OASetProperty @authAws, 'SecretKey', 'AWS_SECRET_KEY'
    EXEC sp_OASetProperty @authAws, 'ServiceName', 's3'
    EXEC sp_OAMethod @rest, 'SetAuthAws', @success OUT, @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"
    DECLARE @bucketRegion nvarchar(4000)
    SELECT @bucketRegion = 'eu-west-2'
    DECLARE @sbBucketRegion int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbBucketRegion OUT

    EXEC sp_OAMethod @sbBucketRegion, 'Append', @success OUT, @bucketRegion

    -- We only need to specify the LocationConstraint if the bucket's region is NOT us-east-1
    DECLARE @xml int
    EXEC @hr = sp_OACreate 'Chilkat.Xml', @xml OUT

    EXEC sp_OAMethod @sbBucketRegion, 'ContentsEqual', @iTmp0 OUT, 'us-east-1'
    IF Not @iTmp0
      BEGIN
        EXEC sp_OASetProperty @xml, 'Tag', 'CreateBucketConfiguration'
        EXEC sp_OAMethod @xml, 'AddAttribute', @success OUT, 'xmlns', 'http://s3.amazonaws.com/doc/2006-03-01/'
        EXEC sp_OAMethod @xml, 'UpdateChildContent', NULL, 'LocationConstraint', 'eu-west-2'
      END

    -- --------------------------------------------------------------
    -- 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".
    EXEC sp_OASetProperty @rest, 'Host', 'chilkateuwest2.s3.amazonaws.com'

    -- Make the call to create the bucket.
    DECLARE @responseStr nvarchar(4000)

    EXEC sp_OAMethod @sbBucketRegion, 'ContentsEqual', @iTmp0 OUT, 'us-east-1'
    IF Not @iTmp0
      BEGIN
        EXEC sp_OAMethod @xml, 'GetXml', @sTmp0 OUT
        EXEC sp_OAMethod @rest, 'FullRequestString', @responseStr OUT, 'PUT', '/', @sTmp0
      END
    ELSE
      BEGIN
        -- If the bucket is to be created in the us-east-1 region (the default region)
        -- just send a PUT with no body.
        EXEC sp_OAMethod @rest, 'FullRequestNoBody', @responseStr OUT, 'PUT', '/'
      END
    EXEC sp_OAGetProperty @rest, 'LastMethodSuccess', @iTmp0 OUT
    IF @iTmp0 <> 1
      BEGIN
        EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @rest
        EXEC @hr = sp_OADestroy @authAws
        EXEC @hr = sp_OADestroy @sbBucketRegion
        EXEC @hr = sp_OADestroy @xml
        RETURN
      END

    EXEC sp_OAGetProperty @rest, 'ResponseStatusCode', @iTmp0 OUT
    IF @iTmp0 <> 200
      BEGIN

        EXEC sp_OAGetProperty @rest, 'ResponseStatusCode', @iTmp0 OUT
        PRINT 'status code = ' + @iTmp0
        DECLARE @responseXml int
        EXEC @hr = sp_OACreate 'Chilkat.Xml', @responseXml OUT

        EXEC sp_OAMethod @responseXml, 'LoadXml', @success OUT, @responseStr
        EXEC sp_OAMethod @responseXml, 'GetXml', @sTmp0 OUT
        PRINT @sTmp0

        PRINT 'Failed.'
        EXEC @hr = sp_OADestroy @rest
        EXEC @hr = sp_OADestroy @authAws
        EXEC @hr = sp_OADestroy @sbBucketRegion
        EXEC @hr = sp_OADestroy @xml
        EXEC @hr = sp_OADestroy @responseXml
        RETURN
      END


    PRINT 'Bucket in the eu-west-2 region created.'

    EXEC @hr = sp_OADestroy @rest
    EXEC @hr = sp_OADestroy @authAws
    EXEC @hr = sp_OADestroy @sbBucketRegion
    EXEC @hr = sp_OADestroy @xml
    EXEC @hr = sp_OADestroy @responseXml


END
GO