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