AWS S3 Requirements
AWS S3 Overview#
Amazon Simple Storage Service (S3) is a scalable storage service offered by AWS that provides object storage through a web service interface.
Setting up AWS S3#
To set up AWS S3 for a self-hosted installation, do the following:
- Set up the buckets using your own naming scheme (the names you choose can be configured in the Helm Chart
values.yamlfile). We suggest using a format such as:${COMPANY_NAME}-dtplatform-${ENVIRONMENT_SHORTNAME}-${BUCKET_TYPE}-${CLOUD_REGION} - Ensure that the following buckets are set up:
kafka- For the Kafka request/reply system (communication between services)filesvc- For the File Service storagescriptmanager- For the Script Manager/Worker log storagedatasourcesvc- For the Datasource Service file storageworkflowsvc- For the Workflow Service storage
- For example, the bucket names for a company called “ACME” in an environment called
prod1in theus-west-2region would be:
acme-dtplatform-prod1-kafka-us-west-2acme-dtplatform-prod1-filesvc-us-west-2acme-dtplatform-prod1-scriptmanager-us-west-2acme-dtplatform-prod1-datasourcesvc-us-west-2acme-dtplatform-prod1-workflowsvc-us-west-2
- Ensure that the following bucket security requirements are met:
The buckets should perform server-side encryption.
The buckets can enable versioning if required by customer policy. By design, no Platform-written objects are overwritten.
The buckets should block all public access.
The buckets' object ownership should be set to “bucket owner enforced”.
The buckets should not allow access from other accounts except as required by customer security policy.
The Cross-Origin Resource Sharing (CORS) policy should be broad unless restrictions are required by customer security policy. See the example below.
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [], "MaxAgeSeconds": 1728000 }]The FileService bucket needs a bucket policy that allows the CloudFront distribution to access objects. Refer to the AWS documentation for more information. See the sample policy below.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudFrontCanGetObjects", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "${FILESVC_BUCKET_ARN}/*", "Condition": { "StringEquals": { "aws:SourceArn": "${CLOUDFRONT_DISTRO_ARN}" } } } ]}