The following resources are composed to implement the referenced Composite Resource Definition (XRD).
Bucket
BucketPublicAccessBlock
BucketServerSideEncryptionConfiguration
BucketVersioning
kind: Composition
apiVersion: apiextensions.crossplane.io/v1
metadata:
name: xbucket.example.upbound.io
creationTimestamp: null
labels:
crossplane.io/provider: aws
spec:
compositeTypeRef:
apiVersion: example.upbound.io/v1alpha1
kind: XBucket
patchSets:
- name: providerConfigRef
patches:
- type: FromCompositeFieldPath
fromFieldPath: spec.parameters.providerConfigName
toFieldPath: spec.providerConfigRef.name
- name: region
patches:
- type: FromCompositeFieldPath
fromFieldPath: spec.parameters.region
toFieldPath: spec.forProvider.region
- name: deletionPolicy
patches:
- type: FromCompositeFieldPath
fromFieldPath: spec.parameters.deletionPolicy
toFieldPath: spec.deletionPolicy
- name: userTags
patches:
- type: FromCompositeFieldPath
fromFieldPath: spec.parameters.tags
toFieldPath: spec.forProvider.tags
policy:
mergeOptions:
keepMapValues: false
appendSlice: true
resources:
- name: s3-bucket
base:
apiVersion: s3.aws.upbound.io/v1beta1
kind: Bucket
spec:
forProvider:
acl: private
publicAccessBlockConfiguration:
blockPublicAcls: true
blockPublicPolicy: true
ignorePublicAcls: true
restrictPublicBuckets: true
serverSideEncryptionConfiguration:
rules:
- applyServerSideEncryptionByDefault:
sseAlgorithm: AES256
patches:
- type: PatchSet
patchSetName: providerConfigRef
- type: PatchSet
patchSetName: region
- type: PatchSet
patchSetName: deletionPolicy
- type: PatchSet
patchSetName: userTags
- fromFieldPath: spec.writeConnectionSecretToRef.namespace
toFieldPath: spec.writeConnectionSecretToRef.namespace
- fromFieldPath: spec.parameters.bucketName
toFieldPath: metadata.name
- type: ToCompositeFieldPath
fromFieldPath: metadata.annotations[crossplane.io/external-name]
toFieldPath: status.bucketName
- type: ToCompositeFieldPath
fromFieldPath: status.atProvider.arn
toFieldPath: status.bucketArn
- type: ToCompositeFieldPath
fromFieldPath: status.atProvider.bucketDomainName
toFieldPath: status.bucketDomainName
- fromFieldPath: metadata.labels[crossplane.io/composite]
toFieldPath: spec.writeConnectionSecretToRef.name
transforms:
- type: string
string:
fmt: "%s-bucket"
- name: s3-blockpublicaccess
base:
apiVersion: s3.aws.upbound.io/v1beta1
kind: BucketPublicAccessBlock
spec:
forProvider:
blockPublicPolicy: true
bucketSelector:
matchControllerRef: true
ignorePublicAcls: true
lockPublicAcls: true
restrictPublicBuckets: true
patches:
- type: PatchSet
patchSetName: providerConfigRef
- type: PatchSet
patchSetName: region
- type: PatchSet
patchSetName: deletionPolicy
- type: PatchSet
patchSetName: userTags
- name: s3-serversideencryption
base:
apiVersion: s3.aws.upbound.io/v1beta1
kind: BucketServerSideEncryptionConfiguration
spec:
forProvider:
bucketSelector:
matchControllerRef: true
rule:
- applyServerSideEncryptionByDefault:
- sseAlgorithm: AES256
patches:
- type: PatchSet
patchSetName: providerConfigRef
- type: PatchSet
patchSetName: region
- type: PatchSet
patchSetName: deletionPolicy
- type: PatchSet
patchSetName: userTags
- name: s3-bucketVersioning
base:
apiVersion: s3.aws.upbound.io/v1beta1
kind: BucketVersioning
spec:
forProvider:
bucketSelector:
matchControllerRef: true
versioningConfiguration:
- status: Enabled
patches:
- type: PatchSet
patchSetName: providerConfigRef
- type: PatchSet
patchSetName: region
- type: PatchSet
patchSetName: deletionPolicy
writeConnectionSecretsToNamespace: upbound-system