\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{sevco-cymru} \pdfinfo{ /Title (aws-s3-dva-co2.pdf) /Creator (Cheatography) /Author (sevco-cymru) /Subject (aws-s3-dva-co2 Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{21007D} \definecolor{LightBackground}{HTML}{F8F7FA} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{aws-s3-dva-co2 Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{sevco-cymru} via \textcolor{DarkBackground}{\uline{cheatography.com/173390/cs/45654/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}sevco-cymru \\ \uline{cheatography.com/sevco-cymru} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 12th February, 2025.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Description}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Infinitely scaling storage service.% Row Count 1 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Usage}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Backup and Storage} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Disaster Recovery} \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Archiving} \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Hosting} \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Data Lake and Analytics} \tn % Row Count 5 (+ 1) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Static Websites} \tn % Row Count 6 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.74195 cm} x{3.23505 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Encryption (at rest)}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{Server Side Encryption (SSE-)} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} SSE-S3 & Only AWS has access to the keys \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} & AES-256 standard \tn % Row Count 4 (+ 1) % Row 3 \SetRowColor{white} & Header: \seqsplit{x-amz-server-side-encryption:AES256} \tn % Row Count 6 (+ 2) % Row 4 \SetRowColor{LightBackground} & Enabled by default \tn % Row Count 7 (+ 1) % Row 5 \SetRowColor{white} SSE-KMS & User managed keys \tn % Row Count 8 (+ 1) % Row 6 \SetRowColor{LightBackground} & Gives key control to user + Cloudtrail auditing \tn % Row Count 10 (+ 2) % Row 7 \SetRowColor{white} & Header: \seqsplit{x-amz-server-side-encryption:aws-kms} \tn % Row Count 12 (+ 2) % Row 8 \SetRowColor{LightBackground} & Can be limited by KMS Limits (quota can be increased) \tn % Row Count 15 (+ 3) % Row 9 \SetRowColor{white} & APIs - generatedatakey\{\{nl\}\}DecryptKMS \tn % Row Count 17 (+ 2) % Row 10 \SetRowColor{LightBackground} SSE-C & Custom key. Still Server Side \tn % Row Count 19 (+ 2) % Row 11 \SetRowColor{white} & AWS does not keep the key after creation \tn % Row Count 21 (+ 2) % Row 12 \SetRowColor{LightBackground} & Key is passed in header {\bf{https only}} \tn % Row Count 23 (+ 2) % Row 13 \SetRowColor{white} Client Side Encryption & Uses the S3 client side encryption library \tn % Row Count 25 (+ 2) % Row 14 \SetRowColor{LightBackground} & Client fully manages the encryption cycle \tn % Row Count 27 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Versioning}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Versioning set at bucket level} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{If a key is overwritten a new key is created \{\{nobreak\}\}} \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{If versioning is suspended previous versions are {\bf{not}} deleted} \tn % Row Count 5 (+ 2) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Prior to versioning the v-id is `null`} \tn % Row Count 6 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{p{0.4977 cm} p{0.4977 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Replication Steps}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{S3 management tab -\textgreater{} Replication Rules} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.4885 cm} x{2.4885 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Replication}} \tn % Row 0 \SetRowColor{LightBackground} Cross Region Replication & Compliance, lower latency access, x-acc replication \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} Same Region Replication & Prod -\textgreater{}Test replication, log aggregation \tn % Row Count 5 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{Replication can be set for all or some objects} \tn % Row Count 6 (+ 1) % Row 3 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{Versioning must be enabled for replication} \tn % Row Count 7 (+ 1) % Row 4 \SetRowColor{LightBackground} After versioning only new objects have v-ids & Use 1x batch replication to replicate existing objects first time \tn % Row Count 11 (+ 4) % Row 5 \SetRowColor{white} Deletes & objects with version id are {\bf{not}} replicated \{\{nl\}\} avoids malicious deletes \tn % Row Count 15 (+ 4) % Row 6 \SetRowColor{LightBackground} & Delete Marker replication must be enabled \tn % Row Count 18 (+ 3) % Row 7 \SetRowColor{white} Replication cannot be chained & e.g. B1-\textgreater{}B2-\textgreater{}B3 \{\{nl\}\}needs to be set up as:\{\{nl\}\}B1-\textgreater{}B2 \& B1-\textgreater{}B3 \{\{nl\}\}{\bf{cannot do}}\{\{nl\}\}B1-\textgreater{} B2 / B3 \tn % Row Count 24 (+ 6) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.23965 cm} x{2.73735 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Pre-Signed URLs}} \tn % Row 0 \SetRowColor{LightBackground} Generate using S3console & TTL 1m - 720m \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} Generate using AWS Cli & TTL default 3600s max 604800s \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{Users with the url inherit the generating user's permissions} \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{Use to give one off access to someone else e.g. temp access to a file} \tn % Row Count 8 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.68758 cm} x{2.28942 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Naming}} \tn % Row 0 \SetRowColor{LightBackground} Name must be {\bf{globally}} unique & All lower case \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} Between 3 and 63 characters & Must {\bf{not}} be an ip address \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} {\bf{Must}} start with a letter or number & {\bf{No}} underscores (\_) \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} Prefix restriction: {\bf{xn-{}-}} & Suffix restriction: {\bf{-s3alias}} \tn % Row Count 8 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.44333 cm} x{3.53367 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Security}} \tn % Row 0 \SetRowColor{LightBackground} User based - & IAM policies \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} Resource Based - & S3 bucket level policies (most common) \{\{nl\}\} Object ACL - fine grained. Can disable \{\{nl\}\} Bucket ACL - can disable \tn % Row Count 7 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{If a bucket should never be public leave {\bf{All Public Access}} as blocked \newline This can be set at the account level} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.23965 cm} x{2.73735 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Bucket Policy}} \tn % Row 0 \SetRowColor{LightBackground} {\emph{Resource Block}}\{\{nobreak\}\}: & Bucket / object \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} {\emph{Effect}}: & {\bf{Allow}} / {\bf{Deny}} \tn % Row Count 3 (+ 1) % Row 2 \SetRowColor{LightBackground} {\emph{Action}}: & API actions affected by Effect \tn % Row Count 5 (+ 2) % Row 3 \SetRowColor{white} {\emph{Principle}}: & Account or user to apply policy to \tn % Row Count 7 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{{\emph{Use bucket policies to ...}} \newline Grant public access to a bucket \newline Force encryption @ upload \newline Grant access to another account} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Lifecycle Rules w/ S3 Analytics}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Transition action allows transition to different classes} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Expiration action (deletes)} \tn % Row Count 3 (+ 1) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Can specify rules for a {\bf{prefix}} or {\bf{tag}}} \tn % Row Count 4 (+ 1) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{S3 analytics allow to decide best strategy (works on Standard or Standard IA)} \tn % Row Count 6 (+ 2) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Analytics report is updated daily} \tn % Row Count 7 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.4931 cm} x{3.4839 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{S3 Event Notifications}} \tn % Row 0 \SetRowColor{LightBackground} Triggers: & ObjectCreated\{\{nl\}\}ObjectRemoved\{\{nl\}\}ObjectRestore\{\{nl\}\}ObjectReplication\{\{nl\}\} \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{Possible to filter on prefix or suffix} \tn % Row Count 4 (+ 1) % Row 2 \SetRowColor{LightBackground} Available Events: & SNS\{\{nl\}\}SQS\{\{nl\}\}Lambda \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} Permissions - & SNS Resource Access policy\{\{nl\}\}SQS Resource Access policy\{\{nl\}\}Lambda Resource Access policy\{\{nl\}\} \tn % Row Count 10 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{S3 EventBridge}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Add rules to the bridge} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Allows access to 18+ services} \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Advanced filtering} \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Multiple Destinations for notification} \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Levarage EventBridge capabilities} \tn % Row Count 5 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.4885 cm} x{2.4885 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Encryption (in flight)}} \tn % Row 0 \SetRowColor{LightBackground} SSL / TLS & Use https endpoint to force encryption \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{Force In-Transit Encyption using bucket policy} \tn % Row Count 3 (+ 1) % Row 2 \SetRowColor{LightBackground} Add policy to refuse API calls without encryption headers & `effect: DENY\{\{nl\}\}condition:\{\{nl\}\}bool:\{\{nl\}\}"aws:SecureTransport":"false"` \tn % Row Count 7 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{n.b. Bucket policies are evaluated before defaults} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.14011 cm} x{2.83689 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{MFA Deletes}} \tn % Row 0 \SetRowColor{LightBackground} Adds security around: & Permanently delete an object \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} & Suspend versioning \tn % Row Count 3 (+ 1) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{Only bucket owner (root) can enable} \tn % Row Count 4 (+ 1) % Row 3 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{Enabled using CLI\{\{nl\}\}`\textgreater{} aws s3api put-bucket-versioning \textless{}...\textgreater{}`} \tn % Row Count 6 (+ 2) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{Delete is via cli} \tn % Row Count 7 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Keys (Identifying objects)}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{An S3 object is identified by its key:} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{s3://{\emph{\textless{}unique bucket name\textgreater{}}}/{\emph{{[}\textless{}prefixes\textgreater{}{]}}}/{\emph{object-name}}} \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Everything in S3 is a key/object.} \tn % Row Count 4 (+ 1) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{There is no concept of directories - these are prefixes} \tn % Row Count 6 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.4885 cm} x{2.4885 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Storage Classes}} \tn % Row 0 \SetRowColor{LightBackground} Standard (STANDARD) & Default storage class. Can use with Intelligent Tiering to move to STANDARD\_IA using S3 analytics \tn % Row Count 5 (+ 5) % Row 1 \SetRowColor{white} S3 Standard-IA (STANDARD\_IA) & Long-lived, infrequently accessed data (once a month) with millisecond access \tn % Row Count 9 (+ 4) % Row 2 \SetRowColor{LightBackground} S3 One Zone-IA (ONEZONE\_IA) & Lost if AZ is destroyed\{\{nl\}\}Recreatable, infrequently accessed data (once a month) with millisecond access \tn % Row Count 15 (+ 6) % Row 3 \SetRowColor{white} S3 Express One Zone (EXPRESS\_ONEZONE) & Single-digit millisecond data access for latency-sensitive applications within a single AWS Availability Zone \tn % Row Count 21 (+ 6) % Row 4 \SetRowColor{LightBackground} S3 Glacier Instant Retrieval (GLACIER\_IR) & Long-lived, archive data accessed once a quarter with millisecond access \tn % Row Count 25 (+ 4) % Row 5 \SetRowColor{white} S3 Glacier Flexible Retrieval (GLACIER) & Long-lived archive data accessed once a year with retrieval times of minutes to hours \tn % Row Count 30 (+ 5) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{5.377cm}{x{2.4885 cm} x{2.4885 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Storage Classes (cont)}} \tn % Row 6 \SetRowColor{LightBackground} S3 Glacier Deep Archive (DEEP\_ARCHIVE) & Long-lived archive data accessed less than once a year with retrieval times of hours\{\{nl\}\}Standard (12h) Bulk (48h) \tn % Row Count 6 (+ 6) % Row 7 \SetRowColor{white} Intelligent Tiering & Data with unknown, changing, or unpredictable access patterns \tn % Row Count 10 (+ 4) % Row 8 \SetRowColor{LightBackground} Reduced Redundancy Storage \seqsplit{(REDUCED\_REDUNDANCY)} Not recommended & Noncritical, frequently accessed data with millisecond access \tn % Row Count 14 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{Lifecycle Rules used to move objects between classes} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.41887 cm} x{1.14425 cm} x{2.01388 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{5.377cm}}{\bf\textcolor{white}{Storage Class Config Options}} \tn % Row 0 \SetRowColor{LightBackground} STANDARD & \{\{ac\}\}- & \{\{ac\}\}- \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} S3 Standard-IA \seqsplit{(STANDARD\_IA)} & \{\{ac\}\}- & Per object \textgreater{}=128kb (monitoring + auto-tiering)) \tn % Row Count 4 (+ 3) % Row 2 \SetRowColor{LightBackground} ONEZONE\_IA & 30 days+ (min. storage) & Per-GB fees (retrieval) \tn % Row Count 7 (+ 3) % Row 3 \SetRowColor{white} GLACIER\_IR & 90 days+ & Per-GB fees (retrieval) \tn % Row Count 9 (+ 2) % Row 4 \SetRowColor{LightBackground} GLACIER (Flexible) & 90 days+ & Per-GB fees (retrieval) \tn % Row Count 11 (+ 2) % Row 5 \SetRowColor{white} \seqsplit{DEEP\_ARCHIVE} & 180 days+ & Per-GB fees (retrieval) \tn % Row Count 13 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}---} \SetRowColor{LightBackground} \mymulticolumn{3}{x{5.377cm}}{Minimum billable object size for Standard IA / One Zone IA / Glacier IR} \tn \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{S3 Access Logs}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Log actions into a {\bf{different}} bucket} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Never}} set \seqsplit{monitored-bucket=log-bucket} (creates loop + \$\$\$)} \tn % Row Count 3 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{s3 Cross Origin Resource Sharing}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{If x-origin requests are required need correct CORS headers} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Can allow for specific files or *} \tn % Row Count 3 (+ 1) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Setting written in json} \tn % Row Count 4 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{p{0.4977 cm} p{0.4977 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{S3 Access Points}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{Placeholder} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}