NOTE: This repository is deprecated and will be removed in the future. Its original contents are now part of the Azure SDK for Goand a new package for Blobs is available from github.com/Azure/azure-storage-blob-go. For more information, see Azure/azure-sdk-for-go#597.
The github.com/Azure/azure-sdk-for-go/storage
package is used to perform REST operations against the Azure Storage Service. To manage your storage accounts (Azure Resource Manager / ARM), use the github.com/Azure/azure-sdk-for-go/arm/storage package. For your classic storage accounts (Azure Service Management / ASM), use github.com/Azure/azure-sdk-for-go/management/storageservice package.
This package includes support for Azure Storage Emulator
go get -u github.com/Azure/azure-storage-go
- Add the following import statement into any Go source file that will reference Azure Storage:
import storage github.com/Azure/azure-storage-go
- If you don't already have one, create a Storage Account.
- Take note of your Azure Storage Account Name and Azure Storage Account Key. They'll both be necessary for using this library.
- This option is production ready, but can also be used for development.
- (Optional, Windows only) Download and start the Azure Storage Emulator.
- Checkout our existing samples.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.
When contributing, please conform to the following practices:
- Target the 'dev' branch. This practice ensures that
go get
retreives more stable bits. - Run gofmt to use standard go formatting.
- Run golint to conform to standard naming conventions.
- Run go vet to catch common Go mistakes.
- Use GoASTScanner/gas to ensure there are no common security violations in your contribution.
- Run go test to catch possible bugs in the code.
- This project uses HTTP recordings for testing.
- The recorder should be attached to the client before calling the functions to test and later stopped.
func (s *StorageQueueSuite) TestQueueExists(c *chk.C) {
cli := getQueueClient(c)
rec := cli.client.appendRecorder(c)
defer rec.Stop()
queue1 := cli.GetQueueReference(queueName(c, "nonexistent"))
ok, err := queue1.Exists()
c.Assert(err, chk.IsNil)
c.Assert(ok, chk.Equals, false)
queue2 := cli.GetQueueReference(queueName(c, "exisiting"))
c.Assert(queue2.Create(nil), chk.IsNil)
defer queue2.Delete(nil)
ok, err = queue2.Exists()
c.Assert(err, chk.IsNil)
c.Assert(ok, chk.Equals, true)
}
- Important note: all HTTP requests in the recording must be unique: different bodies, headers (
User-Agent
,Authorization
andDate
orx-ms-date
headers are ignored), URLs and methods. As opposed to the example above, the following test is not suitable for recording:
func (s *StorageQueueSuite) TestQueueExists(c *chk.C) {
cli := getQueueClient(c)
rec := cli.client.appendRecorder(c)
defer rec.Stop()
queue := cli.GetQueueReference(queueName(c))
ok, err := queue.Exists()
c.Assert(err, chk.IsNil)
c.Assert(ok, chk.Equals, false)
c.Assert(queue.Create(nil), chk.IsNil)
defer queue.Delete(nil)
ok, err = queue.Exists() // This is the very same request as the one 5 line above
// The test replayer gets confused and the test fails in the last line
c.Assert(err, chk.IsNil)
c.Assert(ok, chk.Equals, true)
}