Amazon web services 使用AWS CDK时Lambda函数无法实例化
我试图使用AWS CDK部署一个Lambda函数,该函数将由S3上载事件触发。当我尝试执行Amazon web services 使用AWS CDK时Lambda函数无法实例化,amazon-web-services,aws-lambda,python-3.7,aws-cdk,Amazon Web Services,Aws Lambda,Python 3.7,Aws Cdk,我试图使用AWS CDK部署一个Lambda函数,该函数将由S3上载事件触发。当我尝试执行cdk ls或cdk synth时,我得到了错误: Traceback (most recent call last): File "app.py", line 14, in <module> S3TosqsStack(app, "S3TosqsStack", env=core.Environment(account=os.getenv('CD
cdk ls
或cdk synth
时,我得到了错误:
Traceback (most recent call last):
File "app.py", line 14, in <module>
S3TosqsStack(app, "S3TosqsStack", env=core.Environment(account=os.getenv('CDK_DEFAULT_ACCOUNT'), region=os.getenv('CDK_DEFAULT_REGION')))
File "/home/ec2-user/s3tosqs/.venv/lib64/python3.7/site-packages/jsii/_runtime.py", line 83, in __call__
inst = super().__call__(*args, **kwargs)
File "/home/ec2-user/s3tosqs/s3tosqs/s3tosqs_stack.py", line 37, in __init__
bucket=s3.IBucket(bucket_name=lambda_deployment_bucket),
File "/home/ec2-user/s3tosqs/.venv/lib64/python3.7/site-packages/typing_extensions.py", line 1548, in _no_init
raise TypeError('Protocols cannot be instantiated')
TypeError: Protocols cannot be instantiated
Subprocess exited with error 1
您是否尝试过使用bucket和from_bucket_name使用bucket引用
lambda_function = _lambda.Function(
self, 'S3toSQS',
runtime=_lambda.Runtime.PYTHON_3_8,
code=_lambda.Code.from_bucket(
bucket=s3.Bucket.from_bucket_name(self, "id",bucket_name=lambda_deployment_bucket),
key='S3toSQS.zip'),
handler='handler.publish_SQS_message',
environment={'SOURCE_BUCKET': trigger_bucket,
'REGION': region,
'QUEUE_NAME': queue.queue_name}
)
您遇到的问题可能有两个原因
lambda\u函数=\u lambda.function(
self,'S3toSQS',
runtime=\u lambda.runtime.PYTHON\u 3\u 8,
code=\u lambda.code.from\u bucket(s3.IBucket(bucket\u name=lambda\u deployment\u bucket),'S3toSQS.zip'),
handler='handler.publish_SQS_message',
环境={'SOURCE_BUCKET':触发器_BUCKET,
"地区":地区,,
“队列名称”:队列名称}
)
lambda_function = _lambda.Function(
self, 'S3toSQS',
runtime=_lambda.Runtime.PYTHON_3_8,
code=_lambda.Code.from_bucket(
bucket=s3.Bucket.from_bucket_name(self, "id",bucket_name=lambda_deployment_bucket),
key='S3toSQS.zip'),
handler='handler.publish_SQS_message',
environment={'SOURCE_BUCKET': trigger_bucket,
'REGION': region,
'QUEUE_NAME': queue.queue_name}
)