i am receiving bucket name and key as an empty string which causes script to fail. I am trying to retrieve filename which caused the trigger by in eventbridge from S3 but unable to get it.
aws events put-targets --rule s3-to-rds --targets '{
"Id": "",
"Arn": "ecs cluster ARN",
"RoleArn": "eventbridge role ARN with permissions",
"EcsParameters": {
"TaskDefinitionArn": "task ARN",
"TaskCount": 1,
"LaunchType": "FARGATE",
"NetworkConfiguration": {
"awsvpcConfiguration": {
"Subnets": [
""
],
"AssignPublicIp": "DISABLED"
}
},
"Group": "default"
},
"InputTransformer": {
"InputPathsMap": {
"s3-bucket": "$.detail.requestParameters.bucketName",
"s3-key": "$.detail.requestParameters.key"
},
"InputTemplate": "{
\"containerOverrides\": [
{
\"name\": \"containername\",
\"environment\": [
{
\"name\": \"S3_BUCKET_NAME\",
\"value\": \"<s3-bucket>\"
},
{
\"name\": \"S3_OBJECT_KEY\",
\"value\": \"<s3-key>\"
}
]
}
]
}"
}
}'
part of python code to retrieve env variables
S3_BUCKET_NAME = os.environ.get('S3_BUCKET_NAME')
logging.info(f"S3_BUCKET_NAME: {S3_BUCKET_NAME}")
S3_OBJECT_KEY = os.environ.get('S3_OBJECT_KEY')
logging.info(f"S3_BUCKET_NAME: {S3_OBJECT_KEY}")
s3 = boto3.client('s3')
response = s3.get_object(Bucket=S3_BUCKET_NAME, Key=S3_OBJECT_KEY)
this is the sample i've used for retrieving enviroment variables and dynamic retrieval.
this is the output in cloudtrail log:
August 30, 2023 at 17:03 (UTC+2:00) response = handler(**kwargs) tess
August 30, 2023 at 17:03 (UTC+2:00) ^^^^^^^^^^^^^^^^^ tess
August 30, 2023 at 17:03 (UTC+2:00) File "/usr/local/lib/python3.11/site-packages/botocore/handlers.py", line 284, in validate_bucket_name tess
August 30, 2023 at 17:03 (UTC+2:00) raise ParamValidationError(report=error_msg) tess
August 30, 2023 at 17:03 (UTC+2:00) botocore.exceptions.ParamValidationError: Parameter validation failed: tess
August 30, 2023 at 17:03 (UTC+2:00) Invalid bucket name "<$s3-bucket>": Bucket name must match the regex "^[a-zA-Z0-9.\-_]{1,255}$" or be an ARN matching the regex "^arn:(aws).*:(s3|s3-object-lambda):[a-z\-0-9]*:[0-9]{12}:accesspoint[/:][a-zA-Z0-9\-.]{1,63}$|^arn:(aws).*:s3-outposts:[a-z\-0-9]+:[0-9]{12}:outpost[/:][a-zA-Z0-9\-]{1,63}[/:]accesspoint[/:][a-zA-Z0-9\-]{1,63}$" tess
August 30, 2023 at 17:03 (UTC+2:00) api_params = self._emit_api_params( tess
August 30, 2023 at 17:03 (UTC+2:00) ^^^^^^^^^^^^^^^^^^^^^^ tess
August 30, 2023 at 17:03 (UTC+2:00) File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 1043, in _emit_api_params tess
August 30, 2023 at 17:03 (UTC+2:00) self.meta.events.emit( tess
August 30, 2023 at 17:03 (UTC+2:00) File "/usr/local/lib/python3.11/site-packages/botocore/hooks.py", line 412, in emit tess
August 30, 2023 at 17:03 (UTC+2:00) return self._emitter.emit(aliased_event_name, **kwargs) tess
August 30, 2023 at 17:03 (UTC+2:00) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tess
August 30, 2023 at 17:03 (UTC+2:00) File "/usr/local/lib/python3.11/site-packages/botocore/hooks.py", line 256, in emit tess
August 30, 2023 at 17:03 (UTC+2:00) return self._emit(event_name, kwargs) tess
August 30, 2023 at 17:03 (UTC+2:00) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tess
August 30, 2023 at 17:03 (UTC+2:00) File "/usr/local/lib/python3.11/site-packages/botocore/hooks.py", line 239, in _emit tess
August 30, 2023 at 17:03 (UTC+2:00) Traceback (most recent call last): tess
August 30, 2023 at 17:03 (UTC+2:00) File "/app/main.py", line 97, in <module> tess
August 30, 2023 at 17:03 (UTC+2:00) response = s3.get_object(Bucket=S3_BUCKET_NAME, Key=S3_OBJECT_KEY) tess
August 30, 2023 at 17:03 (UTC+2:00) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tess
August 30, 2023 at 17:03 (UTC+2:00) File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 535, in _api_call tess
August 30, 2023 at 17:03 (UTC+2:00) return self._make_api_call(operation_name, kwargs) tess
August 30, 2023 at 17:03 (UTC+2:00) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ tess
August 30, 2023 at 17:03 (UTC+2:00) File "/usr/local/lib/python3.11/site-packages/botocore/client.py", line 928, in _make_api_call tess
August 30, 2023 at 17:03 (UTC+2:00) 2023-08-30 15:03:52,840 - INFO - S3_BUCKET_NAME: tess
August 30, 2023 at 17:03 (UTC+2:00) 2023-08-30 15:03:52,840 - INFO - S3_BUCKET_NAME: tess
Fixed it by replacing values of these keys "s3-bucket": "$.detail.requestParameters.bucketName", "s3-key": "$.detail.requestParameters.key" to "s3-bucket": "$.detail.bucket.name", "s3-key": "$.detail.object.key"