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 for SMI#
To set up AWS S3 for SMI, do the following:
Set up four buckets using your own naming scheme (the names you choose can be configured in the Helm Chart file values.yaml). We suggest using a format such as:
${COMPANY_NAME}-dtplatform-${ENVIRONMENT_SHORTNAME}-${BUCKET_TYPE}-${CLOUD_REGION}Ensure that the required four buckets are set up as follows:
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 Datasources Service file storage
For example, bucket names for a company called “ACME” in an an environment called prod1 in the us-west-2 region, would be as follows:
acme-dtplatform-prod1-kafka-us-west-2acme-dtplatform-prod1-filesvc-us-west-2acme-dtplatform-prod1-scriptmanager-us-west-2acme-dtplatform-prod1-datasourcesvc-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 a customer policy. However, no custom data files are overwritten by design.
- The buckets should block all public access.
- The buckets object ownership should have “bucket owner enforced”.
- The bucket should not allow another account access except as required by the customer security policy.
- The Cross-Origin Resource Sharing (CORS) policy should be broad unless restrictions are required by the customer’s security policy. See example below.
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [], "MaxAgeSeconds": 1728000 }]The FileService bucket will have a bucket policy to allow the CloudFront Distribution to access objects. Refer to AWS documentation for more information. See sample script 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}" } } } ]}