将 cURL 模块导入 AWS Lambda
Importing cURL module into AWS Lambda
我是 AWS 的初学者。我目前在将 PHP cURL 模块导入 Lambda 层时遇到问题。
我尝试按照 GitHub https://github.com/stackery/php-lambda-layer 上的说明设置图层,但我只修改了 arn: arn:aws:lambda:<region>:887080169480:layer:php73:3
到我的区域。我不知道在哪里输入这些命令来添加扩展。
我也按照在线教程 https://www.youtube.com/watch?v=MipjLaTp5nA&t=800s&ab_channel=BeABetterDev 一步步部署了我的堆栈,但效果不佳。
是否有任何可供我遵循的说明或任何material我可以参考的说明?
我正在尝试 运行 Lambda 中由 API 网关触发的以下代码。
<?php
//------------------------Main--------------------------------------------------
$post = file_get_contents('php://input');
$url = 'https://cinv.ezpay.com.tw/Api/invoice_issue';
$result = curl_work($url, $post);
//------------------------Function----------------------------------------------
function curl_work($url = '', $parameter = '')
{
$curl_options = array(
'CURLOPT_URL' => $url,
'CURLOPT_HEADER' => false,
'CURLOPT_RETURNTRANSFER' => true,
'CURLOPT_USERAGENT' => 'ezPay',
'CURLOPT_FOLLOWLOCATION' => true,
'CURLOPT_SSL_VERIFYPEER' => false,
'CURLOPT_SSL_VERIFYHOST' => false,
'CURLOPT_POST' => '1',
'CURLOPT_POSTFIELDS' => $parameter
);
$ch = curl_init();
curl_setopt_array($ch, $curl_options);
$result = curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_error = curl_errno($ch);
curl_close($ch);
$return_info = array(
'url' => $url,
'sent_parameter' => $parameter,
'http_status' => $retcode,
'curl_error_no' => $curl_error,
'web_info' => $result
);
return $return_info;
}
?>
我已经使用 Postman 进行了测试,得到了以下错误响应。
<br />
<b>Fatal error</b>: Uncaught Error: Call to undefined function curl_init() in /var/task/index.php:22
Stack trace:
#0 /var/task/index.php(6): curl_work('https://cinv.ez...', '')
#1 {main}
thrown in <b>/var/task/index.php</b> on line <b>22</b><br />
你能试试这个吗
$curl_options = array(
'CURLOPT_URL' => $url,
'CURLOPT_HEADER' => false,
'CURLOPT_RETURNTRANSFER' => true,
'CURLOPT_USERAGENT' => 'ezPay',
'CURLOPT_FOLLOWLOCATION' => true,
'CURLOPT_SSL_VERIFYPEER' => false,
'CURLOPT_SSL_VERIFYHOST' => false,
'CURLOPT_POST' => '1',
'CURLOPT_POSTFIELDS' => $parameter
);
我已经解决了这个问题。
我应该将扩展名添加到 zip.file 上传到 Lambda 的 php.ini 文件中。
extension=json.so
extension=curl.so
代码应该如下所示。
<?php
//------------------------Main--------------------------------------------------
$post = file_get_contents('php://input');
$url = 'https://cinv.ezpay.com.tw/Api/invoice_issue';
$array = json_decode($post, true);
$PostData = $array['PostData_'];
$result = curl_work($url, $PostData);
echo "Success";
//------------------------Function----------------------------------------------
function curl_work($url = '', $parameter = '')
{
$curl_options = array(
CURLOPT_URL => $url,
CURLOPT_HEADER => false,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERAGENT => 'ezPay',
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_POST => '1',
CURLOPT_POSTFIELDS => $parameter
);
$ch = curl_init();
curl_setopt_array($ch, $curl_options);
$result = curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_error = curl_errno($ch);
curl_close($ch);
$return_info = array(
'url' => $url,
'sent_parameter' => $parameter,
'http_status' => $retcode,
'curl_error_no' => $curl_error,
'web_info' => $result
);
return $return_info;
}
?>
我是 AWS 的初学者。我目前在将 PHP cURL 模块导入 Lambda 层时遇到问题。
我尝试按照 GitHub https://github.com/stackery/php-lambda-layer 上的说明设置图层,但我只修改了 arn: arn:aws:lambda:<region>:887080169480:layer:php73:3
到我的区域。我不知道在哪里输入这些命令来添加扩展。
我也按照在线教程 https://www.youtube.com/watch?v=MipjLaTp5nA&t=800s&ab_channel=BeABetterDev 一步步部署了我的堆栈,但效果不佳。
是否有任何可供我遵循的说明或任何material我可以参考的说明?
我正在尝试 运行 Lambda 中由 API 网关触发的以下代码。
<?php
//------------------------Main--------------------------------------------------
$post = file_get_contents('php://input');
$url = 'https://cinv.ezpay.com.tw/Api/invoice_issue';
$result = curl_work($url, $post);
//------------------------Function----------------------------------------------
function curl_work($url = '', $parameter = '')
{
$curl_options = array(
'CURLOPT_URL' => $url,
'CURLOPT_HEADER' => false,
'CURLOPT_RETURNTRANSFER' => true,
'CURLOPT_USERAGENT' => 'ezPay',
'CURLOPT_FOLLOWLOCATION' => true,
'CURLOPT_SSL_VERIFYPEER' => false,
'CURLOPT_SSL_VERIFYHOST' => false,
'CURLOPT_POST' => '1',
'CURLOPT_POSTFIELDS' => $parameter
);
$ch = curl_init();
curl_setopt_array($ch, $curl_options);
$result = curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_error = curl_errno($ch);
curl_close($ch);
$return_info = array(
'url' => $url,
'sent_parameter' => $parameter,
'http_status' => $retcode,
'curl_error_no' => $curl_error,
'web_info' => $result
);
return $return_info;
}
?>
我已经使用 Postman 进行了测试,得到了以下错误响应。
<br />
<b>Fatal error</b>: Uncaught Error: Call to undefined function curl_init() in /var/task/index.php:22
Stack trace:
#0 /var/task/index.php(6): curl_work('https://cinv.ez...', '')
#1 {main}
thrown in <b>/var/task/index.php</b> on line <b>22</b><br />
你能试试这个吗
$curl_options = array(
'CURLOPT_URL' => $url,
'CURLOPT_HEADER' => false,
'CURLOPT_RETURNTRANSFER' => true,
'CURLOPT_USERAGENT' => 'ezPay',
'CURLOPT_FOLLOWLOCATION' => true,
'CURLOPT_SSL_VERIFYPEER' => false,
'CURLOPT_SSL_VERIFYHOST' => false,
'CURLOPT_POST' => '1',
'CURLOPT_POSTFIELDS' => $parameter
);
我已经解决了这个问题。 我应该将扩展名添加到 zip.file 上传到 Lambda 的 php.ini 文件中。
extension=json.so
extension=curl.so
代码应该如下所示。
<?php
//------------------------Main--------------------------------------------------
$post = file_get_contents('php://input');
$url = 'https://cinv.ezpay.com.tw/Api/invoice_issue';
$array = json_decode($post, true);
$PostData = $array['PostData_'];
$result = curl_work($url, $PostData);
echo "Success";
//------------------------Function----------------------------------------------
function curl_work($url = '', $parameter = '')
{
$curl_options = array(
CURLOPT_URL => $url,
CURLOPT_HEADER => false,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERAGENT => 'ezPay',
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_POST => '1',
CURLOPT_POSTFIELDS => $parameter
);
$ch = curl_init();
curl_setopt_array($ch, $curl_options);
$result = curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_error = curl_errno($ch);
curl_close($ch);
$return_info = array(
'url' => $url,
'sent_parameter' => $parameter,
'http_status' => $retcode,
'curl_error_no' => $curl_error,
'web_info' => $result
);
return $return_info;
}
?>