Comprehensive developer toolkit providing reusable skills for Java/Spring Boot, TypeScript/NestJS/React/Next.js, Python, PHP, AWS CloudFormation, AI/RAG, DevOps, and more.
82
82%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Risky
Do not use without reviewing
This reference guide contains detailed information about AWS CloudFormation resources, intrinsic functions, and configurations for S3 infrastructure.
Creates an Amazon S3 bucket.
| Property | Type | Required | Description |
|---|---|---|---|
| AccelerateConfiguration | AccelerateConfiguration | No | Configures bucket acceleration |
| AccessControl | String | No | A canned ACL (Private, PublicRead, etc.) |
| AnalyticsConfigurations | List | No | Analytics configurations for inventory reports |
| BucketEncryption | BucketEncryption | No | Server-side encryption configuration |
| BucketName | String | No | Name of the bucket |
| CorsConfiguration | CorsConfiguration | No | CORS rules for cross-origin requests |
| EventBridgeConfiguration | EventBridgeConfiguration | No | EventBridge configuration |
| IntelligentTieringConfiguration | IntelligentTieringConfiguration | No | S3 Intelligent-Tiering configuration |
| InventoryConfigurations | List | No | Inventory configurations |
| LifecycleConfiguration | LifecycleConfiguration | No | Lifecycle rules for object management |
| LoggingConfiguration | LoggingConfiguration | No | Server access logging configuration |
| MetricsConfiguration | MetricsConfiguration | No | CloudWatch metrics configuration |
| NotificationConfiguration | NotificationConfiguration | No | Event notification configuration |
| ObjectLockConfiguration | ObjectLockConfiguration | No | Object Lock configuration |
| ObjectLockEnabled | Boolean | No | Whether Object Lock is enabled |
| OwnershipControls | OwnershipControls | No | Bucket ownership controls |
| PublicAccessBlockConfiguration | PublicAccessBlockConfiguration | No | Block public access settings |
| ReplicationConfiguration | ReplicationConfiguration | No | Cross-region replication rules |
| Tags | List | No | Tags assigned to the bucket |
| VersioningConfiguration | VersioningConfiguration | No | Versioning status |
| WebsiteConfiguration | WebsiteConfiguration | No | Static website hosting configuration |
VersioningConfiguration:
Status: Enabled | Suspended
MFADelete: Enabled | Disabled # OptionalCorsConfiguration:
CorsRules:
- AllowedHeaders:
- "*"
AllowedMethods:
- GET
- PUT
- POST
- DELETE
- HEAD
AllowedOrigins:
- "https://example.com"
ExposedHeaders:
- ContentLength
- Date
MaxAge: 3600LifecycleConfiguration:
Rules:
- ID: string
Status: Enabled | Disabled
PrefixFilter:
Prefix: logs/
TagFilter:
- Key: Environment
Value: production
ExpirationInDays: 30
ExpirationDate: "2024-12-31T00:00:00.000Z"
Transitions:
- Days: 30
StorageClass: STANDARD_IA | GLACIER | DEEP_ARCHIVE
- Days: 90
StorageClass: GLACIER
NoncurrentVersionExpirationInDays: 7
NoncurrentVersionTransitions:
- NoncurrentDays: 30
StorageClass: STANDARD_IALoggingConfiguration:
DestinationBucketName: !Ref LogBucket
LogFilePrefix: logs/
LogFilePrefix: !Sub ${AWS::StackName}/logs/BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: AES256 | aws:kms | aws:kms:dsse
KMSMasterKeyID: !Ref KMSKeyArn
BucketKeyEnabled: truePublicAccessBlockConfiguration:
BlockPublicAcls: true
BlockPublicPolicy: true
IgnorePublicAcls: true
RestrictPublicBuckets: trueNotificationConfiguration:
LambdaConfigurations:
- Event: s3:ObjectCreated:*
Function: !GetAtt ProcessingFunction.Arn
Filter:
S3Key:
Rules:
- Name: prefix
Value: uploads/
- Event: s3:ObjectRemoved:*
Function: !GetAtt CleanupFunction.Arn
QueueConfigurations:
- Event: s3:ObjectCreated:*
Queue: !Ref EventQueue
Filter:
S3Key:
Rules:
- Name: suffix
Value: .log
TopicConfigurations:
- Event: s3:ObjectCreated:*
Topic: !Ref EventTopicReplicationConfiguration:
Role: !GetAtt ReplicationRole.Arn
Rules:
- ID: string
Status: Enabled | Disabled
Priority: 1
Filter:
Prefix: ""
And:
Prefix: ""
Tags:
- Key: Key
Value: Value
Destination:
Bucket: arn:aws:s3:::destination-bucket
Account: destination-account-id
StorageClass: STANDARD | STANDARD_IA | INTELLIGENT_TIERING
EncryptionConfiguration:
ReplicaKmsKeyID: kms-key-arn
AccessControlTranslation:
Owner: Destination
Account: account-id
Metrics:
Status: Enabled
EventThreshold:
Minutes: 15
ReplicationTime:
Status: Enabled
Time:
Minutes: 15
SourceSelectionCriteria:
SseKmsEncryptedObjects:
Status: EnabledWebsiteConfiguration:
IndexDocument: index.html
ErrorDocument: error.html
RoutingRules:
- Condition:
KeyPrefixEquals: docs/
Redirect:
ReplaceKeyWith: documents/index.html
- Condition:
HttpErrorCodeReturnedEquals: 404
Redirect:
Protocol: https
HostName: example.com
ReplaceKeyWith: 404.html| Attribute | Description |
|---|---|
| Arn | The Amazon Resource Name (ARN) of the bucket |
| DomainName | The DNS name of the bucket |
| DualStackDomainName | The DNS name of the bucket when using IPv6 |
| RegionalDomainName | The regional domain name of the bucket |
| WebsiteURL | URL of the website endpoint |
| S3CanonicalUserId | The canonical user ID for the bucket owner |
Resources:
DataBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-data-bucketResources:
DataBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-data-bucket
VersioningConfiguration:
Status: Enabled
LoggingConfiguration:
DestinationBucketName: !Ref LogBucket
LogFilePrefix: logs/
Tags:
- Key: Environment
Value: productionResources:
LifecycleBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-lifecycle-bucket
LifecycleConfiguration:
Rules:
- Id: ArchiveOldData
Status: Enabled
PrefixFilter:
Prefix: archive/
Transitions:
- Days: 30
StorageClass: GLACIER
ExpirationInDays: 365Resources:
CorsBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-cors-bucket
CorsConfiguration:
CorsRules:
- AllowedHeaders:
- Authorization
- Content-Type
AllowedMethods:
- GET
- PUT
- POST
AllowedOrigins:
- "https://example.com"
- "https://*.example.com"
MaxAge: 3600Applies a bucket policy to an Amazon S3 bucket.
| Property | Type | Required | Description |
|---|---|---|---|
| Bucket | String | Yes | Name of the bucket to apply the policy to |
| PolicyDocument | PolicyDocument | Yes | Policy to apply |
PolicyDocument:
Version: "2012-10-17" | "2008-10-17"
Id: policy-id
Statement:
- Sid: statement-id
Effect: Allow | Deny
Principal:
AWS: arn:aws:iam::account-id:user/user-name
Service: service-name.amazonaws.com
CanonicalUser: canonical-user-id
"*": # All principals
Action:
- s3:GetObject
- s3:PutObject
- s3:DeleteObject
NotAction:
- s3:*
Resource:
- arn:aws:s3:::bucket-name
- arn:aws:s3:::bucket-name/*
NotResource:
- arn:aws:s3:::bucket-name/secret/*
Condition:
ConditionOperator:
ConditionKey: condition-value| Operator | Description |
|---|---|
| StringEquals | Exact string match |
| StringNotEquals | Negated string match |
| StringLike | String with wildcards |
| StringNotLike | Negated string with wildcards |
| NumericEquals | Exact number match |
| NumericNotEquals | Negated number match |
| NumericLessThan | Less than comparison |
| NumericLessThanEquals | Less than or equal |
| NumericGreaterThan | Greater than comparison |
| NumericGreaterThanEquals | Greater than or equal |
| Bool | Boolean comparison |
| IpAddress | IP address range |
| NotIpAddress | Excluded IP address |
| ArnEquals | ARN match |
| ArnLike | ARN with wildcards |
| Key | Description |
|---|---|
| aws:sourceVpce | VPC endpoint ID |
| aws:sourceVpc | VPC ID |
| aws:PrincipalAccount | Principal's account ID |
| aws:PrincipalArn | Principal's ARN |
| aws:SecureTransport | Whether request uses HTTPS |
| s3:prefix | Object key prefix |
| s3:Delimiter | Delimiter for listing |
| s3:max-keys | Max keys in listing |
Resources:
PrivateBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-private-bucket
BucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref PrivateBucket
PolicyDocument:
Statement:
- Sid: AllowVPCEndpoint
Effect: Allow
Principal: "*"
Action: s3:GetObject
Resource: !Sub ${PrivateBucket.Arn}/*
Condition:
StringEquals:
aws:sourceVpce: !Ref VPCEndpointIdResources:
SecureBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-secure-bucket
BucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref SecureBucket
PolicyDocument:
Statement:
- Sid: DenyUnencryptedUploads
Effect: Deny
Principal: "*"
Action: s3:PutObject
Resource: !Sub ${SecureBucket.Arn}/*
Condition:
StringNotEquals:
s3:x-amz-server-side-encryption: AES256
- Sid: DenyKMSUnencryptedUploads
Effect: Deny
Principal: "*"
Action: s3:PutObject
Resource: !Sub ${SecureBucket.Arn}/*
Condition:
StringNotEquals:
s3:x-amz-server-side-encryption: aws:kms
Null:
s3:x-amz-server-side-encryption-aws-kms-key-id: falseResources:
WebsiteBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-website-bucket
WebsiteConfiguration:
IndexDocument: index.html
ErrorDocument: error.html
BucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref WebsiteBucket
PolicyDocument:
Statement:
- Sid: CloudFrontReadAccess
Effect: Allow
Principal:
CanonicalUser: !GetAtt CloudFrontOAI.S3CanonicalUserId
Action: s3:GetObject
Resource: !Sub ${WebsiteBucket.Arn}/*
CloudFrontOAI:
Type: AWS::CloudFront::CloudFrontOriginAccessIdentity
Properties:
CloudFrontOriginAccessIdentityConfig:
Comment: Website OAIResources:
SharedBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-shared-bucket
BucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref SharedBucket
PolicyDocument:
Statement:
- Sid: CrossAccountRead
Effect: Allow
Principal:
AWS:
- arn:aws:iam::123456789012:role/ReadRole
- arn:aws:iam::123456789012:user/ReadUser
Action:
- s3:GetObject
- s3:GetObjectVersion
Resource: !Sub ${SharedBucket.Arn}/*
- Sid: CrossAccountWrite
Effect: Allow
Principal:
AWS: arn:aws:iam::123456789012:role/WriteRole
Action:
- s3:PutObject
Resource: !Sub ${SharedBucket.Arn}/*Returns the bucket name.
BucketName: !Ref DataBucketReturns bucket attributes.
BucketArn: !GetAtt DataBucket.Arn
BucketDomainName: !GetAtt DataBucket.DomainName
WebsiteURL: !GetAtt DataBucket.WebsiteURL
S3CanonicalUserId: !GetAtt DataBucket.S3CanonicalUserIdSubstitutes variables in an input string with values.
BucketArn: !Sub "arn:aws:s3:::${BucketName}"Appends a set of values into a single value.
Resource: !Join
- ""
- - "arn:aws:s3:::"
- !Ref BucketName
- "/*"Imports an output value exported by another stack.
BucketArn: !ImportValue storage-stack-BucketArnplugins
developer-kit-ai
skills
chunking-strategy
prompt-engineering
developer-kit-aws
skills
aws
aws-cli-beast
aws-cost-optimization
aws-drawio-architecture-diagrams
aws-sam-bootstrap
aws-cloudformation
aws-cloudformation-auto-scaling
references
aws-cloudformation-bedrock
references
aws-cloudformation-cloudfront
references
aws-cloudformation-cloudwatch
references
aws-cloudformation-dynamodb
references
aws-cloudformation-ec2
aws-cloudformation-ecs
references
aws-cloudformation-elasticache
aws-cloudformation-iam
references
aws-cloudformation-lambda
references
aws-cloudformation-rds
aws-cloudformation-s3
references
aws-cloudformation-security
references
aws-cloudformation-task-ecs-deploy-gh
aws-cloudformation-vpc
developer-kit-core
skills
developer-kit-java
skills
aws-lambda-java-integration
aws-rds-spring-boot-integration
aws-sdk-java-v2-bedrock
aws-sdk-java-v2-core
aws-sdk-java-v2-dynamodb
aws-sdk-java-v2-kms
aws-sdk-java-v2-lambda
aws-sdk-java-v2-messaging
aws-sdk-java-v2-rds
aws-sdk-java-v2-s3
aws-sdk-java-v2-secrets-manager
graalvm-native-image
langchain4j
langchain4j-mcp-server-patterns
langchain4j-ai-services-patterns
references
langchain4j-mcp-server-patterns
references
langchain4j-rag-implementation-patterns
references
langchain4j-spring-boot-integration
langchain4j-testing-strategies
langchain4j-tool-function-calling-patterns
langchain4j-vector-stores-configuration
references
qdrant
references
spring-ai-mcp-server-patterns
references
spring-boot-actuator
spring-boot-cache
spring-boot-crud-patterns
spring-boot-dependency-injection
spring-boot-event-driven-patterns
spring-boot-openapi-documentation
spring-boot-project-creator
spring-boot-resilience4j
spring-boot-rest-api-standards
spring-boot-saga-pattern
spring-boot-security-jwt
assets
references
scripts
spring-boot-test-patterns
spring-data-jpa
references
spring-data-neo4j
references
unit-test-application-events
unit-test-bean-validation
unit-test-boundary-conditions
unit-test-caching
unit-test-config-properties
unit-test-controller-layer
unit-test-exception-handler
unit-test-json-serialization
unit-test-mapper-converter
unit-test-parameterized
unit-test-scheduled-async
unit-test-service-layer
unit-test-utility-methods
unit-test-wiremock-rest-api
developer-kit-php
skills
aws-lambda-php-integration
developer-kit-python
skills
aws-lambda-python-integration
developer-kit-tools
developer-kit-typescript
skills
aws-lambda-typescript-integration
better-auth
drizzle-orm-patterns
dynamodb-toolbox-patterns
references
nestjs
nestjs-best-practices
nestjs-code-review
nestjs-drizzle-crud-generator
scripts
nextjs-app-router
nextjs-authentication
nextjs-code-review
nextjs-data-fetching
references
nextjs-deployment
nextjs-performance
nx-monorepo
react-code-review
react-patterns
references
shadcn-ui
tailwind-css-patterns
references
tailwind-design-system
references
turborepo-monorepo
typescript-docs
typescript-security-review
zod-validation-utilities