Definitions for @turbot/aws-s3

accountLevelPab

{
"type": "object",
"properties": {
"BlockPublicAcls": {
"type": "boolean"
},
"IgnorePublicAcls": {
"type": "boolean"
},
"BlockPublicPolicy": {
"type": "boolean"
},
"RestrictPublicBuckets": {
"type": "boolean"
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/accountLevelPab",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucket

{
"type": "object",
"properties": {
"AccelerateConfiguration": {
"$ref": "#/definitions/bucketAccelerateConfiguration"
},
"Acl": {
"$ref": "#/definitions/bucketAcl"
},
"CreationDate": {
"$ref": "turbot#/definitions/isoTimestamp"
},
"Encryption": {
"$ref": "#/definitions/bucketEncryption"
},
"Name": {
"$ref": "#/definitions/bucketName"
},
"Policy": {
"$ref": "#/definitions/bucketPolicy"
},
"PolicyStatus": {
"$ref": "#/definitions/bucketPolicyStatus"
},
"Tags": {
"$ref": "aws#/definitions/tagList"
},
"Versioning": {
"$ref": "#/definitions/bucketVersioning"
},
"PublicAccessBlock": {
"$ref": "#/definitions/publicAccessBlock"
},
"Cors": {
"type": "array"
},
"Lifecycle": {
"$ref": "#/definitions/bucketLifecycle"
},
"Logging": {
"$ref": "#/definitions/bucketLogging"
},
"ObjectLockConfiguration": {
"$ref": "#/definitions/bucketObjectLockConfiguration"
},
"NotificationConfiguration": {
"$ref": "#/definitions/bucketNotificationConfiguration"
},
"LocationConstraint": {
"type": "string"
},
"Payer": {
"type": "string"
},
"Replication": {
"$ref": "#/definitions/bucketReplication"
},
"Website": {
"$ref": "#/definitions/bucketWebsite"
},
"turbot": {
"type": "object",
"properties": {
"akas": {
"type": "array",
"items": {
"$ref": "#/definitions/bucketAka"
}
},
"tags": {
"$ref": "aws#/definitions/tagsMap"
},
"title": {
"$ref": "#/definitions/bucketName"
},
"custom": {
"type": "object",
"properties": {
"aws": {
"$ref": "aws#/definitions/awsMetadata"
},
"createTimestamp": {
"$ref": "turbot#/definitions/isoTimestamp"
},
"hasData": {
"type": "boolean"
}
}
}
}
}
},
"additionalProperties": true,
"tests": [
{
"description": "Valid - All properties",
"input": {
"AccelerateConfiguration": {
"Status": "Enabled"
},
"CreationDate": "2018-12-05T14:53:33.000Z",
"Encryption": {
"ServerSideEncryptionConfiguration": {
"Rules": [
{
"ApplyServerSideEncryptionByDefault": {
"SSEAlgorithm": "aws:kms",
"KMSMasterKeyID": "arn:aws:kms:us-east-1:095318393923:alias/aws/s3"
}
}
]
}
},
"Name": "my-bucket",
"Acl": {
"Owner": {
"DisplayName": "aws+osborn+aaa",
"ID": "26e5574fa1"
},
"Grants": [
{
"Grantee": {
"DisplayName": "aws+osborn+aaa",
"ID": "26e5574fa16859426a6540699e6e3fe6ac1e8758991572c1ffe9a36671cb4570",
"Type": "CanonicalUser"
}
}
]
},
"Policy": {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AWSCloudTrailAclCheck20131101",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::013122550996:root"
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::s3bucket-test005"
}
]
},
"Payer": "BucketOwner",
"PublicAccessBlock": {
"BlockPublicAcls": true,
"IgnorePublicAcls": true,
"BlockPublicPolicy": true,
"RestrictPublicBuckets": true
},
"Cors": {
"CORSRules": [
{
"AllowedHeaders": [
"Authorization"
],
"AllowedMethods": [
"GET"
],
"AllowedOrigins": [
"*"
],
"MaxAgeSeconds": 3000
}
]
},
"LocationConstraint": "us-west-2",
"Replication": {
"ReplicationConfiguration": {
"Role": "arn:aws:iam::acct-id:role/example-role",
"Rules": [
{
"Destination": {
"Bucket": "arn:aws:s3:::destination-bucket"
},
"ID": "MWIwNTkwZmItMTE3MS00ZTc3LWJkZDEtNzRmODQwYzc1OTQy",
"Prefix": "Tax",
"Status": "Enabled"
}
]
}
},
"Website": {
"ErrorDocument": {
"Key": "error.html"
},
"IndexDocument": {
"Suffix": "index.html"
}
},
"Tags": [
{
"Key": "Env",
"Value": "Test"
},
{
"Key": "App",
"Value": "Facebook"
}
],
"Versioning": {
"Status": "Suspended"
},
"turbot": {
"akas": [
"arn:aws:s3:::my-bucket"
],
"tags": {
"Env": "Test",
"App": "Facebook"
},
"title": "my-bucket",
"custom": {
"aws": {
"accountId": 123456789012,
"regionName": "us-east-1"
},
"createTimestamp": "2018-12-05T14:53:33.000Z"
}
}
}
}
],
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucket",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketAccelerateConfiguration

{
"type": "object",
"additionalProperties": false,
"properties": {
"Status": {
"$ref": "#/definitions/bucketStatusName"
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketAccelerateConfiguration",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketAcl

{
"type": "object",
"additionalProperties": false,
"properties": {
"Owner": {
"type": "object"
},
"Grants": {
"type": "array"
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketAcl",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketAka

{
"type": "string",
"pattern": "^arn:aws(-us-gov|-cn)?:s3:::[a-zA-Z0-9._-]{1,255}$",
"tests": [
{
"description": "Valid - Base case",
"input": "arn:aws:s3:::My-Bucket-1"
},
{
"description": "Invalid - Malformed resource collection",
"input": "arn:aws:s3:::buckets/My-Bucket-1",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketAka",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketCors

{
"type": "object",
"additionalProperties": false,
"properties": {
"CORSRules": {
"type": "array"
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketCors",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketEncryption

{
"type": "object",
"additionalProperties": false,
"properties": {
"ServerSideEncryptionConfiguration": {
"$ref": "#/definitions/bucketServerSideEncryptionConfiguration"
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketEncryption",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketLifecycle

{
"type": "object",
"additionalProperties": false,
"properties": {
"Rules": {
"type": "array"
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketLifecycle",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketLogging

{
"type": "object",
"additionalProperties": true,
"properties": {
"TargetBucket": {
"type": "string"
},
"TargetPrefix": {
"type": "string"
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketLogging",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketName

{
"type": "string",
"pattern": "^[a-zA-Z0-9._-]{1,255}$",
"tests": [
{
"input": "12cor-a"
},
{
"input": "roja-1"
},
{
"description": "invalid - cannot start at",
"input": "@aaa",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketName",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketNotificationConfiguration

{
"type": "object",
"additionalProperties": false,
"properties": {
"TopicConfigurations": {
"type": "array"
},
"QueueConfigurations": {
"type": "array"
},
"LambdaFunctionConfigurations": {
"type": "array"
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketNotificationConfiguration",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketObjectLockConfiguration

{
"type": "object",
"additionalProperties": true,
"properties": {
"ObjectLockEnabled": {
"type": "string",
"enum": [
"Enabled"
]
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketObjectLockConfiguration",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketPolicy

{
"type": "object",
"additionalProperties": false,
"properties": {
"Id": {
"$ref": "#/definitions/bucketPolicyId"
},
"Statement": {
"$ref": "#/definitions/bucketPolicyStatements"
},
"Version": {
"$ref": "#/definitions/bucketPolicyVersion"
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketPolicy",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketPolicyId

{
"type": "string",
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketPolicyId",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketPolicyStatement

{
"type": "object",
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketPolicyStatement",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketPolicyStatements

{
"type": "array",
"items": {
"$ref": "#/definitions/bucketPolicyStatement"
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketPolicyStatements",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketPolicyStatus

{
"type": "object",
"additionalProperties": false,
"properties": {
"IsPublic": {
"type": "boolean"
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketPolicyStatus",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketPolicyVersion

{
"type": "string",
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketPolicyVersion",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketReplication

{
"type": "object",
"additionalProperties": false,
"properties": {
"ReplicationConfiguration": {
"type": "object"
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketReplication",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketServerSideEncryptionConfiguration

{
"type": "object",
"additionalProperties": false,
"properties": {
"Rules": {
"$ref": "#/definitions/bucketServerSideEncryptionConfigurationRules"
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketServerSideEncryptionConfiguration",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketServerSideEncryptionConfigurationRule

{
"type": "object",
"additionalProperties": false,
"properties": {
"ApplyServerSideEncryptionByDefault": {
"type": "object",
"required": [
"SSEAlgorithm"
],
"additionalProperties": false,
"properties": {
"SSEAlgorithm": {
"type": "string",
"enum": [
"AES256",
"aws:kms"
]
},
"KMSMasterKeyID": {
"type": "string"
}
}
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketServerSideEncryptionConfigurationRule",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketServerSideEncryptionConfigurationRules

{
"type": "array",
"items": {
"$ref": "#/definitions/bucketServerSideEncryptionConfigurationRule"
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketServerSideEncryptionConfigurationRules",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketServiceNow

{
"defaultColumns": {
"account_id": {
"column": "enabled",
"path": "metadata.aws.accountId",
"label": "Account ID"
},
"arn": {
"column": "enabled",
"path": "turbot.akas[0]",
"label": "ARN"
},
"block_public_acls": {
"column": "enabled",
"label": "Block Public ACLs",
"path": "data.PublicAccessBlock.BlockPublicAcls",
"type": "boolean"
},
"block_public_policy": {
"column": "enabled",
"path": "data.PublicAccessBlock.BlockPublicPolicy",
"label": "Block Public Policy",
"type": "boolean"
},
"creation_date": {
"column": "enabled",
"label": "Creation Date"
},
"ignore_public_acls": {
"column": "enabled",
"label": "Ignore Public ACLs",
"path": "data.PublicAccessBlock.IgnorePublicAcls",
"type": "boolean"
},
"lifecycle_rules": {
"column": "enabled",
"label": "Lifecycle Rules",
"path": "data.Lifecycle.Rules",
"type": "string",
"size": 1000
},
"logging": {
"column": "enabled",
"label": "Logging",
"type": "string",
"size": 1000
},
"bucket_name": {
"column": "enabled",
"path": "data.Name"
},
"region": {
"column": "enabled",
"path": "metadata.aws.regionName",
"label": "Region"
},
"replication": {
"column": "enabled",
"label": "Replication",
"type": "string",
"size": 1000
},
"restrict_public_buckets": {
"column": "enabled",
"label": "Restrict Public Buckets",
"path": "data.PublicAccessBlock.RestrictPublicBuckets",
"type": "boolean"
},
"server_side_encryption_configuration": {
"column": "enabled",
"label": "Server Side Encryption Configuration",
"path": "data.Encryption.ServerSideEncryptionConfiguration",
"type": "string",
"size": 1000
},
"tags": {
"column": "enabled",
"label": "Tags",
"type": "string",
"size": 1000
},
"versioning_enabled": {
"column": "enabled",
"path": "data.Versioning.Status",
"label": "Versioning Enabled"
},
"website_configuration": {
"column": "enabled",
"path": "data.Website",
"label": "Website Configuration",
"type": "string",
"size": 1000
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketServiceNow",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketStatusName

{
"type": "string",
"enum": [
"Enabled",
"Suspended"
],
"tests": [
{
"input": "Enabled"
},
{
"description": "invalid - not listed in options",
"input": "RUNNABLE",
"expected": false
},
{
"description": "invalid - null value",
"input": null,
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketStatusName",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketVersioning

{
"type": "object",
"properties": {
"Status": {
"$ref": "#/definitions/bucketStatusName"
},
"MFADelete": {
"$ref": "#/definitions/MFADelete"
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketVersioning",
"modUri": "tmod:@turbot/aws-s3"
}
}

bucketWebsite

{
"type": "object",
"additionalProperties": false,
"properties": {
"RedirectAllRequestsTo": {
"type": "object"
},
"IndexDocument": {
"type": "object"
},
"ErrorDocument": {
"type": "object"
},
"RoutingRules": {
"type": "array"
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/bucketWebsite",
"modUri": "tmod:@turbot/aws-s3"
}
}

MFADelete

{
"type": "string",
"enum": [
"Enabled",
"Disabled"
],
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/MFADelete",
"modUri": "tmod:@turbot/aws-s3"
}
}

publicAccessBlock

{
"type": "object",
"properties": {
"BlockPublicAcls": {
"type": "boolean"
},
"IgnorePublicAcls": {
"type": "boolean"
},
"BlockPublicPolicy": {
"type": "boolean"
},
"RestrictPublicBuckets": {
"type": "boolean"
}
},
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/publicAccessBlock",
"modUri": "tmod:@turbot/aws-s3"
}
}

s3

{
"allOf": [
{
"$ref": "turbot#/definitions/service"
},
{
"type": "object",
"properties": {
"name": {
"const": "S3"
},
"turbot": {
"type": "object",
"properties": {
"akas": {
"type": "array",
"items": {
"$ref": "#/definitions/s3Aka"
}
},
"title": {
"const": "S3"
},
"custom": {
"type": "object",
"properties": {
"aws": {
"$ref": "aws#/definitions/awsMetadata"
}
}
}
}
}
},
"required": [
"name",
"turbot"
],
"additionalProperties": true,
"tests": [
{
"description": "S3",
"input": {
"name": "S3",
"turbot": {
"akas": [
"arn:aws:s3::123456789012"
],
"title": "DataSync",
"custom": {
"aws": {
"accountId": 123456789012
}
}
}
}
},
{
"description": "invalid - service provider name prefixed",
"input": {
"name": "AWS S3",
"turbot": {
"akas": [
"arn:aws:s3::123456789012"
],
"title": "DataSync",
"custom": {
"aws": {
"accountId": 123456789012
}
}
}
},
"expected": false
}
]
}
],
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/s3",
"modUri": "tmod:@turbot/aws-s3"
}
}

s3Account

{
"type": "object",
"properties": {
"PublicAccessBlockConfiguration": {
"$ref": "#/definitions/accountLevelPab"
},
"turbot": {
"type": "object",
"properties": {
"akas": {
"type": "array",
"items": {
"$ref": "#/definitions/s3AccountAka"
}
},
"title": {
"const": "Account"
},
"custom": {
"type": "object",
"properties": {
"aws": {
"$ref": "aws#/definitions/awsMetadata"
},
"createTimestamp": {
"$ref": "turbot#/definitions/isoTimestamp"
}
}
}
}
}
},
"additionalProperties": true,
"tests": [
{
"description": "Valid - All properties",
"input": {
"PublicAccessBlockConfiguration": {
"BlockPublicAcls": true,
"IgnorePublicAcls": true,
"BlockPublicPolicy": true,
"RestrictPublicBuckets": true
},
"turbot": {
"akas": [
"arn:aws:s3::123456789012:account"
],
"tags": {
"Env": "Test",
"App": "Facebook"
},
"title": "Account",
"custom": {
"aws": {
"accountId": 123456789012
},
"createTimestamp": "2018-12-05T14:53:33.000Z"
}
}
}
}
],
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/s3Account",
"modUri": "tmod:@turbot/aws-s3"
}
}

s3AccountAka

{
"type": "string",
"pattern": "^arn:aws(-us-gov|-cn)?:s3::\\d{12}:account$",
"tests": [
{
"description": "Valid - Base case",
"input": "arn:aws:s3::111666065714:account"
},
{
"description": "Invalid - account Id",
"input": "arn:aws:s3::1116660:account",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/s3AccountAka",
"modUri": "tmod:@turbot/aws-s3"
}
}

s3Aka

{
"type": "string",
"pattern": "^arn:aws(-us-gov|-cn)?:s3::[0-9]{12}$",
"tests": [
{
"description": "base",
"input": "arn:aws:s3::123123123123"
},
{
"description": "Invalid - service name not valid",
"input": "arn:aws:datasync111::123123123123",
"expected": false
},
{
"description": "Invalid - account id is not valid",
"input": "arn:aws:s3::123382743123123123",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/aws-s3#/definitions/s3Aka",
"modUri": "tmod:@turbot/aws-s3"
}
}