Resources: LambdaRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Statement: - Effect: Allow Action: sts:AssumeRole Principal: Service: lambda.amazonaws.com ManagedPolicyArns: - !Sub arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole TriggerFunction: Type: AWS::Lambda::Function Properties: Role: !GetAtt LambdaRole.Arn Runtime: nodejs14.x Handler: index.handler Code: ZipFile: | const AWS = require('aws-sdk'); var put_params = { Bucket: process.env.BUCKET, Key: "TestKey", Body: "Hello, world!" } exports.handler = async (event) => { console.log('REQUEST RECEIVED:', JSON.stringify(event)); var s3 = new AWS.S3(); await s3.putObject(put_params).promise(); }; Environment: Variables: BUCKET: !Ref Bucket Bucket: Type: AWS::S3::Bucket Connector: Type: AWS::Serverless::Connector Properties: Source: Id: TriggerFunction Destination: Id: Bucket Permissions: - Write Metadata: SamTransformTest: true