S3 (Simple Storage Service)¶
This document contains information about the S3 service supported in Handel. This Handel service provisions an S3 bucket for use by your applications.
For static websites in S3, see the S3 Static Site service.
This service currently only provisions a bare-bones S3 bucket for data storage. It does support versioning, but the following other features are not currently supported:
- CORS configuration
- Bucket logging
- Cross-region replication
This service takes the following parameters:
|type||string||Yes||This must always be s3 for this service type.|
|bucket_name||string||No||<appName>-<environmentName>-<serviceName>-<serviceType>||The name of the bucket to create. This name must be globally unique across all AWS accounts, so ‘myBucket’ will likely be taken. :)|
|bucket_acl||string||No||Warning: A canned access control list (ACL) that grants predefined permissions to the bucket. These are global permissions ie, PublicRead means the bucket is open to the world. Allowed values: AuthenticatedRead, AwsExecRead, BucketOwnerRead, BucketOwnerFullControl, LogDeliveryWrite, Private, PublicRead|
|versioning||string||No||disabled||Whether to enable versioning on the bucket. Allowed values: enabled, disabled|
|logging||string||No||disabled||Whether to enable logging on the bucket. Allowed values: enabled, disabled.|
|lifecycles||Lifecycles||No||Lifecycle Policies to apply to the bucket. See AWS Docs for more info|
|tags||Resource Tags||No||Any tags you want to apply to your S3 bucket|
A list of life cycle rules
lifecycles: - name: <string> # Required prefix: <string> # Optional transitions: # Optional but one of transitions or version_transitions are required - type: <ia, glacier, expiration> # type must be ia (Standard-IA infrequent Access), glacier, or expiration) days: 30 version_transitions: # Optional but one of transitions or version_transitions are required, only days are supported - type: <ia, glacier, expiration> days: 30
Transitions are defined by the following:
|type||string||Yes||None||Type of transition must be one of ia(Standard Infrequent Access), glacier, expiration (deletion)|
|days||integer||No||None||Number of days until transition must specify all transition as days or dates not both|
|date||ISO 8601 UTC||No||None||Date to transition in ISO 8602 UTC format must specify all transition as days or dates not both|
More complex example:
lifecycles: - name: ia30glacier365expire720 transitions: - type: ia days: 30 - type: expiration days: 720 - type: glacier days: 365 version_transitions: - type: ia days: 30 - type: expiration days: 90
Example Handel File¶
This Handel file shows an S3 service being configured:
version: 1 name: my-s3-bucket environments: dev: mybucket: type: s3 # Because we don't specify a bucket_name, the bucket will be named 'my-s3-bucket-dev-mybucket-s3' (see default in table above) versioning: enabled
This Handel file shows an S3 service that is configured to send events to a Lambda function:
version: 1 name: test-s3-events environments: dev: function: type: lambda path_to_code: . handler: index.handler runtime: python3.6 bucket: type: s3 event_consumers: - service_name: function bucket_events: - s3:ObjectCreated:* filters: - name: prefix value: somefolderprefix
*Filters for Bucket Suffixes are also supported.
Depending on this service¶
This service outputs the following environment variables:
|<SERVICE_NAME>_BUCKET_NAME||The name of the created bucket|
|<SERVICE_NAME>_BUCKET_URL||The HTTPS URL of the created bucket|
|<SERVICE_NAME>_REGION_ENDPOINT||The domain of the S3 region endpoint, which you can use when configuring your AWS SDK|
See Environment Variable Names for information about how the service name is included in the environment variable name.
Events produced by this service¶
The CloudWatch Events service currently produces events for the following services types:
Events consumed by this service¶
The S3 service does not consume events from other Handel services.