Storage Skills
Chapter 111 of 118
Create and secure S3 buckets following AWS best practices for access control, encryption, monitoring, and remediation of misconfigurations.
3 minutes · 739 words · 12 sections
Implements layered S3 security controls across five workflows: securing new buckets, auditing existing configurations, remediating findings, configuring encryption, and enabling monitoring. Follows AWS Well-Architected security best practices.
Execute commands using the AWS MCP server when connected (sandboxed execution, audit logging, observability). Fall back to AWS CLI or shell otherwise.
Check for required tools before starting.
Constraints:
aws sts get-caller-identitySee references/iam-permissions.md (opens in a new tab) for IAM permissions by workflow.
| User intent | Workflow |
|---|---|
| Secure a new bucket | A: Secure New Bucket |
| Audit / review existing bucket | B: Audit Existing Bucket |
| Fix a specific finding | C: Remediate Issue |
| Configure encryption | D: Configure Encryption |
| Enable logging / monitoring | E: Enable Monitoring |
Constraints:
aws iam simulate-principal-policy to validate permissions before write operationsThese rules apply to ALL workflows that call put-bucket-policy:
aws s3api get-bucket-policy) — put-bucket-policy replaces the entire policyaws s3api get-bucket-policy --bucket <name> --output text > backup-policy-$(date +%s).jsonNoSuchBucketPolicy is returned, proceed with a new policy — no backup is neededecho '<policy>' | python3 -m json.tool)put-bucket-policy command and wait for confirmationSee references/workflows.md (opens in a new tab) for full CLI steps.
Required steps (execute in order, do not skip):
--bucket-namespace account-regionalDenyInsecureTransport bucket policyConstraints:
You MUST pass --bucket-namespace account-regional on create-bucket call — this is REQUIRED, not optional. Example:
aws s3api create-bucket --bucket <name> --bucket-namespace account-regional --region <region>You MUST NOT change Block Public Access — S3 enables it by default on new buckets
You MUST NOT change ACL ownership controls — S3 disables ACLs (BucketOwnerEnforced) by default
You MUST apply a bucket policy with a DenyInsecureTransport statement that denies s3:* when aws:SecureTransport is false — this is REQUIRED, not optional. Example:
aws s3api put-bucket-policy --bucket <name> --policy '{"Version":"2012-10-17","Statement":[{"Sid":"DenyInsecureTransport","Effect":"Deny","Principal":"*","Action":"s3:*","Resource":["arn:aws:s3:::<name>/*","arn:aws:s3:::<name>"],"Condition":{"Bool":{"aws:SecureTransport":"false"}}}]}'You MUST ask the user which logging option they want before step 4
You MUST follow the put-bucket-policy safety rules for steps 4 and 5
You SHOULD confirm each step succeeded before proceeding
See references/audit-checklist.md (opens in a new tab) for the full checklist.
Constraints:
See references/remediation.md (opens in a new tab) for fix commands by issue type.
Constraints:
See references/encryption.md (opens in a new tab) for encryption options and commands.
Constraints:
aws/s3 keyBucketKeyEnabled: true and BlockedEncryptionTypes: [SSE-C] in all configurationsaws/s3 and aliases without error — agent-enforced constraints. Verify with get-bucket-encryption after applying.See references/workflows.md (opens in a new tab) for full CLI steps.
Constraints:
ObjectLockConfigurationNotFoundError — Object Lock is not enabled. Treat as NOT CONFIGURED, not a failure.
AccessDenied on audit commands — Check IAM policy, bucket policy, Block Public Access, VPC endpoint policy, and SCPs/RCPs. Use aws iam simulate-principal-policy to diagnose.
put-bucket-policy silently removes existing statements — See put-bucket-policy safety rules.
GuardDuty BadRequestException: detector already exists — Run aws guardduty list-detectors first; only call create-detector if empty.
CloudTrail changes not taking effect — Verify you are using --region <trail-home-region>, not the bucket’s region. Find it with aws cloudtrail describe-trails --query 'trailList[*].[Name,HomeRegion]'.
Install this repository
npx skills add aws/agent-toolkit-for-aws/plugin marketplace add aws/agent-toolkit-for-awsSkills install per repository, not per chapter — the CLI has no documented per-skill form, so we do not print one.
Create and secure S3 buckets following AWS best practices for access control, encryption, monitoring, and remediation of misconfigurations. Use when the user wants to secure a new bucket, audit an existing bucket, fix a security finding, configure encryption, or enable logging and monitoring. Do NOT use for general S3 data operations, S3 Tables setup, or discovering existing data assets.
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
main, last pushed 10 August 2026.SKILL.md, not by matching a directory convention. 16 distinct layouts observed: plugins/aws-agents-for-devsecops/skills/*/SKILL.md, plugins/aws-agents/skills/*/SKILL.md, plugins/aws-core/skills/*/SKILL.md, skills/core-skills/*/SKILL.md, skills/specialized-skills/analytics-skills/*/SKILL.md, skills/specialized-skills/database-skills/*/SKILL.md, skills/specialized-skills/ec2-skills/*/SKILL.md, skills/specialized-skills/migration-and-modernization-skills/*/SKILL.md, skills/specialized-skills/networking-and-content-delivery-skills/*/SKILL.md, skills/specialized-skills/operations-skills/*/SKILL.md, skills/specialized-skills/resilience-skills/*/SKILL.md, skills/specialized-skills/security-and-identity-skills/*/SKILL.md, skills/specialized-skills/serverless-skills/*/SKILL.md, skills/specialized-skills/storage-skills/*/SKILL.md, skills/specialized-skills/system-table-skills/*/SKILL.md, skills/specialized-skills/web-and-mobile-development/*/SKILL.md..claude-plugin/marketplace.json by Amazon Web Services, declaring 4 plugins. It is read for editorial metadata only — never as the skill index, which is always the repository tree./aws/agent-toolkit-for-aws.md, and each chapter at its own .md URL.5 files · 21 KB
Everything this skill ships beside its prose. All of it is set here, as subchapters of chapter 111.
Documentation the agent loads on demand, rather than up front.