现在我的要求是,每当我通过 API 获取数据时,我都必须将其保存到 2-3 个不同的位置(例如,保存到我自己的数据库、某些 BI 服务中,有时还保存到日志记录数据库中)。
我不知道是否可以将单个资源和单个方法绑定到多个 lambda 函数左右。所以,我的替代方法是,因为我已经知道如何通过订阅 SNS 主题来触发多个 lambda 函数,我想也许如果我能以某种方式从 API 网关发布到 SNS 主题,剩下的就很容易了。我目前的想法如下:
但问题是,我无法从 API 网关发布到 SNS 主题。我收到类似的错误TopicArn or TargetArn Reason: no value for required parameter。
我的做法是,创建一个普通的 SNS 主题。然后,创建一个特殊的角色策略,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "StmtXXXXXXXXXXX",
"Effect": "Allow",
"Action": [
"sns:Publish",
"sns:Subscribe",
"sns:Unsubscribe"
],
"Resource": [
"SNS-TOPIC-ARN"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后使用 POST/GET 方法创建 API(我都尝试过)并添加 SNS 主题作为 AWS 服务代理和角色作为执行角色。
我正在尝试设置 Codeception 来对我的 Web 应用程序进行验收和功能测试。以下是我的文件:
docker-compose.yml
version: '3.7'
services:
# nginx - web server
nginx:
build:
context: ./docker-config/nginx
dockerfile: ./Dockerfile
env_file: &env
- ./cms/.env
init: true
ports:
- "8000:80"
volumes:
- cpresources:/var/www/project/cms/web/cpresources
- ./cms/web:/var/www/project/cms/web:cached
networks:
mmc-network:
aliases:
- mmc.nginx
# php - run php-fpm
php:
build: &php-build
context: ./docker-config/php-prod-craft
dockerfile: ./Dockerfile
depends_on:
- "mysql"
- "redis"
env_file:
*env
expose:
- "9000"
init: true
volumes: &php-volumes
- some volumes............
networks:
mmc-network:
aliases:
- mmc.php
# mysql - database
mysql:
build:
context: …Run Code Online (Sandbox Code Playgroud) 我正在开发一个 vagrant box,它是为达到目的而定制的。我的 PHPUnit5.2.12版本是5.2.22.
当我执行phpunit命令时,出现以下错误:
PHPUnit_Framework_Exception: PHPUnit_Framework_TestCase::$name must not be null.
Run Code Online (Sandbox Code Playgroud)
代码
下面是我的 phpunit.xml 内容:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="bootstrap/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="true"
stopOnFailure="false"
stderr="true">
<testsuites>
<testsuite name="Application Test Suite">
<directory>./tests/</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory suffix=".php">app/</directory>
</whitelist>
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
</php>
</phpunit>
Run Code Online (Sandbox Code Playgroud) php ×2
amazon-sns ×1
aws-lambda ×1
codeception ×1
docker ×1
nginx ×1
phpunit ×1
selenium ×1
vagrant ×1