refined-terabyte-65361
02/21/2022, 4:15 PMrough-intern-34947
02/21/2022, 4:44 PMrefined-terabyte-65361
02/21/2022, 5:54 PMpulumi version
v3.7.0
millions-furniture-75402
02/21/2022, 5:59 PMconst eventBridgeRuleCloudTrailAction = new aws.cloudwatch.EventRule(`${appName}-cloudtrail-s3-action`, {
description: "CloudTrail event filtered down to S3 on the asset-input bucket",
eventPattern: assetInputBucket.id.apply(assetInputBucketName =>
JSON.stringify({
source: ["aws.s3"],
"detail-type": ["AWS API Call via CloudTrail"],
detail: {
eventSource: ["<http://s3.amazonaws.com|s3.amazonaws.com>"],
eventName: [
"CompleteMultipartUpload",
"CopyObject",
"DeleteObject",
"DeleteObjects",
"PutObject",
"UpdateObject",
],
requestParameters: {
bucketName: [assetInputBucketName],
},
},
}),
),
});
new aws.cloudwatch.EventTarget(`${appName}-ebt-cloudtrail-action-lambda`, {
rule: eventBridgeRuleCloudTrailAction.name,
arn: lambdaFunctionEvent.arn,
inputTransformer: {
inputPaths: {
detailType: "$.detail-type",
eventName: "$.detail.eventName",
id: "$.id",
requestParameters: "$.detail.requestParameters",
source: "$.source",
},
inputTemplate: `{
"detail": {\
"eventId": <id>,\
"eventName": <eventName>,\
"eventSource": <source>,\
"messageType": "Event",\
"requestParameters": <requestParameters>,\
"version": "0"\
},
"detail-type": <detailType>,
"id": <id>,
"source": <source>
}`,
},
});
new aws.lambda.Permission(`${appName}-ebr-cloudtrail-action`, {
principal: "<http://events.amazonaws.com|events.amazonaws.com>",
action: "lambda:invokeFunction",
function: lambdaFunctionEvent.arn,
sourceArn: eventBridgeRuleCloudTrailAction.arn,
});
refined-terabyte-65361
02/21/2022, 6:09 PMrough-intern-34947
02/22/2022, 8:21 AM