use crate::resources::{Param, PreferredParam, ResourceDefinition, SecurityParam};
use crate::types::ResolvedType;
pub fn s3_create_bucket() -> ResourceDefinition {
ResourceDefinition {
module: "S3",
function: "createBucket",
required_params: vec![Param::string("name")],
optional_params: vec![
Param::string("sseAlgorithm"),
Param::string("kmsKeyId"),
Param::string("logPrefix"),
Param::tags("tags"),
Param::new("logBucket", ResolvedType::Bucket),
],
preferred_params: vec![
PreferredParam::bool("versioning", true), PreferredParam::bool("logging", true), ],
security_params: vec![
SecurityParam::new("encryption", true, false), SecurityParam::new("publicAccess", false, true), ],
returns: ResolvedType::Bucket,
}
}
#[allow(dead_code)]
mod security_rules {
pub const S3_001: &str = "S3 buckets must be encrypted at rest";
pub const S3_002: &str = "Versioning protects against accidental deletion";
pub const S3_003: &str = "Public buckets expose data to the internet";
pub const S3_004: &str = "Access logging aids in security auditing";
}