我正在尝试将适用于Python的Google Cloud Platform(特别是Vision API)与AWS Lambda结合使用。因此,我必须为我的依赖项创建一个部署程序包。但是,当我尝试创建此部署程序包时,无论使用哪个Python版本(3.6或2.7),都会遇到一些编译错误。考虑到版本3.6,出现问题“无法导入名称'cygrpc'”。对于2.7,.path文件出现一些未知错误。我下面的AWS LAMBDA部署包的说明这里。他们推荐了两个选项,并且都不起作用/导致相同的问题。GCP是否由于某种原因与AWS Lambda不兼容?这是怎么回事?
Python 3.6和2.7都不适合我。
注意:我将在此处发布此问题以自己回答,因为我花了相当长的时间才能找到解决方案,并且我想分享我的解决方案。
amazon-web-services python-3.x google-cloud-platform aws-lambda
我想使用MFMessageComposeViewController向多个收件人发送一条消息,我无法添加第二个等收件人
这是我的代码:
@IBAction func sendSms(sender: AnyObject) {
if (MFMessageComposeViewController.canSendText())
{
let controller = MFMessageComposeViewController()
controller.body = self.textView.text
controller.recipients = [self.phoneField.text!]
controller.messageComposeDelegate = self
self.presentViewController(controller, animated: true, completion: nil)
}
else
{
print("Error")
}
}
extension MyViewController : MFMessageComposeViewControllerDelegate
{
func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult)
{
controller.dismissViewControllerAnimated(true, completion: nil)}
}
}
Run Code Online (Sandbox Code Playgroud)
任何建议如何将其发送给多个收件人?
关于 SO 和其他地方的几个问题和答案概述了解决从 boto3 SDK 调用“generate_presigned_url”时抛出的 SignatureDoesNotMatch 错误的可能解决方案。boto3 中很少有,大多数答案都建议获取新凭据来解决此异常。你可以在这里看到更多(但这是在 PHP 中)。
但是这些对我不起作用,因为我使用了正确的凭据以及正确的存储桶名称和密钥路径。
最初,我调用它来生成我的客户端,然后调用 generate_presigned_url。
client_s3 = boto3.client(
's3',
# Hard coded strings as credentials, not recommended.
aws_access_key_id='XXX',
aws_secret_access_key='XXX',
region_name='us-east-2',
# EDIT: Previously, I used signature_version='v4' here, but as a user here pointed out, this might not work. Regardless, I tried 's3v4' prior to trying 'v4' and neither worked for me.
config=Config(signature_version='s3v4')
)
url = client_s3.generate_presigned_url(
ClientMethod='get_object',
Params={
'Bucket': 'BUCKET_NAME',
'Key': 'CORRECT_KEY'
}
)
Run Code Online (Sandbox Code Playgroud)
当使用的所有参数看似正确时,什么会导致此错误?我该如何解决?