54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
|
import pulumi
|
||
|
import pulumi_aws as aws
|
||
|
|
||
|
# [Step 1: Create an S3 bucket.]
|
||
|
bucket = aws.s3.Bucket('my-bucket')
|
||
|
|
||
|
# [Step 2: Create a Lambda function.]
|
||
|
lambda_role = aws.iam.Role("s3-writer-role",
|
||
|
assume_role_policy="""{
|
||
|
"Version": "2012-10-17",
|
||
|
"Statement": [
|
||
|
{
|
||
|
"Action": "sts:AssumeRole",
|
||
|
"Principal": {
|
||
|
"Service": "lambda.amazonaws.com"
|
||
|
},
|
||
|
"Effect": "Allow",
|
||
|
"Sid": ""
|
||
|
}
|
||
|
]
|
||
|
}""",
|
||
|
managed_policy_arns=[
|
||
|
"arn:aws:iam::aws:policy/AmazonS3FullAccess",
|
||
|
"arn:aws:iam::aws:policy/CloudWatchLogsFullAccess"
|
||
|
|
||
|
]
|
||
|
)
|
||
|
|
||
|
lambda_function = aws.lambda_.Function(
|
||
|
resource_name='s3-writer-lambda-function',
|
||
|
role=lambda_role.arn,
|
||
|
runtime="python3.10",
|
||
|
handler="lambda_function.lambda_handler",
|
||
|
code=pulumi.AssetArchive({
|
||
|
'.': pulumi.FileArchive('./s3_writer')
|
||
|
}),
|
||
|
timeout=15,
|
||
|
memory_size=128,
|
||
|
environment= {
|
||
|
"variables": {
|
||
|
"BUCKET_NAME": bucket.id
|
||
|
}
|
||
|
}
|
||
|
)
|
||
|
|
||
|
# Gives the EventBridge service permissions to invoke the Lambda function
|
||
|
lambda_event = aws.lambda_.Permission("lambda_trigger_event",
|
||
|
action="lambda:InvokeFunction",
|
||
|
principal="events.amazonaws.com",
|
||
|
function=lambda_function.arn
|
||
|
)
|
||
|
|
||
|
# [Step 3: Create an export.]
|
||
|
# TO-DO
|