unpub_aws
A collection of modules to use for deploying unpub into AWS infrastructure.
Available Features
1. S3 File Storage
S3 File Storage
Use AWS S3 or another S3 API compatible endpoint as your file storage.
import 'package:unpub/unpub.dart' as unpub;
import 'package:unpub/' as unpub_aws;
var app = unpub.App(
// ...
packageStore: unpub.S3Store('your-bucket-name'),
);
What you need:
- An S3 bucket created in AWS
- AWS access credentials
Authentication for AWS can be handled in 1 of 2 ways: Environment variables or during the S3Store
class construction.
Environment Variables
AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxxx
AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AWS_DEFAULT_REGION=us-west-2
AWS_S3_ENDPOINT=s3.amazonaws.com
Kitchen Sink Example:
import 'package:mongo_dart/mongo_dart.dart';
import 'package:unpub/unpub.dart' as unpub;
import 'package:unpub_aws/src/aws_credentials.dart';
import 'package:unpub_aws/unpub_aws.dart' as unpub_aws;
main(List<String> args) async {
final db = Db('mongodb://localhost:27017/dart_pub');
await db.open(); // make sure the MongoDB connection opened
final app = unpub.App(
metaStore: unpub.MongoStore(db),
packageStore: unpub_aws.S3Store('my-bucket-name',
// We attempt to find region from AWS_DEFAULT_REGION. If one is not
// available or provided an Argument error will be thrown.
region: 'us-east-1',
// Provide a different S3 compatible endpoint.
endpoint: 'aws-alternative.example.com',
// By default packages are sorted into folders in s3 like this.
// Pass in an alternative if needed.
getObjectPath: (String name, String version) => '$name/$name-$version.tar.gz',
// You can provide credentials manually but...
// don't be bad at security populate env vars instead...
//
// AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxxxxxxx
// AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
credentials: AwsCredentials(
awsAccessKeyId: '',
awsSecretAccessKey: '')),
);
final server = await app.serve('0.0.0.0', 4000);
print('Serving at http://${server.address.host}:${server.port}');
}